请问:用Access2000建的数据库在Vb6中如何读写?

解决方案 »

  1.   

    用jet就可以了,使用adodc控件,或者adodb对象。
      

  2.   

    能说详细点吗? 是不是不能使用 DAO了? 谢谢!
      

  3.   

    可以,只是比较旧,语法。Dim db As Database, rb As Recordset
         set db = Workspaces(0).OpenDatabase("文件目录及文件名")
         Set rb = db.OpenRecordset("表名", dbOpenDynaset)
      

  4.   

    你首先要在VB菜单中:
    “工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library”
    注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的Private Sub ComOK_Click()
       Dim SQLstr As String,cnstr AS String
      Dim cn AS New ADODB.Connection'连接对象
       Dim rs As New ADODB.Recordset'记录集对象
       cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                       & "Data Source=" & App.Path & "\data\XXXX.mdb;" _
                       & "Persist Security Info=False" '连接字符串
       cn.open cnstr' 打开数据库连接
       rs.CursorLocation =adUseClient
       sqlstr="slect * from XXX表"
       rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
       set datagrid1.datasource=rs
       datagrid1.refresh
       rs.close'关闭记录集对象
       set rs=nothing
    End Sub
    本示例是将数据库中的一张表的记录显示在datagrid的控件中。
      

  5.   

    看你用什么数据库引擎,DAO的话,引用DAO3.6;如果用ADO的话,引用ADO2.5或2.6,代码同楼上,如果数据库加密的话,在代码中加上PASSWORD=“XXXX”就可以了。
      

  6.   

    Dim WithEvents adoPrimaryRS As Recordset
    Dim mbChangedByCode As Boolean
    Dim mvBookMark As Variant
    Dim mbEditFlag As Boolean
    Dim mbAddNewFlag As Boolean
    Dim mbDataChanged As BooleanPrivate Sub Form_Load()
      Dim db As Connection
      Set db = New Connection
      db.CursorLocation = adUseClient
      db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;"  Set adoPrimaryRS = New Recordset
      adoPrimaryRS.Open "select 产品ID,产品名称,单价,单位数量,订购量,库存量,类别ID,再订购量,中止 from 产品 Order by 产品ID", db, adOpenStatic, adLockOptimistic  Dim oText As TextBox
      '绑定文本框到数据提供者
      For Each oText In Me.txtFields
        Set oText.DataSource = adoPrimaryRS
      Next
      Dim oCheck As CheckBox
      '绑定复选框到数据提供者
      For Each oCheck In Me.chkFields
        Set oCheck.DataSource = adoPrimaryRS
      Next  mbDataChanged = False
    End SubPrivate Sub Form_Resize()
      On Error Resume Next
      lblStatus.Width = Me.Width - 1500
      cmdNext.Left = lblStatus.Width + 700
      cmdLast.Left = cmdNext.Left + 340
    End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      If mbEditFlag Or mbAddNewFlag Then Exit Sub  Select Case KeyCode
        Case vbKeyEscape
          cmdClose_Click
        Case vbKeyEnd
          cmdLast_Click
        Case vbKeyHome
          cmdFirst_Click
        Case vbKeyUp, vbKeyPageUp
          If Shift = vbCtrlMask Then
            cmdFirst_Click
          Else
            cmdPrevious_Click
          End If
        Case vbKeyDown, vbKeyPageDown
          If Shift = vbCtrlMask Then
            cmdLast_Click
          Else
            cmdNext_Click
          End If
      End Select
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      Screen.MousePointer = vbDefault
    End SubPrivate Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
      '为这个 recordset 显示当前记录位置
      lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)
    End SubPrivate Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
      '验证代码置于此处
      '下列动作发生时该事件被调用
      Dim bCancel As Boolean  Select Case adReason
      Case adRsnAddNew
      Case adRsnClose
      Case adRsnDelete
      Case adRsnFirstChange
      Case adRsnMove
      Case adRsnRequery
      Case adRsnResynch
      Case adRsnUndoAddNew
      Case adRsnUndoDelete
      Case adRsnUndoUpdate
      Case adRsnUpdate
      End Select  If bCancel Then adStatus = adStatusCancel
    End SubPrivate Sub cmdAdd_Click()
      On Error GoTo AddErr
      With adoPrimaryRS
        If Not (.BOF And .EOF) Then
          mvBookMark = .Book
        End If
        .AddNew
        lblStatus.Caption = "添加记录"
        mbAddNewFlag = True
        SetButtons False
      End With  Exit Sub
    AddErr:
      MsgBox Err.Description
    End SubPrivate Sub cmdDelete_Click()
      On Error GoTo DeleteErr
      With adoPrimaryRS
        .Delete
        .MoveNext
        If .EOF Then .MoveLast
      End With
      Exit Sub
    DeleteErr:
      MsgBox Err.Description
    End SubPrivate Sub cmdRefresh_Click()
      '只有多用户应用程序需要
      On Error GoTo RefreshErr
      adoPrimaryRS.Requery
      Exit Sub
    RefreshErr:
      MsgBox Err.Description
    End SubPrivate Sub cmdEdit_Click()
      On Error GoTo EditErr  lblStatus.Caption = "编辑记录"
      mbEditFlag = True
      SetButtons False
      Exit SubEditErr:
      MsgBox Err.Description
    End Sub
    Private Sub cmdCancel_Click()
      On Error Resume Next  SetButtons True
      mbEditFlag = False
      mbAddNewFlag = False
      adoPrimaryRS.CancelUpdate
      If mvBookMark > 0 Then
        adoPrimaryRS.Book = mvBookMark
      Else
        adoPrimaryRS.MoveFirst
      End If
      mbDataChanged = FalseEnd SubPrivate Sub cmdUpdate_Click()
      On Error GoTo UpdateErr  adoPrimaryRS.UpdateBatch adAffectAll  If mbAddNewFlag Then
        adoPrimaryRS.MoveLast              '移到新记录
      End If  mbEditFlag = False
      mbAddNewFlag = False
      SetButtons True
      mbDataChanged = False  Exit Sub
    UpdateErr:
      MsgBox Err.Description
    End SubPrivate Sub cmdClose_Click()
      Unload Me
    End SubPrivate Sub cmdFirst_Click()
      On Error GoTo GoFirstError  adoPrimaryRS.MoveFirst
      mbDataChanged = False  Exit SubGoFirstError:
      MsgBox Err.Description
    End SubPrivate Sub cmdLast_Click()
      On Error GoTo GoLastError  adoPrimaryRS.MoveLast
      mbDataChanged = False  Exit SubGoLastError:
      MsgBox Err.Description
    End SubPrivate Sub cmdNext_Click()
      On Error GoTo GoNextError  If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
      If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
        Beep
         '已到最后返回
        adoPrimaryRS.MoveLast
      End If
      '显示当前记录
      mbDataChanged = False  Exit Sub
    GoNextError:
      MsgBox Err.Description
    End SubPrivate Sub cmdPrevious_Click()
      On Error GoTo GoPrevError  If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
      If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
        Beep
        '已到最后返回
        adoPrimaryRS.MoveFirst
      End If
      '显示当前记录
      mbDataChanged = False  Exit SubGoPrevError:
      MsgBox Err.Description
    End SubPrivate Sub SetButtons(bVal As Boolean)
      cmdAdd.Visible = bVal
      cmdEdit.Visible = bVal
      cmdUpdate.Visible = Not bVal
      cmdCancel.Visible = Not bVal
      cmdDelete.Visible = bVal
      cmdClose.Visible = bVal
      cmdRefresh.Visible = bVal
      cmdNext.Enabled = bVal
      cmdFirst.Enabled = bVal
      cmdLast.Enabled = bVal
      cmdPrevious.Enabled = bVal
    End Sub
      

  7.   

    其实与access97相比来说,就把Microsoft.Jet.OLEDB.3.51 改为Microsoft.Jet.OLEDB.4.0
    就可以了!
      

  8.   

    最简单的办法就是安装sp5,然后jet4就被安装上了,自然也就支持access2000了
    sp5的下载链接
    http://www.microsoft.com/downloads/details.aspx?FamilyID=9066d31d-ba23-4e8a-b7c8-b95f5e54f896&DisplayLang=zh-cn
      

  9.   

    谢谢大家的回复!我的分已经分配给大家了  再次感谢!
    我用的是 加载了一个 DAO3.6就解决了。这里我还有一个问题希望大家帮帮忙:我在 Win2000/Xp 下用 vsPrinter7.0 无法设置自定义纸型,怎么办?
    具体描述如下:
    vp.PaperSizes(256) 此属性在 Win98 下为 True (即:可自定义),而在 Win2000/xp 下均为 False ,等于我无法自定义纸张,因为我要使用宽/窄行打印纸。哪位高手指点一下吧!谢谢!还有:宽/窄行打印纸的国际标准名称是什么?