[ai]固定長ファイルの作り方

App Inventor2の有料拡張版サービス「AI2LiveComplete」でハンディーターミナルアプリを開発を初めて40日!

私、かなり疲れています。
朝・昼・晩と・・・終日、頭の中は
App Inventorのブロックがクルクル回っり続けています。

この生活も、もうすぐ終わりそう。
あとひと踏ん張りでプロトタイプが完成します!

いよいよ、最後のハードル。
集めた受注データの固定長エクスポート!

さて、App Inventorでどうやれば固定長ファイルが作れるんだ?

取り合えず日本語で「App Inventor 固定長ファイル」とgoogle検索しても何も出てこない

そこで辞書サイトで”固定長ファイル”を英単語検索。
出てきた”FIXED-LENGTH FILE”と”App Inventor”での再びGoogle検索

がーん、これでも何も出てこない!

こうなると後は一人で創意工夫するしか手がない・・・・

私の知る限りApp Inventorで書き出せるのはCSVだけ。
これってFileMakerと同じじゃん!

そうか、FileMakerの時と同じやり方を試してみよう!

テクニック的には超シンプル。
CSVは複数項目の間にカンマが入る。

カンマ無しファイルを作りたいなら、すべてのデータを1項目にならべればいい。

なんだ簡単そう

得意なVBAならRight関数とFormat関数を使う。
単価390.587円を少数第2位までで8桁左ゼロ詰め固定長にするなら

Right(Format(“00000000” & int(単価*100)),8)

で、結果が”00039058″になる。

これと同じ働きをするApp Inventorのブロックを探し始めたが挫折。
そう簡単ではなかった。

AccessならデータをRecordsetでメモリー上で処理しLOOPで回す

でも、App Inventorにレコードセット的機能はない

さて、どうしよう・・・

ならばSQLiteに似た機能が無いんだろうか?

またGoogle検索。
今度は「SQLiteの使い方 基本」で探すと見つかりました!

いつも助けてくれてありがとう、Google様

少数第2位で切り捨てる:cast((単価*100) as INT)
“000”の付与:’00000000’||(縦棒2本)
文字列指定位置指定長切り出し:substr(文字列,-8,8)
※位置指定が負なら右から

FireFoxアドオンソフト「SQLite Manager」を使い、SQLデータが正しいデータレイアウトになるまで何度も何度もトライ!(あああ、疲れた

App Inventor開発:安価な中華タブレット用のハンディーターミナルアプリを作るぞ!:固定長ファイル生成

そして完成したSQL文をjoinブロックで繋いでいく・・・

App Inventor開発:安価な中華タブレット用のハンディーターミナルアプリを作るぞ!:固定長ファイル生成

やった、出来た

動かす前に、いつもの神頼み!
神様、仏様、山神様、海神様、風神、雷神、ペイジ様、ブリン様、ゴスリン様、ルービン様、そしてAmerkashi様、どうかアプリが正しく動きますように。

十分祈ったところで実行。

あぁ、動いた!
んんん、ちょっとレイアウトが違うぞ!

まぁ、最初はこんなもんか。
小分けしてjoinで繋いでるのでSQL文、修正は楽そう

出来たCSVファイルをテキストエディタで開くと、キャラクターセットがShift-JIS、改行コードはCRLFになってる。

このままオフコンに食わせると伝票発行出来るかも
週明けにテストしてみます。

ようやく、すべての機能を実装したプロトタイプアプリの完成が見えてきました

今日は、祝杯だ!

エビスにしよう!
いや、コロナにしよう

コメントを残す

メールアドレスが公開されることはありません。