2008年7月2日水曜日

Access: Access DBデータから固定長ファイルを作る

さて。今回のシステム開発で初体験だったのが、
「固定長ファイルでのImport/Exportファイルインターフェース」です。
固定長というところがはじめて。

上司には「さすが、時代。WEBアプリ開発に慣れてるからだねー」なんていわれました。

それはおいといて、開発において面倒くさいのが
「固定長ファイルのテストデータ(textファイル)を作成する」ことでした。

なんとかAccessでできないかなーと思ってついに実現
↓はExportファイルを作成するときの手法。

①DBテーブルをOracleからAccessDBにImport (テーブルAとする)
②ファイルフォーマットに従ったテーブルをAccess上に作成する (テーブルBとする)
 2-1 [テーブル]の[デザイン]をクリック
 2-2 各フィールドに固定長の長さ・データ型にあわせてデータ型、フィールドサイズを指定
 2-3 現在日付をデフォルト値にしたい場合は、データ型:日付/時刻型を選び、規定値:=Date()を入力
③追加クエリで②で作ったテーブルBに、テーブルAから①のデータを各々のフィールドに入れる。
 ※データすべてはいらないな場合は、ほしいデータをWhere句条件で絞る。
④データを選択クエリでフォーマットする。(選択クエリC)
 4-1 ③でデータを投入したテーブルBのすべてを選択するクエリを作る。
 4-2 一部データのフォーマットをしたいフィールドに関しては、Format()関数を利用する。
   ※例1 日付型でYYYYMMで出したい場合:F_Application month: Format([Application month],"yyyymm")
   ※例2 数値型で右0埋め、小数点第4位までほしい場合:F_Requested claim amount total: Format([Requested claim amount total],"00000000000000.0000")
⑤④で作成した選択クエリCをエクスポート
 5-1 クエリを右クリック→エクスポート(ファイル形式は.txt)
 5-2 ウィザードで固定長ファイルを選択
 5-3 ウィザード左下の[設定]ボタンをクリック
 5-4 ファイルエクスポート定義のウィザードが出るので、固定長ファイルの開始地点、長さが正しいことを確認(正しくなかったらそこで修正)
 5-5 保存を押下
 5-6 OKを押下

でエクスポート完了。

ちなみに、さらに複数こういうファイルがあって
いちいちエクスポート作業が面倒な場合は、マクロに入れちゃいましょう。

①マクロ→テキスト変換
②変換の種類を固定長エクスポート
③定義名で5で作成した定義名をプルダウンから選択
④テーブル名=4で作成した"選択クエリC"
⑤出力先をフルパスで指定して(ファイル名まで)
⑥フィールド名出力は任意。今回の場合はいいえ。

これでデータ投入マクロ→エクスポートマクロをあわせれば、
一気にデータができます。

どうやったら固定長ファイルが自力で作れるか、
もやもやとしていたのが、泥臭いけれども
なんとか解決

0 件のコメント: