web-dev-qa-db-ja.com

ASP RecordsetのデータベースNULL値のクラシックチェック

ADODBレコードセットを取得しているので、ASPClassicのnull許容列の値を確認する必要があります。 nullかどうかはどうすればわかりますか? AFAIKIsDBNullはASP Classicには存在せず、すべてのNullテスターは、オブジェクトの値ではなくnullかどうかを尋ねます。

たとえば、列RS("myCol")を含むRecordsetRSがあります。データベースでは、myColはNULL可能ビットであるため、値は_{0, 1, NULL}_にすることができます。

RS("myCol") = NULLをテストするにはどうすればよいですか?文字通りその比較を実行すると、オブジェクトRS( "myCol")がNullであるかどうかだけがわかり、要求されたフィールドの値が "database" nullであるかどうかはわかりません。

6
feetwet

これを試してください。MSSQLを使用している場合は機能するはずです。

IF IsNull(RS("myCol")) = False THEN
  IF RS("myCol") THEN
    Response.Write "myCol is TRUE"
  ELSE
    Response.Write "myCol is False"
  END IF
ELSE
  Response.Write "myCol is NULL"
END IF

または使用してみてください

IF RS("myCol")<>"" THEN
  IF RS("myCol") THEN
    Response.Write "myCol is TRUE"
  ELSE
    Response.Write "myCol is False"
  END IF
ELSE
  Response.Write "myCol is NULL"
END IF
5

これは私のために働きます:

Function A9000_Coalesce(SqlValue, ValueIfNull)

    If VarType(SqlValue) = vbNull Then 
        A9000_Coalesce = ValueIfNull
    Else
        A9000_Coalesce = SqlValue
    End If

End Function 
0
Chris Johnson

タイプ_nullable bit_のデータベース列myColの場合、その列を含むRecordset RSには次のことが当てはまります。

  • データベース値が0の場合、RS("myCol") = Empty = False = 0
  • データベース値が1の場合、RS("myCol") = True = 1
  • データベース値がNullの場合、IsNull(RS("myCol")) = True = 1

別の解決策:

  • データベース値が0の場合、Len(RS("myCol")&"") = 5
  • データベース値が1の場合、Len(RS("myCol")&"") = 4
  • データベース値がNullの場合、Len(RS("myCol")&"") = 0
0
feetwet