AppInventorの亜種「AI2LiveComplete」でハンディーターミナルアプリ開発する際、一番難しかったの商品マスターのインポート機能。

基本、AI2LiveCompleteには大量のデータをインポートする機能は有りません。
唯一の方法は、Amerkashiさんがブログで紹介している1ファイル500レコードのbulk insertのみ。

[SQLite Bulk Data Load–Hossein Amerkashi’s Blog]

10,000行の商品マスタをbulk insertする仕組みを考えるのに苦労しました。

まずデータを500行ごとに分け、bulk insertのテキストファイルを作りイントラ上のWEBサーバに置く。

それをAppInventorのWEBGETブロックでダンロードしながらbulk insertを実行。
これをファイル数(=(レコード数÷500)回+余り分1回)だけFOR EACHで繰り返すんです!

bulk insertファイルの生成は専用MS-Accessプログラムを作りました。
イントラに建てた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ブロック
AppInventor開発:安価な中華タブレット用のハンディーターミナルアプリを作るぞ!:

このLOOPに5回に1秒ぐらいのポーズを入れたいが方法がわからない。

AccessVBAならmsgbox「インポートを始めます OKボタン」を表示させるとプログラムが一時停止する。
でもAppInventorは、メッセージを表示したままで、裏でLOOP内の処理をそのまま継続実行してるんです。

いろいろ試しましたがインポート処理時間を遅らせる方法が見つかりませんでした・・・・・・

まぁ、商品マスタはJANコードをスキャンした時、商品名と荷姿を表示させるだけのもの。
受注・棚卸自体の基本作業に支障は起きない。

取りあえず、解決策が見つかるまでは、僕のCorei5マシンをハンディーターミナルアプリ用マスターファイルダウンロードサーバとして動かそう 🙁

(154 views)

コメントを残す

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