引用Microsoft ActiveX Data Object 2.x LibarayDim Cn As New Adodb.Connection'1.
Cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=USER04"'2.
Cn.OPen "Driver={SQL Server};Server=User04;Uid=sa;Pwd=;Database=master"

解决方案 »

  1.   


    '--打开SQLSERVR2000数据库--
    Public Function OpenSqlServer(StrServer As String, StrDatabase As String, StrUserID As String, StrPassword As String) As ADODB.Connection
    On Error GoTo ConnErr
    Dim TmpConn As New ADODB.Connection
    Dim StrConnect As String
      Screen.MousePointer = vbHourglass
      TmpConn.ConnectionTimeout = 25
      StrConnect = "Provider=SQLOLEDB.1;Persist Security Info=False"
      StrConnect = StrConnect & ";Data Source=" & StrServer    '服务器名称  可以是IP地址
      StrConnect = StrConnect & ";Initial Catalog=" & StrDatabase  '数据库名称
      StrConnect = StrConnect & ";User ID=" & StrUserID    '用户名称
      StrConnect = StrConnect & ";Password=" & StrPassword  '密码
      TmpConn.Open StrConnect
      Set OpenSqlServer = TmpConn
    ConnErr:
      Screen.MousePointer = vbDefault
    End Function
    '--打开带条件的表的记录--
    Public Function OpenRST(StrConn As ADODB.Connection, StrOpenRecordset As String) As ADODB.Recordset
    On Error GoTo RstErr
    Dim TmpRst As New ADODB.Recordset
      TmpRst.CursorLocation = adUseClient
      TmpRst.Open StrOpenRecordset, StrConn, adOpenKeyset, adLockOptimistic
      Set OpenRST = TmpRst
    RstErr:
    End Function
      

  2.   

    不用 ADO,楼主准备用什么?
      

  3.   

    不用ado控件,是否可用ado的对象?
      

  4.   

    用代码就是了?例子:我有用SQL Server建的数据库JinShengLiCai,其中有一张表J_MiMa,其中有两个字段UserID、Password;用代码设计如下:
    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=MSDASQL;dsn=JinCai;uid=;pwd=;"  '连接字段
      Set adoPrimaryRS = New Recordset
      adoPrimaryRS.Open "select UserID,password from J_MiMa", db, adOpenStatic, adLockOptimistic  Dim oText As TextBox
      '绑定文本框到数据提供者
      For Each oText In Me.txtFields
        Set oText.DataSource = adoPrimaryRS
      Next  mbDataChanged = False
    End SubPrivate Sub Form_Resize()
      On Error Resume Next
      '设计仿ADO控件的按钮位置
      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 SubPrivate 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以上代码是一个页面的总设计,包括ADO代码的连接,及各个按钮功能。只要在窗体上加上控件就可用。!
      

  5.   

    引进microsoft activex data object 2.5
    然后
    dim conn as new adodb.connection
    dim rs as new adodb.recordset
    conn.open "dsn=数据原名;uid=sa;pwd="
    sql=""
    adors.open conn,3,3
      

  6.   

    这么多热心人,相信你的问题解决了吧。我这儿有简单直接的
    必须在引用里引用了ADO,2。X的版本吧
    dim conn As New ADODB.Connection
    dim rs as new adodb.recordset
    conn.ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Eam;Data Source=inf02
    "rs.open "表名或查询语句",conn,其它参数
    可以测试一下是否连接成功
      

  7.   

    谢谢大家,我已经成功连接了,可是还有一个问题,就是我怎么把datagrid和一个adodb.recordset对象绑定呢?
    我在连接好之后,就 set datagrid1.datasource=rs
    可是不行啊,错在哪里呢?(rs已经open了)
      

  8.   

    呵呵,你应该把rs.cursortype 设置成客户端游标就可以了