- 締切済み
シングルクォーテーションとダブルクォーテーションについて
今、AccessVBAを本を見ながら勉強している初心者です。 フォームから入力されたコードに検索をしたいのですが、 Dim cnCrrDB As ADODB.Connection Dim rsKokyaku As New ADODB.Recordset ・ ・ ・ rsKokyaku.Open "Select * From 顧客マスタ Where _ 顧客コード='" & txtKokyakuCode & "'", _ cnCrrDB, adOpenStatic, adLockOptimistic とあり、[顧客マスタ]テーブルから一致する顧客コードを検索したい。っということは わかるのですが、 顧客コード='" & txtKokyakuCode & "'", のあたりの意味が、、、不明 ちなみにtxtKokyakuCodeというのは コードを入力するための テキストボックスの名前です。 シングルクォーテーションとダブルクォーテーションを どうゆうふうに扱っているのか 教えてくださーい。 お願いします!!(わかりづらくてすみません)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
> まではセットということでしょうか? セットという意味では [ ]で閉じられた部分がセットです。 ["~='"] & [変数] & ["'"] >(ちなみに定数の場合は > ="10000" といことでしょうか?) 定数である場合も、その定数が文字か数値で変わってくるのです。 ~は前にも続くの意味です。 文字だったら = '10000' 数値だったら = 10000 日付だったら = #2003/10/29# です。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 補足ですが。 本来、文字列型フィールドの検索では、検索する文字列を「""」(ダブルクォーテーション)で括らなければなりません。 実際にクエリを作成すると、そのSQLビューでは、検索文字列は「""」で括られています。 しかし、コードで実行する場合はSQL文は文字列で指定するため、全体を「""」で括る必要があります。 したがって、同じ「""」を使うことが出来ないので、「''」(シングルクォーテーション)で代用する、というのが経緯です。
txtKokyakuCodeが文字列の場合、作成される値が次の形にならないといけないので、 顧客コード='Oct0001' SQL文のなかではご指摘のように[']で囲ってやる必要があります。 lngKokyakuCode というのがあって、それが数値だったら 顧客コード=10008 という風に 囲む必要がないのでSQLも 顧客コード=" & txtKokyakuCode でいいのです。 仮に日付を比較する場合は、 ['] の代わりに [#] で囲みます。 登録日=#" & dateToroku & "#" 登録日=#2003/10/27# となります。
補足
ありがとうございます。ようやくなんとなくわかってきました。急にシングルクォーテーションが出てきて 「なぜ?なぜ?」となっていました。 ちなみに、 Where 顧客コード='" & txtKokyakuCode & "'", となっているというのは Where文で 比較をするのに ='" & 変数 & "' まではセットということでしょうか? (ちなみに定数の場合は ="10000" といことでしょうか?) すいません。よければ教えてください