12月決算の形部商事、12月30日の棚卸に向けてハンディーターミナルアプリの棚卸画面にオフコン取込用固定長ファイル書出し機能を追加しました。

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

全員総出の棚卸、次に必要になるのが出来るだけたくさんのAndroidスマホ!
完成したハンディーターミナルアプリは、3台の端末Android4.1とAndroid4.4で動いています。

その上で、機種変で使わなくなったAndroid2.3を充電し電源を入れると、あぁ、まだ動く!
これに僕のハンディーターミナルアプリをインストールしテストすると・・・

棚卸登録・参照・削除・SD書出・送信、受注登録・参照・削除・SD書出・送信、トランスフォーム機能、みんな動く

唯一動かないのが得意先マスタと商品マスタのbulk insert機能

まったくインポート出来ないんです

私の予測では、Android4系と2系でSQLiteのバージョンが違っていて、参考にしたAmerkashi社長が使うbulk import文をAndroid2系のSQLiteが未対応だから!

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

と言うことで早速、bulk insertの別の書き方が無いかgoogle検索。
そこで見つけたのが下のページです。

[SQLiteで最も速く複数行INSERTする方法]

このページを参考に、bulk insert文を書き直しました。
書き換える前と書き換え後のSQL文がこれ
AppInventor開発:安価な中華タブレット用のハンディーターミナルアプリを作るぞ!:bulk insert
1行目にINSERTと書けば、その後のUNIONで繋いだSELECT文がなぜINSERTの対象になるのかは僕には分かりません。
でも、Firefoxアドオン「SQLite Manager」でテストすると確かにINSERTされます!

次に、実データ数行分を、この新bulk insert書式で書直しインポートテスト。

いざAndroid2系でインポート実験:-x

あぁ、インポート出来た 🙂

次は、Android4系で実験すると、これもインポート成功。

書換え前のbulk insert文はAndroid4系のみ成功!
新しいinsert文はAndroid2系、4系とも動きました

早速、新しいbulk insertファイルを自動生成する機能をMS-Access製マスタ管理プログラムに追加。
AppInventor開発:安価な中華タブレット用のハンディーターミナルアプリを作るぞ!:2種類のbulk insertファイルを生成

やったー、完成 🙂

では、まず商品マスタファイルを新書式で書出しAndroid4系にインポートすると、成功!
次に、同じファイルをAndroid2系にインポートすると、またまた大成功。

次に、得意先マスタも新書式で書き出しAndroid4系へインポート。

あれ、2ファイル1000行足りない 😮

同様にAndroid2系へインポートしても1000行足りない!

なぜ?なぜ?なぜ? 🙁

試しにファイルを別々に1個ずつインポートすると正常終了!
なのに、なぜか”for each”でまとめて実行すると一部のデータが消えてしまう?

なぜ?なぜ?なぜ?

ファイル数が30個を超える商品マスターは、全レコードの取込みに成功しているのに、なぜ10ファイル以下の得意先マスタでデータが消えちゃうの?

何度も、何度も、何度も繰り返しても結果は同じ 😕
レコード数が足りないよ!

あああああぁ・・、理由が分からない 🙁

まぁいいか、自社の棚卸に得意先マスターは関係ない!
取りあえずはタンスの肥やしになっていたAndroid2系スマホも棚卸で使える目途が立ちました:lol:

AppInventor開発:安価な中華タブレット用のハンディーターミナルアプリを作るぞ!:タンスの肥やしスマホで棚卸

それにしてもSQLiteは奥が深いな・・・・・

(103 views)

コメントを残す

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