Microsoft Access Club >


文字列内でのクォーテーション -- みんなのAccess備忘録
 

○分類
VBA
○解説
 
  • ★文字列内でのクォーテーション★


    連結される文字列を記述する場合に、文字列の中に別の文字列を指定したり、文字列の中に文字列変数を指定することが必要な場合があります。
    文字列を別の文字列の中にネストするのは次のような場合です。

    ・定義域集計関数で抽出条件を指定する場合
    ・Find 系メソッドで抽出条件を指定する場合
    ・フォームの "Filter/フィルタ" プロパティまたは "ServerFilter/サーバーフィルタ" プロパティのための抽出条件を指定する場合
    ・SQL 文字列を記述する場合

    上のどの場合でも、文字列は Jet データベース エンジンに渡されます。
    たとえば、定義域集計関数に引数 criteria を指定した場合、Access によって各変数が評価され、 これらが 1 つの文字列に連結されてから、抽出条件の文字列全体が Jet デ

    ータベース エンジンに渡されます。

    数値変数を指定した場合は、変数が評価され、その値が単純に文字列に連結されます。
    しかし、変数が文字列の場合、得られる抽出条件の文字列では、文字列の中に文字列が含まれています。
    文字列の中の文字列は、文字列区切り記号で識別する必要があります。
    このようにしないと、Jet データベース エンジンは、文字列のどの部分が使用する値なのかを判断できません。

    文字列の区切り記号は、変数の一部ではありませんが、引数 criteria を形成する文字列に含める必要があります。
    引数 criteria に文字列を記述するには、3 とおりの方法があります。
    どの方法でも、次のどちらかの形式の引数 criteria が作成されることになります。


    "[氏名] = '山川'"

    - または -

    "[氏名] = ""山川"""


    ●シングル クォーテーションを含める方法

    変数の値が文字列に連結されたときにシングル クォーテーションで囲まれるようにするには、引数 criteria にシングル クォーテーションを含めます。
    たとえば、引数 criteria に strName という文字列変数を含める場合、引数 criteria は次のように記述できます。


    "[氏名] = '" & strName & "'"変数 strName が評価され、"抽出条件" 文字列に連結されると、"抽出条件" 文字列は次のようになります。

    "[氏名] = '山川'"


    [メモ]
    この構文の場合、変数の値の中でシングル クォーテーションを使用することはできません。文字列変数の値にシングル クォーテーションが含まれていると、 実行時エラー

    が発生します。変数の値にシングル クォーテーションが含まれる場合は、以下に説明する別の構文を使用してください。


    ●ダブル クォーテーションを含める方法

    変数の値が評価されたときにダブル クォーテーションで囲まれるようにするには、 引数 criteria にダブル クォーテーションを含めます。
    文字列の中では、2 つの連続するダブル クォーテーションを使って、 1 つのダブル クォーテーションを表す必要があります。
    たとえば、引数 criteria は次のように記述できます。


    "[氏名] = """ & strName & """"


    変数 strName が評価され、 引数 criteria に連結されると、連続する 2 つのダブル クォーテーションは 1 つのダブル クォーテーションに置換されます。
    このため、引数 criteria は次のようになります。


    "[氏名] = "山川""


    この構文はシングル クォーテーションの構文よりも複雑に見えますが、 この構文を使うと、ダブル クォーテーションを含む文字列も引数 criteria に指定できます。
    また、文字列の中に 1 つまたは複数の文字列をネストすることもできます。


    ●クォーテーション マークを表す変数を含める方法

    ダブル クォーテーションを表す文字列変数を作成し、 この変数を、他の変数の値と共に引数 criteria に連結できます。
    ダブル クォーテーションの ANSI 文字表記は Chr$(34) です。
    この値を文字列変数 strQuote に代入すると、引数 criteria は次のように記述できます。


    "[氏名] = " & strQuote & strName & strQuote


    変数が評価され、引数 criteria に連結されると、引数 criteria は次のようになります。

    [氏名] = "山川"(こまちゃん)
     
  • ○私的意見 書き込みはまだありません。

    ○関連リンク 書き込みはまだありません。
     

    --この記事は、みんなのAccess備忘録に投稿いただいた内容です--

    Microsoft Access Club