AppInventorの亜種「AI2liveComplete」で作った僕のハンディーターミナルアプリの不具合が1つ解決できました:-)

[Ai2LiveComplete]

私のアプリ、SQLiteに貯めたデータを会社へ送る為に2種類のボタンを持ってます。

1つは「送信」ボタン
これはデータベースのデータをGmail本文に挿入する機能で、レコード数120行未満用

もう1つは「書出」ボタン
こっちはデータをSDカードにテキストファイルとして書き出す機能。

で、今回解決した不具合は「送信」ボタンの120行の壁
と言っても、本当は壁など無かったんですけど・・・・

[が〜ん、固定長データをメール本文に挿入するのはダメみたい]

「送信」ボタンを押すと、ActiveStaterコンポーネントが動きSQLiteに貯めた棚卸データをGmail本文に直接挿入します。
この時、まれにデータの後半数行が切り捨てられる不具合が発生。

この不具合、レコード数が120行を超えたテストの時に起きたので、アプリを実戦投入する際、120行未満なら「送信」、超えたら「書出」ボタンを使うように営業マンに指示しました。

AppInventor:ActiveStaterのメール送信にレコード数の壁は無かった!

でも、数日前に予想外の現象を目撃!

が〜ん、10行のレコードでも後半切り捨て現象が起きてる!

何で:-( 🙁 🙁 🙁
120行以下なら大丈夫だと思ってたのに・・・・

商品名が「丸美屋 とっとこハム太郎<ビーフ&コーン>」
切り捨て直前の文字列が「丸美屋 とっとこハム太郎<ビーフ」

AppInventor:ActiveStaterのメール送信にレコード数の壁は無かった!

ん、ん、ん、んんんん・・・、もしかして不具合の原因が分かったかも🙂

商品名のアンド記号「&」がプログラムの制御記号として誤認識されてるみたい・・・・

そこで、「丸美屋 とっとこハム太郎<ビーフ&コーン>」に注目して検証開始!

まず、オフコンの商品マスタを元にSQLite用bulk insertファイルを生成するMS-Accessプログラムを修正。

全角商品名の英数字を全て半角変換する箇所”StrConv(オリジナル商品名,vbNarrow)”全体をReplace(変換後の商品名,”&”,”&”)で囲み”&”だけは全角に戻します。

そして、bulk insertファイルを作り直しアプリへインポート。
AppInventor:ActiveStaterのメール送信にレコード数の壁は無かった!

さて”<ビーフ&コーン>”の「コーン」の壁を越えられるかな?

結果がこれ、難なく超えました!
やったー、やったー、不具合が1つ解消できました:lol:
AppInventor:ActiveStaterのメール送信にレコード数の壁は無かった!

ついでなので実験継続。
「コーンの壁」が無くなれば、果たして何行までGmailの本文に棚卸データを挿入出来るんだろう?

と言うことで書出ソースのSQL文を書換え、商品マスタを棚卸データに見立てて書出し実験を継続。
すると300行付近でまた切り捨てが発生!

あれ、意外に早い限界なのね・・・・・・😮

その箇所を調べると今度は半角シャープ#でした!

なるほど、シャープ#でもActiveStarterは止まっちゃうのね!
そこでVBAプログラムを再修正。
商品名半角変換部分を、Replace(変換後の商品名,”#”,”#”)でもうひと囲いしました。

bulk insertファイルを再生成し、アプリへ再インポートし実験再開。

結果は8400行までは挿入できました:-D

それ以上だと、一瞬Gmailアプリ立ち上がりますが、直ぐにクラッシュ!
きっと、最大挿入数はスマートフォンの性能に依存するのでは?
ちなみに僕のスマホは白ロム「GALAXY-J」。
性能は中の上くらいでは・・・・・
それともGmail本文の最大文字数の制約があるのかな?

まぁ、8400行のデータが送れたら実質、実務には支障は出ません。

やれやれ、困っていた問題が一つ解決できました:-D
誰も聞ける人が居なく、作り方を書いた本もほとんど無いAppInventor2の実務アプリ開発。
これからも一人で右往左往しながら完成度を上げて行かねば!

でも、AppInventor2(=Ai2LiveComplete)のアプリ開発はすごく楽しい!
文字をたくさん書くJAVAと違い、ブロックの組み合わせだけでそこそこ複雑なアプリがガンガン形になっていくのがとても面白い:lol:

ちなみに、全角の商品名の英数文字を半角に変換していた理由は、商品検索機能の為。Androidスマホの日本語入力で現れる予測単語は半角が先に表示されるからです。
AppInventor:ActiveStaterのメール送信にレコード数の壁は無かった!

(94 views)

コメントを残す

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