即効テクニック |
●詳細● DAOを使ってレコードを一括修正するには、Recordsetオブジェクトを作成してEditメソッドとUpdateメソッドでレコードの更新処理をします。 サンプルプロシージャ「Sample1」では、テーブル「住所録」のフィールド「氏名」の全データから前後の空白を取り除いてレコードを更新する処理を行っています。例えば、「 笹野 ますみ 」が「笹野 ますみ」となります。 データ入力はある程度制限することができますが、前後に空白を付けてしまったり、全角と半角を混在してしまったりといったことは起こり得ることです。 サンプルプロシージャ「Sample2」では、テーブル「住所録」のフィールド「メールアドレス」の全データを半角の小文字にしてレコードを更新する処理を行っています。 例えば、「SUM@PROJECTA.CO.JP」が「sum@projecta.co.jp」となります。 ●サンプル● 【前後の空白を取り除く】 Sub Sample1() Dim db As Database Dim rs As Recordset Dim fld As Field Set db = CurrentDb Set rs = db.OpenRecordset("住所録") Set fld = rs.Fields("氏名") If rs.EOF = False Then Do Until rs.EOF rs.Edit fld = Trim(fld) rs.Update rs.MoveNext Loop End If db.Close End Sub 【半角の小文字にする】 Sub Sample2() Dim db As Database Dim rs As Recordset Dim fld As Field Set db = CurrentDb Set rs = db.OpenRecordset("住所録") Set fld = rs.Fields("メールアドレス") If rs.EOF = False Then Do Until rs.EOF rs.Edit fld = StrConv(fld, vbNarrow + vbLowerCase) rs.Update rs.MoveNext Loop End If db.Close End Sub ●補足説明●<構文> StrConv(string, conversion, LCID) string :必ず指定します。変換する文字列式を指定します。 conversion:必ず指定します。実行する変換の種類を定数で指定します。 通常、定数は互いに矛盾しない限り、組み合わせて指定できます。 定数 値 内容 vbUpperCase 1 文字列を大文字に変換します。 vbLowerCase 2 文字列を小文字に変換します。 vbProperCase 3 文字列の各単語の先頭の文字を大文字に変換します。 vbWide* 4* 文字列内の半角文字(1バイト)を全角文字(2バイト)に 変換します。 vbNarrow* 8* 文字列内の全角文字(2バイト)を半角文字(1バイト)に 変換します。 vbKatakana** 16** 文字列内のひらがなをカタカナに変換します。 vbHiragana** 32 文字列内のカタカナをひらがなに変換します。 vbUnicode 64 システムの既定のコードページを使って文字列をUnicodeに 変換します。 vbFromUnicode 128 文字列をUnicodeからシステムの既定のコードページに 変換します。 * 国別情報の設定が中国、韓国、および日本の場合に適用されます。 ** 国別情報の設定が日本の場合のみ有効です。 LCID:省略可能です。システムとは異なる国別情報識別子(LCID)を指定できます。 既定値はシステムが使用するLCIDです。
- レコードを編集するには、Editメソッドを使用して、カレントレコードの内容をコピー バッファにコピーします。Editメソッドを使用せずに、Updateメソッドを使用したり、
- フィールドの値を変更したりしようとすると、エラーが発生します。
1件1件処理するので、データ内容によって修正処理を複雑に分岐する事も可能です。- Trim関数は、指定した文字列から先頭と末尾の両方のスペースを削除した文字列を表す バリアント型(内部処理形式StringのVariant)の値を返します。
- StrConv関数は、文字列を指定した方法で変換した値を返します。構文は次のとおりです。