更新クエリを使って
グループとしてのレコード群を変更する
マスタファイルを、トランザクションファイルを使って、一括更新するという業務は、しばしば有るでしょう。
Access は、こんなときに、威力を発揮します。
- 更新するレコードと抽出条件設定用のフィールドが含まれているテーブルやクエリを選択して、クエリを作成します。
その方法は ?
- クエリのデザイン ビューで、ツールバーの (クエリの種類) の右端の下向き矢印をクリックし、[更新クエリ] をクリックします。
- 更新するフィールドまたは抽出条件を指定するフィールドを、フィールド リストからデザイン グリッドにドラッグします。
- 必要な場合、[抽出条件] セルに抽出条件を指定します。
抽出条件を指定する詳細については、 をクリックしてください。
- フィールドを変更するために、更新するフィールドの [レコードの更新] セルに、次のような式または値を入力します。
例えば、「品目番号」の左端の空白を一括削除したい場合は、下のように記述します。
LTrim([品目番号])
また、「品目番号」の頭から9桁を一括削除したい場合は、下のように記述します。
Right$([品目番号],Len([品目番号])-9)
式の例については、 をクリックしてください。
Nullを空白に置換する場合は、下図のようにします。
このホームページでは、「code」テーブルの「出荷先住所1」を、「transaction」テーブルを使って、一括更新します。
更新クエリを選択すると、デザインビュウに、「レコードの更新」セルが表示されます。ここに、ツールバーの ビルド(コントロール ウィザード)を使って、更新したい項目名を登録するのです。
ここでの注意は、「結合プロパティ」として、「両方のテーブルの結合フィールドが同じ行だけを含める。」を選択することです。
SQLビュウで見ると、以下のようになっています。
UPDATE code INNER JOIN [transaction] ON code.受注コード = transaction.受注コード
SET code.出荷先住所1 = [transaction].[出荷先住所1];
- 更新されるレコードの一覧を表示するには、ツールバーの (ビュー) をクリックします。この一覧には、新しい値は表示されません。デザイン ビューに切り替えるには、もう一度ツールバーの (ビュー) をクリックします。必要な場合は、デザイン ビューで変更します。
- ツールバーの (実行) をクリックしてレコードを更新します。
該当の住所が、更新されました。
文字列の変更
文字列の変更に、Replace 関数 が使えます。
Replace 関数 は、入れ子(ネスト)して、多重に使えます。
下の例は、更新クエリを使って、ハイホン(ハイフン)と空白を削除する例です。
Replace( Replace( [品番ハイホン有無対比]![品番ハイホン無し] ,"-","")," ","")
構文
Replace(expression, find, replace[, start[, count[, compare]]])
指定項目 | 説明
|
expression | 必ず指定します。置換する文字列を含む文字列式 を指定します。
|
find | 必ず指定します。検索する文字列を指定します。
|
replace | 必ず指定します。置換する文字列を指定します。
|
start | 省略可能です。引数 expression 内の内部文字列の検索開始位置を指定します。この引数を省略すると、1 が使用されます。.
|
count | 省略可能です。置換する文字列数を指定します。この引数を省略すると、既定値の -1 が使用され、すべての候補が置換されます。
|
compare | 省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。 |
引数 compare の設定値は次のとおりです。
定数 | 値 | 説明
|
vbUseCompareOption | -1 | Option Compare ステートメントの設定を使用して比較を行います。
|
vbBinaryCompare | 0 | バイナリ モードで比較を行います。 (デフォルト)
|
vbTextCompare | 1 | テキスト モードで比較を行います。 (明示的にこちらを使ったほうが良い?)
|
vbDatabaseCompare | 2 | Microsoft Access の場合のみ有効。データベースに格納されている設定に基づいて比較を行います。 |
メモ クエリの実行を中止するには、Ctrl キーを押しながら Break キーを押します。
var win = new Window(Application.getNewId(), {className: "spread", title: "初めてのAccess",
top:500, left:100, width:800, height:560,
resizable: true, url: "QueriesWhatTheyAreAndHowTheyWork_FS.htm",
showEffectOptions: {duration:1}})
win.show();
var win = new Window(Application.getNewId(), {className: "spread", title: "初めてのAccess",
top:500, left:100, width:800, height:560,
resizable: true, url: "WaysToWorkWithDataInAQuerySDatasheet_FS.htm",
showEffectOptions: {duration:1}})
win.show();
var win = new Window(Application.getNewId(), {className: "spread", title: "初めてのAccess",
top:500, left:100, width:800, height:560,
resizable: true, url: "WaysToCustomizeAQuery_FS.htm",
showEffectOptions: {duration:1}})
win.show();
var win = new Window(Application.getNewId(), {className: "spread", title: "初めてのAccess",
top:500, left:100, width:800, height:560,
resizable: true, url: "WaysToSpecifyMultipleCriteriaInAQuery_FS.htm",
showEffectOptions: {duration:1}})
win.show();
参考:UNIONクエリを使って結合参照する
先に紹介した、UNIONクエリを使って、変更レコードを並べて参照することができます。
SELECT *
FROM [transaction]
UNION
SELECT *
FROM [code]
ORDER BY [受注コード];