我在vb6中有以下过程调用:
dim rs as adodb.command
dim cnn as adodb.connection
with rs
set .activeconnection = cnn
.CommandType = adCmdStoredProc
.CommandText = "sp_qryUpdate"
.CommandTimeout = 0
.Parameters("@uidbatch").value = lngBatchID
.Execute , , adExecuteNoRecords
end with
我收到错误“对象变量或未设置块变量”
设置.activeconnection后抛出错误
任何想法意味着什么?我收到的连接字符串是正确的。
答案 0 :(得分:1)
奇怪的是,rs
通常用于表示记录集而不是命令,但我猜是每个人都有。
我看到了一些潜在的问题。我并不完全确定有什么区别,因为我接触VB6的时候非常简短,但我所做的所有代码都有:
dim rs as new adodb.recordset
在其中(即使用new
关键字)。这可能会导致问题。
我还假设您在第二个dim
和with
之间有一些代码,是吗?
因为否则,您实际上并没有打开连接以供使用。
有一些教程代码here可能会有所帮助。我会说“享受!”但我不认为这是一个选择: - )
答案 1 :(得分:0)
您必须在使用之前创建adodb.command
和adodb.connection
的实例。
试试这个
dim rs as New adodb.command
dim cnn as New adodb.connection
答案 2 :(得分:0)
您需要像其他人一样创建rs和cnn,但您还需要在参数集合中添加新参数。
.Parameters("@uidbatch").value
这假定它已经存在。
答案 3 :(得分:0)
您可以执行所有手动参数定义,但使用rs.Parameters.Refresh要容易得多。这将自动正确填充参数集合。
此外,虽然您必须实例化对象变量是正确的,但不建议在同一行上执行它。与.Net不同,这实际上并不实例化变量。相反,每次引用变量时,运行时都会检查实例是否存在,如果不存在则创建一个实例。这会产生不必要的开销最佳做法是在新行上使用Set关键字。