代码之家  ›  专栏  ›  技术社区  ›  Stuart Helwig

如何使用vb6从不是返回值或输出参数的记录集中检索值

  •  0
  • Stuart Helwig  · 技术社区  · 17 年前

    它是一个insert语句,后跟一个select语句,如下所示:;

      
        Set @CustomerId = Cast(SCOPE_IDENTITY() As [int])
    
        Select @CustomerId
    

    set rs = cmd.Execute 
    

    未按预期返回结果集。。。

    [编辑]

    rs.Fields.Count为0。

    任何访问结果记录集的尝试,如 只会导致“未找到项…”错误。

    1 回复  |  直到 17 年前
        1
  •  3
  •   Tomalak    17 年前

    NextRecordset() 方法进行迭代。

    MSDN:

    • 如果行返回命令执行成功但未返回任何记录, 返回的记录集对象将被删除 确认BOF和EOF 属性都是真的。
    • 如果成功执行非行返回命令,则返回 记录集对象将被关闭,这将 您可以通过测试状态进行验证 记录集上的属性。
    • 当没有更多结果时,记录集将设置为“无”。

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

    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