当这个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
答案 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';