MS Access Tips/Sample and VBA and Blog customize etc...

ヘッダと明細をテキストにエキスポート

Accessで伝票ヘッダと伝票明細を別テーブルで管理しています。 伝票データを他システムに引き渡すために、Accessでの伝票ヘッダと明細を交互に テキストデータに出力する必要に迫られています。

とある掲示板での質問です。VBAが得意な人なら、レコードセットを開いて、フィールドデータを連結してPrint #ステートメントやFileSystemObjectのWriteLineで書き出していけば簡単にできますね。

VBAはちょっとという人でも、クエリを使えば簡単に実現できます。ただし、SQLの知識は必要です。

難易度:

仕様

下記のようなテーブルがあるとします。

伝票ヘッダ
伝票番号日付取引先名
11112009/03/01AAA
11122009/03/02BBB

伝票明細
ID伝票番号明細番号商品名単価個数
111111aaa10010
211112bbb20010
311121aaa10010
411122ccc30010

上記の2つのテーブルから、下記のCSV形式のテキストファイルを出力します。

1111,0,"2009/03/01","AAA"
1111,1,"aaa",100,10
1111,2,"bbb,200,10
1112,0,"2009/03/02",BBB
1112,1,"aaa",100,10
1112,2,"ccc",300,10

サンプル作成

まず、下記のようなユニオンクエリを作成します。

このクエリを右クリックして「エクスポート」をクリックして「ファイルの種類」でテキストファイルを選択して、カンマ区切り、テキスト区切り記号無しでエクスポートします。

VBAで自動化したい場合は、エクスポート定義を保存しておいて、


解説

Accessのユニオンクエリでは、フィールド数が同じでないと作成できません。今回は、当然、ヘッダと明細でフィールド数がことなります。そこで、キーフィールド(並べ替えの基準になるフィールド)以外は、演算フィールドでひとつに連結します。この演算フィールドのなかに、区切り記号やテキスト区部きり記号を埋め込んでおきます。

これで、フィールド数は同じになりますので、ユニオンで連結できます。


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/34-f74e9d64
該当の記事は見つかりませんでした。