VB6:what';这个tsql过程调用有什么问题?
我在VB6中有以下过程调用:VB6:what';这个tsql过程调用有什么问题?,vb6,ado,Vb6,Ado,我在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 = lngBat
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
后会引发错误
你知道这意味着什么吗?我收到的连接字符串是正确的。奇怪,
rs
通常用于指示记录集,而不是命令,但我想它们各自都有自己的记录集
我看到了一些潜在的问题。我不完全确定其中的区别,因为我接触VB6的时间很短,但我所掌握的所有代码:
dim rs as new adodb.recordset
在其中(即,使用new
关键字)。这可能会引起问题
我还假设在第二个dim
和之间有一些代码,是吗
因为否则,您实际上并没有打开连接以供使用
有一些教程代码可能会有所帮助。我会说“享受!”但我不认为这是一个选项:-)在使用它之前,必须创建adodb.command
和adodb.connection
的实例
试试这个
dim rs as New adodb.command
dim cnn as New adodb.connection
正如其他人所说,您需要创建rs和cnn,但还需要向参数集合添加一个新参数
.Parameters("@uidbatch").value
这假设它已经存在。您可以进行所有手动参数定义,但只使用rs.Parameters.Refresh要容易得多。这将自动正确填充参数集合
此外,虽然必须实例化对象变量是正确的,但不建议在同一行上进行实例化。与.Net中不同,这实际上并没有实例化变量。相反,每次引用变量时,运行时都会检查实例是否存在,如果不存在,则创建一个实例。这会产生不必要的开销。最佳做法是在新行中使用Set关键字。这是我忘记的。。“新”和.open语句。现在它停在.Parameters(“@uidbatch”).value=lngBatchID,错误是:在与请求的名称或序号“any ideas”对应的集合中找不到项?您是说我需要添加.Parameters.Append.createparameter(@uidbatch”,adinteger,adparainput,lngBatchID)是的,我想是的。我已经好几年没做vb了,但它看起来很不错。