HOME > 即効テクニック > AccessVBA > コントロール > シングルクォーテーションとダブルクォーテーション

即効テクニック

コントロール

シングルクォーテーションとダブルクォーテーション

(Access 2000/2002)
Find系メソッドで抽出条件を指定する場合や、SQLステートメントで文字列を記述する場合など、文字列をクォーテーションで囲むことがあります。
それは、文字列の中に文字列が含まれていることを表すためです。
例えば、数値や変数や文字列を連結して文字列を作成する場合、次のようにクォーテーションを使用します。SQLステートメントで文字列を記述する場合を例にして紹介します。

テーブル作成クエリのSQLステートメントを作成して、RunSQLメソッドでアクションクエリを実行するとします。
テーブル作成クエリのSQLステートメントは、顧客マスタのフィールド「氏名」が「笹野」と付くデータを全て抽出して、「顧客抽出」テーブルを作成します。
SQLステートメントは次のようになります。

SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '笹野*';
RunSQLメソッドの構文は次のとおりです。
<構文>

【例1】シングルクォーテーションを含める
Sub Sample1()
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '笹野*';"
End Sub

★「笹野」が変数の場合(変数:myName)
Sub Sample2()
    Dim myName As String
    
    myName = "笹野"
    
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like '" & _
    myName & "*';"

End Sub

【例2】ダブルクォーテーションを含める
   (2つの連続するダブルクォーテーションを使って、1つのダブル
    クォーテーションを表す。)
Sub Sample1()
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like """ & _
    "笹野*" & """" & ";"
End Sub

★「笹野」が変数の場合(変数:myName)
Sub Sample2()
    Dim myName As String
    
    myName = "笹野"
    
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like """ & _
    myName & "*""" & ";"

End Sub

【例3】クォーテーションマークを表す変数を含める
   (ダブルクォーテーションのANSI文字表記はChr$(34)です。)
Sub Sample1()
    Dim strQuote As String
    
    strQuote = Chr(34)

    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like " & _
    strQuote & "笹野*" & strQuote & ";"
End Sub

★「笹野」が変数の場合(変数:myName)
Sub Sample2()
    Dim myName   As String
    Dim strQuote As String
    
    myName = "佐野"
    strQuote = Chr(34)
    
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 氏名 Like " & _
    strQuote & myName & "*" & strQuote & ";"

End Sub

 数値はクォーテーションで囲む必要はありません。
【例】
Sub Sample1()
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 顧客番号 = 1;"
End Sub

Sub Sample2()
    Dim myNo As Integer
    
    myNo = 2
    
    DoCmd.RunSQL _
    "SELECT 氏名 INTO 顧客抽出 FROM 顧客マスタ WHERE 顧客番号 =" & myNo & ";"

End Sub