如果用的是ADO,那么就是:
Dim WithEvents adoPrimaryRS As adodb.Recordset

解决方案 »

  1.   

    不是呀!我所说的是引用什么对象。(工程--引用下面的内容)。adodb.recordset对象已经有了。
      

  2.   

    工程-》引用-》microsoft activex date object libary 2.0
      

  3.   

    Recordset有可能是DAO的,现在一般是3.51和3.6
    要么就是ADO的,那就多了2.0,2.1,2.5,2.6,2.7
    我就不信找不到它
      

  4.   

    真的是很怪,我将程序放到另一台电脑中可以正常运行。
    我将两台的部件和引用打印出来以后对照了一下完全一致。
    楼上兄弟所说的dao我也试过了。现将代码贴出来: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 Command1_Click()
    Dim cmd As New ADODB.Command
    Dim i As Integer
    i = MsgBox("结束初始化开票收款数据以后,就不准在修改初始数据了?", 33, "程序提示")
    If i = 1 Then
    cmd.ActiveConnection = cn
    cmd.Prepared = True
    cmd.CommandTimeout = 300
    cmd.CommandText = "insert into  销售开票收款结余 select * from 销售开票收款期初"
    cmd.CommandType = adCmdText
    On Error Resume Next
    cmd.Execute
    Set cmd = Nothing
    End If
    End SubPrivate Sub Form_Load()
     
    cn.CursorLocation = adUseClient
      Set adoPrimaryRS = New Recordset
      adoPrimaryRS.Open "select 会计年度,会计期间,客户内码,客户代码,客户名称,开票结余,收款结余 from 销售开票收款期初", cn, adOpenKeyset, adLockOptimistic
      
      
      Set grdDataGrid.DataSource = adoPrimaryRS
      mbDataChanged = False
    End SubPrivate Sub Form_Resize()
      On Error Resume Next
      '当窗体调整时会调整网格
      grdDataGrid.Height = Me.ScaleHeight - 30 - picButtons.Height - picStatBox.Height
      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
      Unload findfrm
      
    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 cmdAdd_Click()
      On Error GoTo AddErr
      adoPrimaryRS.MoveLast
      adoPrimaryRS.AddNew
      grdDataGrid.SetFocus  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
      Set grdDataGrid.DataSource = Nothing
      adoPrimaryRS.Requery
      Set grdDataGrid.DataSource = adoPrimaryRS  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
      

  5.   

    呵呵,怎么全贴出来了。我见过这样的现象。不知是不是和你的一样
    正常的代码两个机子上一个能打开,一个不能打开,当时我们两个机子的
    VB版本不一样,ADO的版本也不一样,出现这样的情况,把ADO取消了,再
    引用一次,编译一次,就能解决。另外为什么不声明成
    Dim WithEvents adoPrimaryRS As ADODB.Recordset呢?
      

  6.   

    Combo1.AddItem Trim(adors.Fields(2).Value) + "|" + Trim(adors.Fields(1).Value)
    运行到这个时候又出现了以上问题。用f2查看了一下好像是vba里面的。真的不知道其所以然
      

  7.   

    是不是你同时引用了 dao 和 ado 而且dao在上面 。那样的话 
    Dim WithEvents adoPrimaryRS As Recordset 用的 是dao 的
     最好加上前缀 用
    Dim WithEvents adoPrimaryRS As adodb.Recordset
      

  8.   

    哦 是不是trim的问题 。有时候vb会丢失引用trim() 的类库巴
      

  9.   

    skywolfY(莫愁)说的对
    可能是你得ADO版本升级过,所以你原来的引用不能正确找到新版本的ADO