いつもお世話になっております。
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VB6.0のIsNull関数に相当するもの
Visual Basic(VBA)
-
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
-
4
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
5
VBの「As String * 128」とは?
Visual Basic(VBA)
-
6
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
7
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
8
frxファイルの役目
Visual Basic(VBA)
-
9
VB6 配列を初期化したい
Visual Basic(VBA)
-
10
定数配列の書き方
Visual Basic(VBA)
-
11
配列を関数に渡す方法
Visual Basic(VBA)
-
12
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
13
MSFlexGridのデータ表示位置の設定
Visual Basic(VBA)
-
14
VS 2008(VB.NET)
Visual Basic(VBA)
-
15
VB6のListの使い方
Visual Basic(VBA)
-
16
vb6のVSFlexGridで選択行、列の値を取得し構造体に入れたい
Visual Basic(VBA)
-
17
モーダルフォームとモードレスフォーム
Visual Basic(VBA)
-
18
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
19
On ErrorでエラーNoが0
Visual Basic(VBA)
-
20
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】ワークブックを開く時に...
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
pythonのopenpyxlについて
-
ActiveCell.FormulaR1C1の変数
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
VBA データ(特定値)のある最...
-
フランスの生年月日(jj/mm/aaaa)
-
ACCESSで値を代入できないとは?
-
VBAでfunctionを利用しようとし...
-
VBAで時間(00:00形式)を積算...
-
実行時エラー´5854´ 文字列型パ...
-
ASP.NETのサーバー移行に伴うエ...
-
Excel実行時エラー[80004005]に...
-
実行時エラー'-2147467259(8000...
-
mailstorehomeのエクスポートで...
-
VB6とVB.NETでNullの扱いが違う?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
VBAでfunctionを利用しようとし...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
エクセル関数を教えてください
-
On ErrorでエラーNoが0
-
お助けください!VBAのファイル...
-
VBA データ(特定値)のある最...
-
【VBA】ワークブックを開く時に...
-
インポート時のエラー「データ...
-
実行時エラー'-2147467259(8000...
-
マクロの「SaveAs」でエラーが...
-
WindowsでのPythonの挙動について
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
エクセルVBA 「On Error GoTo...
-
Filter関数を用いた結果、何も...
-
ACCESSで値を代入できないとは?
おすすめ情報