vbscript: тест на наличие столбца в наборе записей - PullRequest
6 голосов
/ 05 февраля 2009

Бах, VBScript.

Я пытаюсь выяснить, как заставить это утверждение работать:

if (not rsObject("columnNameThatDoesntExist") is nothing) then 
' do some stuff
end if
' else do nothin

Где rsObject является RecordSet, а columnNameThatDoesntExist ... ну, вы знаете. Я ищу что-то вроде rsObject.Columns.Contains (строка). Но, конечно, не могу найти его.

Редактировать: Похоже, зацикливание rsObject.Fields является опцией, это единственный способ сделать это?

Ответы [ 2 ]

6 голосов
/ 05 февраля 2009

Я уверен, что у вас есть свои причины, но если вы не знаете, какие поля вы вызываете из своей базы данных, вы всегда можете использовать On Error Resume Next и On Error Goto 0, чтобы игнорировать брошенную ошибку. Мне кажется, это плохо, но это сработает

blnItWasntThere = True
On Error Resume Next
If (rsObject("columnNameThatDoesntExist") <> "") Then 
  blnItWasntThere = False
  ...
  ...
  ...
End If
On Error Goto 0

If blnItWasntThere Then
'handle this error'
End If

Но с учетом вышесказанного, я думаю, вы бы больше беспокоились о тайном наборе записей, который вы получаете.

Или создайте свою собственную функцию

Function ColumnExists(objRS, Column)
  Dim blnOutput, x
  blnOutput = True
  On Error Resume Next
  x = objRS(Column)
  If err.Number <> 0 Then blnOutput = False
  On Error Goto 0
  ColumnExists = blnOutput
End Function
0 голосов
/ 05 февраля 2009

Либо оооооп и проверь, есть ли он, либо просто попробуй захватить его:

Dim oRs:Set oRs = Nothing
On Error Resume Next
Set oRs = rsObject("columnNameThatDoesntExist")
On Error Goto 0
If Not rsObject("columnNameThatDoesntExist" Is Nothing Then 
    ' ...
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...