LibreOffice(Base)+LibreOffice BASIC
少々面倒な案件かも
いつもはMySQL+PHPとか多いんだけど、今回はネットワークに繋がらないマシンでも利用したい。しかも古めのPC。
でもって、同じ仕組みを合計で3台(3箇所)で使いたいが、データはすべて異なる。
複数のユーザが利用することはない。
う〜む、システム組むほどじゃないと思うんだけどなぁ。
XP上ではMS-Access97ベースで作成されたものを使用していたけれど、OSが変わると使えなくなるので、Helpとなったわけです。
しかも、現在はLibreOfficeがメインのOffice環境になっているため、新しいAccessとか新規に導入しできない。
前回テストしたら、この仕組みはAccess2013では全く動かない。
となると、Accessを導入しても、プログラムし直しか・・・。
そこで、LibreOfficeのBaseというDatabaseを利用して、構築することに。
一応ヒアリングして、不要と思われる機能はざっくり削除。
最低限の目的を達成できるレベルにスリム化する。
はじめはLAMPで構成しようと、作り始めんた(まぁ40%程度の作業完了だった)んだけど、帳票がはっきり決まっていないのと、ネットワークに繋ぎたくないという要望もあり、再度LibreOfficeで書き直すことにした。
100%作り込まずに、もともとのUIも使うという前提にすれば、自分たちで修正や編集ができるから、より便利なのでは?との思いもある。
テーブル定義して、Queryとフォームの作成。
これを、BASICで繋いでいく感じかな。
ところが、このLibreOffice BASICが慣れていないこともあり、よく分からない。
オブジェクト名とメソッド名を探すのに一苦労。
それでも、なんとか動作させて、最低限マスタ関連のデータの登録・修正が可能になってきた。
まぁこんな感じの画面ですわ…。
1:n 結合のデータもサブフォームを使えば、それほど面倒でもなくていい感じ。
リストボックスにデータを引っ張るのに、SQLを直接書けるのがありがたい。
突如エラーが発生
ところが何度もテストしていると・・・。
SQL ステータス: S1000
エラーコード: -29
なんてダイアログが出てくるようになった。
しかも、データは挿入されたりされなかったり。
詳細を確認すると
File input/output error: /Users/username/project/xyz/system.odb.log in statement [INSERT INTO "個人口座マスタ" ( "bank_id","kojin_id","kouza_kubun","kouza_number") VALUES ( ?,?,?,?)]
あれ? なんでinsertできない?
でも実際にはデータが入っている。
なんだかおかしい。
ググってみると、似たようなエラーの質問がけっこうある。
ここ読めよって事なので、ちゃんと目を通してみる。
https://forum.openoffice.org/en/forum/viewtopic.php?f=83&t=17567
すると、base内部のDBエンジン(HSQLDB)の問題の可能性がある。
(このまま使っていても大丈夫かなぁ?と思いつつも・・・)
まずは保存しろというので、指示に従い、LibreOfficeを終了する。
再起動して、ファイルを開き、フォームからテストしてみる。
エラーは発生しない。
どうやら、修正やらデータ変更やらしながら作業をするうちに、メモリを食いつぶしてしまい、最後にエラーを吐くようだ。
とりあえずは、正常に動作するようになった。
もし、HSQLDBが度々動作しなくなるなら、MySQLにDBを切り替えれば済む話なので、それほど困るわけではないが・・・。
面倒だなというのが本音。
もうしばらく、開発を続けて、様子を見ることにしますわ。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。