• ベストアンサー

アクセスVBAについて教えてください

都道府県はコントロールです。 Me.Filter = "都道府県 = '東京都'" このときの、シングルコーテーションとダブルコーテーションの意味を教えてください。

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

VBA中では、文字列はダブルコーテーションで括ります。 で、今回の例では、文字列が入れ子状態になってるんですよ。 Me.Filterに対して、「都道府県 = '東京都'」と言う文字列を渡しているわけです。 で、「都道府県 = '東京都'」ですが、これもまた「[都道府県]フィールドに『東京都』という文字列が入っているもの」という意味ですよね。 ダブルコーテーションで括った文字列の内側でも、再び文字列の部分を括る為の記号が必要で、そのためにシングルコーテーションを使っているわけです。 内側の部分までダブルで括ってしまうとと、「何処から何処までが文字列なのか」があやふやになってしまいます。 Me.Filter = "都道府県 = "東京都"" ってな具合に書いたとして、「文字列とは、ダブルコーテーションで囲まれた範囲である。どの部分が文字列か?」って問われても、色んな解釈が出来てしまって、分からないでしょう(笑)。 Me.Filter = "都道府県 = '東京都'" だったら、Me.Filterに渡しているのが「都道府県 = '東京都'」という文字列であるっていうことが一目でわかります。 尚、無理矢理「"」をダブルコーテーションの内側に入れる方法もあります。 Me.Filter = "都道府県 = ""東京都""" とか、 Me.Filter = "都道府県 = " & chr$(34) & "東京都" & chr$(34) などと書くと、Me.Filterに対して「都道府県 = "東京都"」っていう文字列を渡したことになります。 試してみると分かりますが、こちらでも正常に動作します。 シングルとダブルの違いですが、 ○VBA中では文字列はダブルで括る。シングルで括ることは認められない。 ○フィルタなどに渡すパラメータの内部では、文字列を括るのにシングルを使ってもダブルを使ってもいい。が、ダブルを使うと見難くなるので、シングルを推奨。 といったところでしょうか。

その他の回答 (1)

  • Yackn
  • ベストアンサー率42% (12/28)
回答No.1

SQL文は分かりますか? ヘルプに乗っているとおりFilterプロパティはWhere句から下の「文字列」です。文字列なのでダブルクォートで囲みますよね。 また、この例の場合、都道府県フィールドは文字型のためSQL文の上でも何らかで囲んであげる必要がありますね。 そこですでにダブルクォートは使っているのでシングルクォートで代用してあげているだけです。 例をあげますと 都道府県 = "東京" and 名前 Like "山%" and 年齢 = 30 を導入するときは ME.FILTER = "都道府県 = '東京' and 名前 Like '山%' and 年齢 = 30" なんて風に書きます。 まとめますと 「"」vba文字列としてのくくり 「'」SQL文字列としてのくくり ということになります。 こんなもんでよろしいでしょうか?

関連するQ&A

専門家に質問してみよう