
No.2ベストアンサー
- 回答日時:
今提示されている2行だけなら、初期化の必要はありません
ですが、「初期化の必要が無い:」ことは「初期化を使ってはダメ」とイコールではありません。
他の行との兼ね合いで、初期化した方が好ましい、初期化しないと問題、というケースも考えられます。
1バイト単位でしのぎを削る分野ならともかく、AccessのVBAのような余裕のあるところでは、あえて「無駄」なことをすることがあります。
例えば
strWhere = ""
strWhere = strWhere & "フィールドA <= '" & テキストボックス & "'"
strWhere = strWhere & " AND "
strWhere = strWhere & "フィールドB >= '" & テキストボックス2 & "'"
と続いていた場合、初期化を無くすと
strWhere = "フィールドA <= '" & テキストボックス & "'"
strWhere = strWhere & " AND "
strWhere = strWhere & "フィールドB >= '" & テキストボックス2 & "'"
となり、文字列の開始位置がずれて、見にくくなります。
後で見なおすことを考えると、見た目も重要です。
フィールドAは不要みたいだからコメントアウトしておこう、となると
' strWhere = "フィールドA <= '" & テキストボックス & "'"
' strWhere = strWhere & " AND "
strWhere = strWhere & "フィールドB >= '" & テキストボックス2 & "'"
となり、ここに来る時点で strWhere="" になっていない場合、そのまま連結されてしまいます。
確実にフィールドBだけにするには
' strWhere = "フィールドA <= '" & テキストボックス & "'"
' strWhere = strWhere & " AND "
strWhere = "フィールドB >= '" & テキストボックス2 & "'"
となります。
ここで、やっぱりフィールドAも必要だった、とコメントアウトから回復させると
strWhere = "フィールドA <= '" & テキストボックス & "'"
strWhere = strWhere & " AND "
strWhere = "フィールドB >= '" & テキストボックス2 & "'"
と、フィールドBで上書きされてしまうので、コマント解除した意味がありません。
以上のことは、strWhere = "" を残したままにすると、コメントアウト/解除だけで期待通りに動いてくれます。
もし、その2行しか無いケースでも、将来条件が増えることを予想して、あらかじめ対応しておいたものかもしれません。
この回答へのお礼
お礼日時:2018/02/11 09:25
kmeeさん
見た目をわかりやすくするためと、コード変更に対応しやすくするため、と理解できました。
丁寧に解説して頂きありがとうございました!
No.1
- 回答日時:
変数名が、何か特殊な意味を持ってそうに見えるかもしれませんが、
考え過ぎです。
strWhere を aaaaa に置換しても、多分ちゃんと動きます。
strWhere = strWhere & ...
とあるので、おそらく、
◯最初は空文字列
◯テキストボックスに文字が入っていたら、
その条件でレコードの絞り込むための文字列を追加
という事をしているのでは。
この回答へのお礼
お礼日時:2018/02/10 09:24
kmeeさん
ありがとうございます!
strWhere = "" ←この行を無くして、
strWhere = "フィールドA <= '" & テキストボックス & "'"
だけではダメなんですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルデータをワードで差し...
-
ACCESS 重複データを1...
-
ファイルメーカーのCase関数で
-
ACCESSでの文字数カウント
-
sqlserverにはグループ集計のfi...
-
エクセルのピポットテーブルで...
-
クエリで割り算する方法を教え...
-
Word差し込み印刷のハイフン(...
-
「Access2007」でレポートが作...
-
フィールドの更新がない
-
レコードの内容にハイフンをつ...
-
Accessのハイパーリンクをクリ...
-
アクセスの操作について
-
Acsess アクセス のクエリで...
-
ワードファイルの文字数制限ロ...
-
ACCESSのデータに自動で半角ス...
-
アクセスでのテキストデータ取...
-
ACCESSで条件によってフォーム...
-
【Access】レポートでテキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
ACCESSでの文字数カウント
-
ファイルメーカーのCase関数で
-
エクセルデータをワードで差し...
-
Accessのハイパーリンクをクリ...
-
エクセルにおける「フィールド...
-
フィールドの更新がない
-
クエリで割り算する方法を教え...
-
ACCESS 重複データを1...
-
Acsess アクセス のクエリで...
-
ACCESSのデータに自動で半角ス...
-
Word差し込み印刷のハイフン(...
-
ACCESSで条件によってフォーム...
-
sqlserverにはグループ集計のfi...
-
クエリーで、全角混じりデータ...
-
「Access2007」でレポートが作...
-
実行時エラー '3464': 抽出条件...
-
アクセスの操作について
-
access2007のフォームウィザー...
-
Access クエリの編集について
おすすめ情報
strWhere = "" が変数の初期化ということはわかりました。しかし、他の変数ではこの初期化を行っていないのです。strWhereは初期化しなくてはならないというルールがあるのですか?