无法在vba中打开记录集

时间:2017-08-31 00:43:10

标签: vba adodb recordset

当这个vba代码试图打开记录集时,我收到以下错误: 运行时错误'3709' 该连接不能用于执行此操作。在此上下文中它是关闭的或无效的。

Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String

objMyConn.ConnectionString = "Driver={SQL Server};Server=localhost\SQLEXPRESS;Database=Contact;Trusted_Connection=True;"
objMyConn.Open

strSQL = "Select * from Contact where Lastname like " + Chr(39) + LastSearch + "%" + Chr(39) + " And Firstname like " + Chr(39) + FirstSearch + "%" + Chr(39)

MsgBox strSQL

objMyRecordset.Open strSQL, cnn, adOpenForwardOnly, adLockOptimistic

2 个答案:

答案 0 :(得分:1)

在模块顶部添加gem install ruby-debug-ide-0.6.1.beta8.gem;你会发现VBE在那个未声明的Option Explicit变量中尖叫。

您的记录集未使用任何打开的连接 - 正如错误消息所示。

那说你可以在字符串文字中单引号; cnn这些东西只是无用地混淆了代码。

另请考虑使用参数。如果您不确定原因,请阅读Little Bobby Tables

以下是一个例子:

Chr(39)

请注意,Option Explicit Sub Test() Dim conn As ADODB.Connection Set conn = New ADODB.Connection conn.ConnectionString = "Provider='SQLOLEDB';Data Source='INSTANCE NAME';Initial Catalog='DATABASE NAME';Integrated Security='SSPI';" conn.Open Dim sql As String sql = "SELECT Field1 FROM dbo.TestTable WHERE Field3 LIKE '%' + ? + '%'" Dim results As ADODB.Recordset With New ADODB.Command .ActiveConnection = conn .CommandType = adCmdText .CommandText = sql .Parameters.Append .CreateParameter(Type:=adVarChar, Value:="foo", Size:=255) Set results = .Execute End With Debug.Print results(0).Name, results(0).Value results.Close conn.Close End Sub 执行Command返回 Connection

答案 1 :(得分:0)

此处的通用ADODB连接设置

import { menuAnimate } from '../src/scripts/nav';