Q93:EDI取引データの取り込みと吐き出しの方法
Q93-1:
現在、VAN形式でEDI(電子データ取引)データを取引先と交換しています。
データ形式を調べたところ「固定長のテキストデータ」形式のようです。
MZPFでは「CSV形式」は取り込みや吐き出しは可能ですが、固定長のテキストデータの取扱い(取り込み・吐き出し)は出来ますでしょうか。
出来ない場合には、他のソフトを中間にいれて行うことになると考えますが、いかがでしょうか。
可能かわかりませんが、ODBCドライバに「テキストドライバ*.txt,*.csv」とありますが、このドライバを使って固定長テキストデータをデータベースとして扱いデータを抜き出すことはできますでしょうか。
当社では、EDI取引が毎年多くなってきているので、できれば取り込み及び送信場所は1箇所でかまわないのですが、「納品処理」をする場所は各職場(建屋も違います)でできるようにしたいと考えています。
そこで、その環境をつくる手段としてMZPFを活用したいと考えています。
A93-1:
> MZPFでは「CSV形式」は取り込みや吐き出しは可能ですが、固定長のテキストデータの取扱い(取り込み・吐き出し)は出来ますでしょうか。
固定長のデータに限らず、テキストデータは[テキストファイル入力]、[テキストファイル出力]を使用して入出力を行うことができます。 メソッド「ファイル名を指定してテキストファイルを読込む」、「開いているファイルから一行ずつ読込む」等を適宜使用し入力します。「ファイル名を指定して・・・」の方は「ファイルを開く/閉じる」の処理は内部で自動的に行われます。
> 可能かわかりませんが、ODBCドライバに「テキストドライバ*.txt,*.csv」とありますが、このドライバを使って固定長テキストデータをデータベースとして扱いデータを抜き出すことはできますでしょうか。
エクセルファイルへ接続する時と同じように、ODBCドライバ設定(設定の際はフォルダの選択をしてください)をし、接続、SQLによるデータの取得ができます。ドライバ名も「sun.jdbc.odbc.JdbcOdbcDriver」で同じです。
但し、思うような箇所で区切られず、テキストが連続していたり、逆に不都合な箇所で切れてしまうということも起きるかと思います。
MZPlatformの[テキストファイル入力]で取り込んでも、自動的に区切られているということはありませんが、[文字列格納変数」のReplaceメソッドなどを使って、カンマ区切りを追加することができます。
頂いたファイルは幾つかのスペースで区切られ、データ中に「,」が使われているので、データの両側を「""」で囲み、スペースの代わりに「,」で区切るとCSVデータとなるかと存じます。
処理の方法は幾つか考えられますが、例えば[テキストファイル入力]のデータ生成イベントに[文字列格納変数]を接続し、置換え処理をします。一時的にテキストを[テキストファイル出力]で保存し、それを[CSV入力]で読み込むなどが考えられます。
[システム情報]を使うと「実行ディレクトリ」が取得できます。[ファイル]を使うとファイルの削除などの操作もできます。
[CSV入力]の属性情報設定で「HeaderEnabled=false」とすると、一行目がデータ行として扱われます。
区切り箇所については[文字列格納変数]で正規表現等で工夫することになりますが、固定長データにも仕様により違いがあるようですので、まずは関連ファイルでお試し頂き、ご質問、ご要望等頂ければと存じます。
関連ファイル:SpaceReplacement.mzax、TabReplacement.mzax