![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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行しか無いケースでも、将来条件が増えることを予想して、あらかじめ対応しておいたものかもしれません。
kmeeさん
見た目をわかりやすくするためと、コード変更に対応しやすくするため、と理解できました。
丁寧に解説して頂きありがとうございました!
No.1
- 回答日時:
変数名が、何か特殊な意味を持ってそうに見えるかもしれませんが、
考え過ぎです。
strWhere を aaaaa に置換しても、多分ちゃんと動きます。
strWhere = strWhere & ...
とあるので、おそらく、
◯最初は空文字列
◯テキストボックスに文字が入っていたら、
その条件でレコードの絞り込むための文字列を追加
という事をしているのでは。
kmeeさん
ありがとうございます!
strWhere = "" ←この行を無くして、
strWhere = "フィールドA <= '" & テキストボックス & "'"
だけではダメなんですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース 【ChatGTPのオープンソースソフトウェアを解析したことがある方、教えてくださ 2 2023/03/08 18:57
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Excel(エクセル) Excelシートのある番地の文字が一致したすべての行を別シートに転記する方法 11 2022/10/25 08:43
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- 日本語 一家言という熟語は、現在もよく使われていますか? 4 2023/02/15 12:28
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
ACCESS 重複データを1...
-
エクセルデータをワードで差し...
-
フィールドの更新がない
-
「Access2007」でレポートが作...
-
ACCESSで条件によってフォーム...
-
ACCESSのデータに自動で半角ス...
-
Acsess アクセス のクエリで...
-
奇数・偶数ページごとに差し込...
-
アクセスでのテキストデータ取...
-
MS ACCESS2000のVBAでDocmd.ope...
-
Accessのハイパーリンクをクリ...
-
アクセスのレポートがうまく印...
-
sqlserverにはグループ集計のfi...
-
Word差し込み印刷のハイフン(...
-
海外ドラマ『プリズン・ブレイ...
-
Access クエリの編集について
-
Access2000のクエリでクラスご...
-
Oracleのシングルクォーテーション
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
エクセルデータをワードで差し...
-
クエリで割り算する方法を教え...
-
フィールドの更新がない
-
ACCESS 重複データを1...
-
ACCESSのデータに自動で半角ス...
-
Word差し込み印刷のハイフン(...
-
実行時エラー '3464': 抽出条件...
-
Accessのハイパーリンクをクリ...
-
ACCESSで条件によってフォーム...
-
クエリーで、全角混じりデータ...
-
Acsess アクセス のクエリで...
-
ACCESSでフィールド名の変更(...
-
Wordの差込印刷時間の表示について
-
ACCESSで複数の写真ファイルを...
-
「Access2007」でレポートが作...
-
sqlserverにはグループ集計のfi...
-
ワードファイルの文字数制限ロ...
-
アクセスでのテキストデータ取...
おすすめ情報
strWhere = "" が変数の初期化ということはわかりました。しかし、他の変数ではこの初期化を行っていないのです。strWhereは初期化しなくてはならないというルールがあるのですか?