• ベストアンサー

Access2000 (VBA) ' & "などの記号の意味

次のコードで迷ってます。 InputBoxに入力した、都道府県と同一ものだけをレポートに表示させるものです。(ちなみにこのコードは正しく動きます。) Private Sub コマンド2_Click() Dim myStr As String myStr = InputBox("抽出する都道府県は?") DoCmd.OpenForm FormName:="顧客マスタ表形式フォーム", _ WhereCondition:="[都道府県]='" & myStr & "'" End Sub この、 "[都道府県]='" & myStr & "'" が理解できません。 (一番外の”は、WhereConditionの条件を示すのは分かります。) ただ、'や&がなぜ必要で、このコード内ではどのような役割をしているのか分かりません。(’や&を消すとエラーになるので、この書き方が正解なのでしょうけど、理解できずに困っています。) そもそも、データ型が文字列でも、変数には&のような文字列連結演算子が必要なのか? なぜ、’が必要なのか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

「一番外の"」というのが勘違いの元で、引用符は括弧と違って入れ 子にならないんです。だから"[都道府県]='" & myStr & "'"は、 「[都道府県]='」という文字列の後ろにmyStr変数の中身を繋げて、 さらに「'」という文字列を追加しましょう。 と読んでください。てなわけでmyStrに東京都を入力すると、 WhereConditionは [都道府県]='東京都' となります。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

> データ型が文字列でも、変数には&のような文字列連結演算子が必要なのか? データ型が文字列とか、「&」がどうとか、「’」がどうではなく、 どういうやり方であろうとも、「Accessが認識可能な(そして、貴方が望んでいる)SQL文」が作れればよいのです。 逆に言えば、「Accessが認識できない(又は、貴方が望んでいる)SQL文」を作っても無意味です。 例えばInputBoxで「東京都」と入力された場合、 > "[都道府県]='" & myStr & "'"  で作られるSQL文は、 "[都道府県]='東京都'" となり、「カラム『都道府県』が文字列『東京都』と等しい」と言うSQL文になります。 #多分貴方の望んでいるものでしょう。 「'」が無い場合、例えば > "[都道府県]=" & myStr & ""  とすると、作成されるSQL文は "[都道府県]=東京都" となり、「カラム『都道府県』がカラム『東京都』と等しい」と言う意味のSQL文になり、テーブルに『東京都』と言うカラムが無ければエラーになります。 #『東京都』と言うカラムがあれば、エラーにはならない(かも)しれませんが、 #多分貴方の望む結果ではないでしょうね。 「&」も同じ。&が無ければそもそも『東京都』と言う入力文字列を渡せません。

すると、全ての回答が全文表示されます。

関連するQ&A