もともとは、「App Inventor SQLite」でGoogle検索してて、たどり着いたのがAmerkashi社長のブログ。
[Hossein Amerkashi’s Blog(社長ブログ)]最初はマニアが集まる有料サークル的集まり「Ai2LiveComplete」でしたが、去年、それっぽい名前を付け一般人向けのサービスに衣替えしました。
それが、拡張機能満載の有料App Inventorサービス「AppyBuilder」
[Appy Builder]私はこのメンバーになって3年かな・・・・
作ったアプリは1つだけ、それがハンディーターミナルアプリ
「貧社のハンディーターミナル」
そして今日、念願だった新機能が完成したんです
自分で言うのも何ですが、「この機能、スゲー良い」
まず僕のアプリには大きな欠点が2つ有ります。
その1つが、オフコンのマスターデータのbulk importが常に不安定なこと
その原因は、開発環境の2つの仕様にあります。
(1)SQLiteへのbulk importは、1ファイル最大500レコード。
(2)bulk importファイルは、WEBからのダウンロードのみ
この仕様の上で作ったインポートプログラムがこれ
このプログラム、超「not simple」!
200,000行近いレコードを500行ずつに分け、ダウンロードしながらインポート!
それを40回近くLOOPで繰返す!
途中、WEBサーバの反応が遅かったり、スマホの書き込みが遅れたら、そのファイルのインポートは失敗する。
それを避けるために必要なのが、時間稼ぎ。
そこでLOOPを3分割し、LOOPごとにダイアログボックスを表示。
わざとユーザーに数秒待ってからOKボタンを押してもらう。
ね、変な仕様でしょ!
今日完成したのがこれ!
「AppyBuilder」は約半年ごとにバージョンアップし、社長が本家MITには無い新コンポーネントを追加してくれます。
で、この夏のバージョンアップで追加された2つのコンポーネントを使ったのが新インポートプログラム。
利用したのは、「FTPコンポーネント」のFtp.Download機能。
そして「Fileコンポーネント」のFile.List機能、File.UNZIP機能、File.Read機能
40個近いbulk importファイルを1個のZIPファイルにしFTPサーバに置く。
新プログラムでは、ZIPダウンロード、UNZIP、ファイル名のLIST化、そしてそのLISTを元にLOOP。
FileRead機能でSQL文を読み取りINSERTを実行する。
bulkファイルは、スマホ上に保存済みなので処理は1瞬!
1分以上かかっているインポートが、新プログラムだと2,3秒で、しかも確実に完了します。
ありがとう社長
さてと、これだけではシステムとしては不完全。
次に、bulk importファイル生成MS-Access VBAプログラムに、ZIP機能を加えなければ・・・・・・・
ZIP圧縮のコマンドラインプログラムを探さねば
追記:
新旧インポートプログラムを実データで実行速度を比較してみました。
旧プログラムは、得意先マスタ12秒+商品マスタ1分55秒。合計で2分6秒。
新プログラムは、2マスター一括インポートで9秒でした!
すご~い改良結果でした