15757753770 发表于 2016-12-11 15:03:17

vb操作access数据库

c# c++ vb 是可以互相调用的

vb操作access数据库 的方法

首先要安装Office2003sp2

列子:读写数据库(.mdb)

1.创建 mdb
开始->所有程序->Office2003->Access 2003新建一个空数据库 保存位置C:\report.mdb
创建一个表格 并重新命名为test          (操作和Excel类似)

注意 表格名称 和源代码要对应


2.注册数据源(代码中已经注册)和写代码


在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
我们必须点击菜单中的【工程】-【部件】,
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了


添加4个文本控件Text1 和 Text2和 Text3 和 Text4
添加一个按钮 ID修改成 “保存”
添加一个 List1

代码如下


Public conn As New ADODB.Connection   '标记连接对象
Dim sql As String
Dim rs_maxcut As New ADODB.Recordset
Dim str As String
Dim aa As Double, bb As Double
Dim mbd As String
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
Dim 内容(999, 999) As Double

Public Function cnn() As String
    cnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & ";Persist Security Info=True;Jet OLEDB:Database Password=123"
End Function

Private Sub 保存_Click()

writeDatabase
    End
End Sub

Private Sub Form_Load()

mbd = "D:\UG_OPEN\ini\数据库.mdb"

    conn.Open cnn '连接数据库
    readdatabase
    Me.Text1.Text = "行数" & 行数
    Me.Text2.Text = "列数" & 列数
Me.Text3.Text = aa
Me.Text4.Text = bb
End Sub

Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
    Dim i As Long
    sql = "select * from test"
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic'打开记录集


总页数 = rs_maxcut.PageCount'页大小rs_maxcut.PageSize
行数 = rs_maxcut.RecordCount'行数 (排除标题)
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)

    If rs_maxcut.EOF = False Then
      i = 0
      Do While rs_maxcut.EOF = False
         i = i + 1

         ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标

            '第一行或者第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的


       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
      If i = 2 Then bb = rs_maxcut.Fields(1).Value'除去标题后的,第1行第2列

      '读所有内容到数组
      For j = 1 To 列数
      内容(i, j) = rs_maxcut.Fields(j).Value
      Next

      rs_maxcut.MoveNext '下一行
      Loop
       rs_maxcut.Close '关闭


      List1.Clear
      For i = 1 To 行数
      For j = 1 To 列数
      If j = 1 Then
      str = 内容(i, j)
      Else
      str = str & " , " & 内容(i, j)
      End If
      Next
      List1.AddItem str
      Next

    End If


End Sub

Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
    On Error Resume Next
    Dim i As Long
    i = 0

conn.Open cnn '连接数据库

'sql = "select * from test"

rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic'打开记录集

    If rs_maxcut.EOF = False Then

      Do While rs_maxcut.EOF = False
          i = i + 1

            '不要去修改 第一行或者第一列的内容因为他们属于标题

            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列

            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列

            rs_maxcut.MoveNext

      Loop

       rs_maxcut.Update
    rs_maxcut.Close

    End If

End Sub




页: [1]
查看完整版本: vb操作access数据库