dポイントプレゼントキャンペーン実施中!

次のコードで迷ってます。
InputBoxに入力した、都道府県と同一ものだけをレポートに表示させるものです。(ちなみにこのコードは正しく動きます。)

Private Sub コマンド2_Click()
Dim myStr As String
myStr = InputBox("抽出する都道府県は?")
DoCmd.OpenForm FormName:="顧客マスタ表形式フォーム", _
WhereCondition:="[都道府県]='" & myStr & "'"
End Sub

この、 "[都道府県]='" & myStr & "'" が理解できません。
(一番外の”は、WhereConditionの条件を示すのは分かります。)

ただ、'や&がなぜ必要で、このコード内ではどのような役割をしているのか分かりません。(’や&を消すとエラーになるので、この書き方が正解なのでしょうけど、理解できずに困っています。)

そもそも、データ型が文字列でも、変数には&のような文字列連結演算子が必要なのか?
なぜ、’が必要なのか?

A 回答 (2件)

「一番外の"」というのが勘違いの元で、引用符は括弧と違って入れ


子にならないんです。だから"[都道府県]='" & myStr & "'"は、

「[都道府県]='」という文字列の後ろにmyStr変数の中身を繋げて、
さらに「'」という文字列を追加しましょう。

と読んでください。てなわけでmyStrに東京都を入力すると、

WhereConditionは [都道府県]='東京都' となります。
    • good
    • 1

> データ型が文字列でも、変数には&のような文字列連結演算子が必要なのか?



データ型が文字列とか、「&」がどうとか、「’」がどうではなく、
どういうやり方であろうとも、「Accessが認識可能な(そして、貴方が望んでいる)SQL文」が作れればよいのです。
逆に言えば、「Accessが認識できない(又は、貴方が望んでいる)SQL文」を作っても無意味です。


例えばInputBoxで「東京都」と入力された場合、
> "[都道府県]='" & myStr & "'" 
で作られるSQL文は、

"[都道府県]='東京都'"
となり、「カラム『都道府県』が文字列『東京都』と等しい」と言うSQL文になります。
#多分貴方の望んでいるものでしょう。

「'」が無い場合、例えば
> "[都道府県]=" & myStr & "" 
とすると、作成されるSQL文は

"[都道府県]=東京都"
となり、「カラム『都道府県』がカラム『東京都』と等しい」と言う意味のSQL文になり、テーブルに『東京都』と言うカラムが無ければエラーになります。

#『東京都』と言うカラムがあれば、エラーにはならない(かも)しれませんが、
#多分貴方の望む結果ではないでしょうね。


「&」も同じ。&が無ければそもそも『東京都』と言う入力文字列を渡せません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A