いつもお世話になっております。
VB6.0で開発していたプログラムをVB.NETに変更することになりました。
そこで、以下の所で困っています。
VB6.0で
If IsNull(T_RYOSYU!cnt) = True Or T_RYOSYU!cnt = 0 Then
と書いていた箇所をVB.NETで
If IsDBNull(T_RYOSYU.Fields("cnt").Value) = True Or T_RYOSYU.Fields("cnt").Value = 0 Then
と変更しました。
このプログラムでT_RYOSYU.Fields("cnt").ValueがNullのとき、エラーが発生しました。
原因はOrの後で、Nullと0を=で比較していたからなのですが、
VB6.0の場合はNullでもそのようなエラーは発生しませんでした。
OrをOrElseに変更することで、Nullの場合には後ろの式は判定されなくなったので、VB.NET側でも動くようになりました。
VB6.0の場合はNullと0の比較が出来たということでしょうか?
それとも、VB6.0の場合はOrの前が真の場合、後ろは判定されないのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>VB6.0の場合はOrの前が真の場合、後ろは判定されないのでしょうか?
そんなことはありません。
必ず後ろも比較されます。
>VB6.0の場合はNullと0の比較が出来たということでしょうか?
If 0 = Null Then
MsgBox ("にゃー")
End If
はVBAで試したところエラーにはなりませんでした、ただメッセージは出ませんでした。
If Not 0 = Null Then
MsgBox ("にゃー")
End If
も
If 0 <> Null Then
MsgBox ("にゃー")
End If
メッセージは出ませんでした。
結果としては
比較は行われる。
エラーは起きない。
Nullは0でも0以外でもない。(特別?)
わざわざ試していただいてありがとうございます。
実際試していただいた結果なので、かなり参考になります。
ありがとうございました!
No.2
- 回答日時:
VB.NETのヘルプで「Null値の反映」を見てください。
VB6.0の場合、Null 値を含む式はすべて式自体が Null 値となり、偽 (False) と評価されます。
VB.NETの場合は、Null値に対する式はエラー(型の不一致)になります。
【ヘルプから抜粋】
以前のバージョンの Visual Basic では、NULL 値の反映がサポートされています。
NULL 値の反映は、VB.NET ではサポートされていません。
NULL 値の反映は、式で NULL が使用されている場合に、式の結果自体が Null になるという前提を支えるものです。
VB6.0 と VB.NET の両方との互換性を持つためには、Null 値の反映を使用せずに、Null をテストするコードを常に記述する必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- Visual Basic(VBA) vbaで色付けされたセルを除外したいのですが 5 2023/01/28 17:22
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
VB6.0のIsNull関数に相当するもの
Visual Basic(VBA)
-
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
-
4
VB6 配列を初期化したい
Visual Basic(VBA)
-
5
VBの「As String * 128」とは?
Visual Basic(VBA)
-
6
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
7
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
8
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
9
定数配列の書き方
Visual Basic(VBA)
-
10
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
11
frxファイルの役目
Visual Basic(VBA)
-
12
vb6のVSFlexGridで選択行、列の値を取得し構造体に入れたい
Visual Basic(VBA)
-
13
On ErrorでエラーNoが0
Visual Basic(VBA)
-
14
MSFlexGridのデータ表示位置の設定
Visual Basic(VBA)
-
15
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
16
配列を関数に渡す方法
Visual Basic(VBA)
-
17
VB6のListの使い方
Visual Basic(VBA)
-
18
モーダルフォームとモードレスフォーム
Visual Basic(VBA)
-
19
上下の位置揃えについて
Visual Basic(VBA)
-
20
VB6.0 ファイルの一括読込み
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
【VB.NET】 パワポ操作を非表示で
-
バッチファイルで、あるスクリ...
-
文字列内で括弧を使うには
-
インポート時のエラー「データ...
-
String""から型'Double'への変...
-
ApplicationとWorksheetFunctio...
-
VB.NETでMessageBoxが表示され...
-
VBAでのファイル読込エラー...
-
エクセルVBA 「On Error GoTo...
-
実行時エラー'-2147467259(8000...
-
実行したSQLの結果を返す方法
-
error C2664: 'LPCTSTR' に変換...
-
バッチファイルからVBA実行でエ...
-
VBAで時間(00:00形式)を積算...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報