Как извлечь значение из набора записей, который не является возвращаемым значением или выходным параметром, используя vb6 - PullRequest
0 голосов
/ 11 мая 2009

У меня есть сохраненный процесс для существующего стороннего приложения (SQL 2005), с которым я хочу взаимодействовать.

Это оператор вставки, за которым следует оператор выбора следующим образом:

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

    Select @CustomerId

Используя VB6, как мне получить доступ к значению @CustomerID?

set rs = cmd.Execute 

не возвращает набор результатов, как ожидалось ...

[Изменить]

rs.Fields.Count равно 0.

Любая попытка доступа к результирующему набору записей, например rs (0). Значение просто вызывает ошибку «Элемент не найден ...».

1 Ответ

3 голосов
/ 11 мая 2009

Я думаю, ваша хранимая процедура возвращает более одного набора записей.

Если это так, вы можете использовать метод NextRecordset() для их итерации.

MSDN:

  • Если команда, возвращающая строки, выполняется успешно, но не возвращает записей, возвращенный объект Recordset будет открытый но пустой Проверьте для этого случая проверка того, что BOF и EOF свойства оба True.
  • Если команда, не возвращающая строки, выполняется успешно, возвращаемая Объект набора записей будет закрыт, что вы можете проверить, проверив государство собственность на Recordset.
  • Если результатов больше нет, для набора записей будет установлено значение 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
...