0

我希望与之交互的现有第 3 方应用程序(SQL 2005)上有一个存储过程。

它是一个插入语句,后跟一个选择语句,如下所示;

  
    设置@CustomerId = Cast(SCOPE_IDENTITY() As [int])

    选择@CustomerId

使用 VB6 如何访问 @CustomerID 的值?

set rs = cmd.Execute 

没有按预期返回结果集...

[编辑]

rs.Fields.Count 为 0。

任何访问结果记录集的尝试,例如rs(0).Value只会导致“未找到项目...”错误。

4

1 回答 1

3

我猜你的存储过程返回了多个记录集。

如果是这种情况,您可以使用该NextRecordset()方法遍历它们。

MSDN:

  • 如果行返回命令执行成功但没有返回记录,则返回的 Recordset 对象将打开但为空。通过验证 BOF 和 EOF 属性都为 True 来测试这种情况。
  • 如果非行返回命令成功执行,则返回的 Recordset 对象将被关闭,您可以通过测试 Recordset 上的 State 属性来验证。
  • 当没有更多结果时,记录集将设置为 Nothing。

这意味着我会建议这样的事情来解决您的问题:

Set rs = cmd.Execute

''# fetch the first value of the last recordset
Do Until rs Is Nothing
  If rs.State = adStateOpen Then
    If Not (rs.BOF And rs.EOF) Then
      ''# You can do a different sanity check here, or none at all
      If rs.Fields(0).Type = adInteger Then
        CustomerId = rs.Fields(0).Value
      End If
    End If
  End If
  Set rs = rs.NextRecordSet
Loop

MsgBox CustomerId
于 2009-05-11T06:29:21.203 回答