【问题标题】:Trouble connecting and querying in ADO在 ADO 中连接和查询时出现问题
【发布时间】:2011-03-16 09:06:09
【问题描述】:

我正在制作一个 .MDB 文件,其中包括一个 ms access 数据库和一个用 vb 6 制作的表单。我正在使用 ms access 2000,我需要连接到 MDB 中的本地数据库和远程 MS SQL 2005 年数据库。

在下面的代码中,我可以使用 msgbox 来显示从结果集中返回的值,但是当尝试在 textBox 中输出它时,例如:txtStatus.Value = txtStatus.Value & rstRecordSet.Fields(1) & vbCrLf,它只是挂起。并且教程中原始示例中显示的方法得到了一个 Debug.Print 方法,但事实证明没有做任何我能看到的事情。我的意思是,VB没有控制台面板,打印语句到哪里去?

出现错误的代码:

    Function Testing()
On Error GoTo Error_Handling
   Dim conConnection As New ADODB.Connection
   Dim cmdCommand As New ADODB.Command
   Dim rstRecordSet As New ADODB.Recordset

   conConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
   App.Path & "\" & CurrentDb.Name & ";"
   conConnection.CursorLocation = adUseClient

   With cmdCommand
    .ActiveConnection = conConnection
    .CommandText = "SELECT * FROM Opt_In_Customer_Record;"
    .CommandType = adCmdText
   End With

   With rstRecordSet
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Open cmdCommand
   End With

   If rstRecordSet.EOF = False Then
        rstRecordSet.MoveFirst
        Do
            MsgBox "Record " & rstRecordSet.AbsolutePosition & " " & _
          rstRecordSet.Fields(0).Name & "=" & rstRecordSet.Fields(0) & " " & _
          rstRecordSet.Fields(1).Name & "=" & rstRecordSet.Fields(1)
          rstRecordSet.MoveNext
        Loop Until rstRecordSet.EOF = True
   End If

   conConnection.Close
   Set conConnection = Nothing
   Set cmdCommand = Nothing
   Set rstRecordSet = Nothing

   Exit Function

Error_Handling:
MsgBox "Error during function Testing!"
Exit Function

End Function

【问题讨论】:

  • 你能列出错误以及它发生在哪一行吗?

标签: sql-server ms-access vb6 ado


【解决方案1】:

一开始我还以为是个玩笑 ;-) 无论如何,我假设你在谈论 ADO,就像你的标题一样。

Here you can 找东西。 这个site 将帮助您处理不同数据库的连接字符串。
access和sql server使用ADO的区别就在于连接字符串。 我建议您避免使用远程数据控制,因为一开始会让您的生活更简单,但后来您必须与它们斗争,因为它们无法正常工作。

这是连接和获取数据的示例:

Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim strSql As String

cnn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=m:\testdbSource\testSource.mdb;" & _
    "User Id=admin;Password=;"
cnn.Open

cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = "select * from tblSource"
cmd.Execute

Set cmd = Nothing
cnn.Close
Set cnn = Nothing

此示例适用于我:

Function Testing()

    On Error GoTo Error_Handling

    Dim MyDb As String
    Dim conConnection As New ADODB.Connection
    Dim cmdCommand As New ADODB.Command
    Dim rstRecordSet As New ADODB.Recordset

    MyDb = "db1.mdb"

    With conConnection
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = App.Path & "\" & MyDb
        .Open
    End With


    With cmdCommand
        .ActiveConnection = conConnection
        .CommandText = "SELECT * FROM Opt_In_Customer_Record;"
        .CommandType = adCmdText
    End With

   With rstRecordSet
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Open cmdCommand
   End With

   Do While Not rstRecordSet.EOF
        MsgBox "Record " & rstRecordSet.AbsolutePosition & " " & _
          rstRecordSet.Fields(0).Name & "=" & rstRecordSet.Fields(0) & " " & _
          rstRecordSet.Fields(1).Name & "=" & rstRecordSet.Fields(1)
          rstRecordSet.MoveNext
   Loop

   conConnection.Close
   Set conConnection = Nothing
   Set cmdCommand = Nothing
   Set rstRecordSet = Nothing

   Exit Function

Error_Handling:
    MsgBox "Error during function Testing!"
    MsgBox Err.Description

End Function

【讨论】:

  • 如何检查错误?我知道有错误,因为它跳转到我的错误处理部分并说错误,但我不知道它是什么。
  • 我已经在我的问题中发布了我的代码。我试图在我的 MDB 文件中连接到我的数据库,并进行查询,但不知何故它失败了。请帮忙。
  • 您是否引用了“Activex 数据对象 2.x”??
  • 你没有打开连接。我会在几分钟后提供一个示例。
  • 谢谢大家,我发现错误是因为 Current.Db 引用了 mdb 的完整路径而不是它的名称。现在它对我有用,但我在帖子中有一个新问题。请向上看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
相关资源
最近更新 更多