文書番号: 815282 - 最終更新日: 2004年1月28日 - リビジョン: 4.1

[ACC2003] テキスト型のデータを、各単語の先頭が大文字の形式に変換する (タイトル用の大文字/小文字形式)

難易度 : 中。基本的なマクロ、コーディング能力、相互運用性の経験が必要です。

目次

すべて展開する | すべて折りたたむ

概要

この資料では、"テキスト" 型のデータ値を "各単語の先頭が大文字" の形式 (タイトル用の大文字/小文字形式) に変換する方法について説明します。

詳細

"テキスト" 型のデータ値は、次のいずれかの方法を使用すると、"各単語の先頭が大文字" の形式に変更できます。
  • 方法 1 : 組み込みの文字列変換関数を使用する
  • 方法 2 : ユーザー定義関数を使用する
: これらの方法のいずれかを使用する前に、MyTestTextList という名前のサンプル テーブルを作成します。これを行うには、次の手順を実行します。

サンプル テーブル MyTestTextList を作成する

  1. Access を起動し、空の新しいデータベースを作成します。
  2. このデータベースを MyTestDatabase として保存します。
  3. 以下のフィールドを使用して新しいテーブルを作成します。
    フィールド名 : testText
    データ型 : テキスト型
    
  4. このテーブルを MyTestTextList として保存します。
  5. 主キーの作成を確認するメッセージが表示されたら、[いいえ] をクリックします。
  6. テーブルに以下の testText サンプルをそれぞれ追加します。
    the cOw jumped Over the MOON
    THE QUICK BROWN FOX jUmped over THE lazy DOG 
    

方法 1
組み込みの文字列変換関数を使用する

  1. Access を起動します。MyTestDatabase データベースを開きます。
  2. [挿入] メニューの [クエリ] をクリックします。
  3. [新しいクエリ] (または [クエリの新規作成]) ダイアログ ボックスで [デザイン ビュー] をダブルクリックします。
  4. [テーブルの表示] ダイアログ ボックスが表示されたら、[閉じる] をクリックします。
  5. [表示] メニューの [SQL ビュー] をクリックします。
  6. [クエリ1 : 選択クエリ] ダイアログ ボックスに次のコードを入力します。
    SELECT testText, STRCONV(testText,3) as  TestText_in_Proper_Case FROM MyTestTextList
  7. [クエリ] メニューの [実行] をクリックします。

    クエリの出力は次のとおりです。
    testText					TestText_in_Proper_Case
    the cOw jumped Over the MOON The Cow Jumped Over The Moon
    THE QUICK BROWN FOX jUmped over THE lazy DOG The Quick Brown Fox Jumped Over The Lazy Dog
: StrConv(<Text>,3) メソッドは、テキスト内のすべての単語の最初の文字を大文字に変換します。この処理は、単語がスペースまたはタブで区切られている場合にのみ行われます。StrConv では、- や $ などの特殊文字は単語の区切り記号として扱いません。

StrConv 関数で各単語の先頭を大文字に変換するための有効な区切り記号の詳細については、Visual Basic Editor で [ヘルプ] メニューの [Microsoft Visual Basic ヘルプ] をクリックします。次に、Office アシスタントまたはアンサー ウィザードに StrConv と入力し、[検索] をクリックしてトピックを表示します。

方法 2
ユーザー定義関数を使用する

  1. Access を起動し、MyTestDatabase データベースを開きます。
  2. [挿入] メニューの [標準モジュール] をクリックします。
  3. 現在のモジュール内に次のコードを入力します。変更を保存します。
    Function Proper(X)
    
    ' Capitalize first letter of every word in a field.
    Dim Temp$, C$, OldC$, i As Integer

    If IsNull(X) Then

    Exit Function

    Else

    Temp$ = CStr(LCase(X))

    ' Initialize OldC$ to a single space because first
    ' letter must be capitalized but has no preceding letter.

    OldC$ = " "

    For i = 1 To Len(Temp$)
    C$ = Mid$(Temp$, i, 1)
    If C$ >= "a" And C$ <= "z" And (OldC$ < "a" Or OldC$ > "z") Then
    Mid$(Temp$, i, 1) = UCase$(C$)
    End If
    OldC$ = C$
    Next i

    Proper = Temp$

    End If

    End Function

    : 関数が正しく機能するには、このモジュールの "Declarations" セクションで Option Compare Database を指定する必要があります。
  4. [ファイル] メニューの [終了して Microsoft Office Access へ戻る] をクリックします。

    : Access 97 の場合は、[ファイル] メニューの [閉じる] をクリックします。
  5. [挿入] メニューの [クエリ] をクリックします。
  6. [新しいクエリ] (または [クエリの新規作成]) ダイアログ ボックスで [デザイン ビュー] をクリックします。
  7. [テーブルの表示] ダイアログ ボックスが表示されたら、[閉じる] をクリックします。
  8. [表示] メニューの [SQL ビュー] をクリックします。
  9. [クエリ1 : 選択クエリ] ダイアログ ボックスに次のコードを入力します。

    SELECT testText, proper(testText) as  testText_in_Proper_Case FROM MyTestTextList
    : このクエリは方法 1 のクエリと似ています。関数呼び出しであることのみが異なります。
  10. [クエリ] メニューの [実行] をクリックします。

    クエリの出力は次のとおりです。
    testText					testText_in_Proper_Case
    the cOw jumped Over the MOON The Cow Jumped Over The Moon
    THE QUICK BROWN FOX jUmped over THE lazy DOG The Quick Brown Fox Jumped Over The Lazy Dog
出力はどちらの方法も似ていますが、方法 2 では、大文字/小文字形式を選択する柔軟性が提供されます。たとえば、- や _ などの単語区切り記号を選択できます。また、必要な大文字/小文字形式の定義や、単語区切り記号の定義が行えます。これは、手順 3. で示した Proper 関数を変更することで可能です。

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
298607? (http://support.microsoft.com/kb/298607/EN-US/ ) ACC2002: How to Use the StrConv Function to Capitalize Words and Phrases
253911? (http://support.microsoft.com/kb/253911/EN-US/ ) ACC2000: How to Use the StrConv Function to Capitalize Words and Phrases
302499? (http://support.microsoft.com/kb/302499/EN-US/ ) ACC97: How to Use the StrConv Function to Capitalize Words and Phrases
209903? (http://support.microsoft.com/kb/209903/EN-US/ ) ACC2000: Cannot Use Intrinsic Constants in Queries, Forms, Reports

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 815282? (http://support.microsoft.com/kb/815282/EN-US/ ) (最終更新日 2003-09-18) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

この資料は以下の製品について記述したものです。
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
キーワード:?
kbhowto KB815282
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
 

サポート技術情報の翻訳

 

Related Support Centers