AppInventorの亜種「AI2LiveComplete」でハンディーターミナルアプリを開発を初めて40日!
私、かなり疲れています。
朝・昼・晩と・・・終日、頭の中はAppInventorのブロックがクルクル回っり続けています。

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

いよいよ、最後のハードル。
集めた受注データをオフコン(=古い言い方?実際のマシンもとっても古い)に処理させる為の固定長ファイル作り!

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

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

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

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

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

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

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

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

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

なんだ簡単そう!

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

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

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

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

AccessならデータをRecordsetに保存しメモリー上でLOOPで回しながら、掛け算、”000″付与、そして指定長文字列を切り出し処理を行っていく。

でも、AppInventorにレコードセット的機能はない:-?

さて、まだまだ頭の体操は続く・・・

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

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

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

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

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

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

そして完成したSQL文をAppInventorで自動生成させるようjoinブロックで繋いでいく・・・

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

やった、出来た:lol:

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

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

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

まぁ、最初はこんなもんか。
SQL文をコラムごとに分けjoinで繋いでるので修正は楽そう。

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

このままオフコンに食わせると伝票が出来るかも!(ワクワク)
データが不味い(=種類が違う)とゲロ吐く(=エラー)かな?
週明けにテストしてみます。

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

発泡酒を止めてエビスにしよう!
いや、コロナにしよう!
(^o^)/(^o^)/(^o^)/

骨董品のオフコン君、このモダン技術で作られた固定長ファイルを好き嫌い言わずに飲み込んでくれるといいな・・・・ 😀

(98 views)

コメントを残す

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