vb6:这个tsql过程调用有什么问题?

时间:2010-10-18 00:50:39

标签: 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 = lngBatchID 
    .Execute , , adExecuteNoRecords 
end with 

我收到错误“对象变量或未设置块变量”

设置.activeconnection后抛出错误

任何想法意味着什么?我收到的连接字符串是正确的。

4 个答案:

答案 0 :(得分:1)

奇怪的是,rs通常用于表示记录集而不是命令,但我猜是每个人都有。

我看到了一些潜在的问题。我并不完全确定有什么区别,因为我接触VB6的时候非常简短,但我所做的所有代码都有:

dim rs as new adodb.recordset

在其中(即使用new关键字)。这可能会导致问题。

我还假设您在第二个dimwith之间有一些代码,是吗?

因为否则,您实际上并没有打开连接以供使用。

有一些教程代码here可能会有所帮助。我会说“享受!”但我不认为这是一个选择: - )

答案 1 :(得分:0)

您必须在使用之前创建adodb.commandadodb.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关键字。