AI2LiveComplete(=AppInventor+SQLte)でのハンディーターミナルアプリ開発で一番難しのが商品マスターインポート機能。
理由は2つ
1つ目は、AI2LiveCompleteのSQLiteにはCSV一括インポートのような機能が無いんです!
唯一の方法は、Amerkashiさんがブログで紹介してるBulk Data Loadだけ。
そこで専用のMS-Accessプログラム「マスターデータ to Bulk importファイル生成」を開発。
SQLiteの仕様でbulk importファイルは最大500レコード。
商品マスター10000行以上をインポートさせるために約20個の小分けファイルを自動生成しUTF8エンコード、そしてFTPアップロード。
このプログラムの開発、すご~く苦労したんですよ!
でもAccess完成で、アプリのマスターインポート機能開発は道半ば!
2つ目は、Bulk importファイルをハンディーアプリにインポートさせる機能。
具体的には、AppInventorのwebget機能でファイルをhttpダウンロードしSQLを実行。
商品マスタ、得意先マスタ、その他マスタでファイル数は約40個。
これをファイル数だけループで繰り返す。
ここで問題なのがWEBサーバの負荷。
負荷が高くなり過ぎ処理が間に合わず毎回2,3個分(1000行)のインポートエラーが起きるんです。
最初、Windows10profesionalに付いてるIISを使ったがエラー多数で不安定過ぎ!
IIS、多機能過ぎで重いのかも?
イントラに建てたWEBサーバはフリーソフト「AN HTTP」を採用。
[AN HTTP Server Home Page]この仕組みを買ったばかりの僕の新パソコン(Corei5 + 8Gメモリー)で動かすと、たまーにエラーになりますが、成功率99%でマスターインポート成功!
で、本格稼働用に同じ仕組をオフコンに繋がってるちょっと古めのコンピューター(Pentium3+2G)に構築。
さあテストだ!
マスターインポートボタンを押すと・・・・ガーン!
エラー、エラー、エラー:-o 😮 😮
20個を超えるbulk insertファイルの内、3,4回ダウンロードエラーが発生。
2000レコード近いインポートエラーが起きました!
Corei5とPntium3では性能が違い過ぎるのかな?
取りあえず試しに、Pen3マシンへWindowsに無料添付されてるIISのWEBサーバ機能をインポートし再度インポートテスト。
が〜〜〜〜ん、エラー、エラー、エラー、エラー:-o 😮 😮 😮 😮
エラーが増えた!
ダウンロード出来ないファイルが7,8個に増加しました。
これなら「AN HTTP」の方が早い!
んんん〜、困った。
取り合えずIISはアンインストールし改めて「AN HTTP」を再設定。
これがエラーが起きるFOR EACHブロック
このLOOPに5回に1秒ぐらいのポーズを入れたいが方法がわからない。
AccessVBAならmsgbox「インポートを始めます OKボタン」を表示させるとプログラムが一時停止する。
でもApp Inventorは、メッセージを表示したままで、裏でLOOP内の処理をそのまま継続実行してるんです。
いろいろ試しましたがインポート処理時間を遅らせる方法が見つかりませんでした・・・・・・
まぁ、商品マスタはJANコードをスキャンした時、商品名と荷姿を表示させるだけのもの。
受注・棚卸自体の基本作業に支障は起きない。
取りあえず、解決策が見つかるまでは、僕のCorei5マシンをハンディーターミナルアプリ用マスターファイルダウンロードサーバとして動かそう 🙁