OpenOffice Base の憂鬱

とある理由から OpenOffice の Base を使うようになりました。4,5年前、初めて Base を使った時には、データベースとして使うというよりはデータベースに対するユーザインタフェースとしてBaseを使いました。ODBC接続の場合はどこまでできるのか、JDBC接続の場合はどこまでできるのか、等を調べました。まぁ、そこそこ使えるなぁ、が結論だったのですが、今回はデータベースとしての使用。本当はMicrosoft Accessを使用したかったのですが、Office Standardの環境ということでAccessは無し。仕方ないのでOpenOffice Baseを使用。使い始めてすぐにわかりましたが、まだまだAccess並みには使えないなぁ、が感想です。
まず、インポート機能が無い。以前の経験でODBC/JDBCでリモートデータベースにアクセスすることは可能、ということはわかっていたのでインポートくらいはできるだろう、と思っていたのですが、これが出来ません。インターネットを検索したら私と同じ悩みを持った人からの質問も多く、私がその機能を見つけられなかったのではなく、そもそも無いようです。すでにODBC/JDBCインタフェースを持っているのに、なぜ、インポート機能が無いのかなぁ?
仕方ないので、まずはコピペや手入力等でテストができる程度のレコードを入力。テーブルやクエリを作り、テーブルへのレコード入力やクエリでの検索、表示をやっていると、納得できないエラーが頻発。いろいろやってみると、テーブルを作ってレコード入力を行い、スキーマを変えたりするとエラーが出るような気がしています。ただ、いったん、Baseをクローズして再起動すると、先ほどのエラーが発生しなくなったりします。メモリ上の情報とファイルの情報の間に不整合でもあるのでしょうか。
そういうことではなく、根本的になんだかなー、と思ったのはテーブル名の変更。テーブルを作成し、レコードを追加し、そしてテーブル名を変更してクローズ。すると、そのテーブルを開こうとするとエラーとなります。これはBaseを再起動しても現象は変わらずですが、ワークアラウンドはわかりました (環境は現時点での最新の OpenOffice.org 3.3.0 OOO330m20 (Buil:9567))。
例えばテーブル TBL1 を作成し (主キーだけのテーブルでもOK)、いくつかレコードをINSERTします。TBL1を閉じて再び開くと、この時は開くことができます。開いたままで、例えばBaseのGUI上で逆順にソートしてテーブルを閉じて、これもBaseのGUI上でテーブル名を例えばTBL2に変更します。そしてTBL2を開くと、以下のようなエラーとなります。

つまり、テーブルをBaseのGUIで開く時は、SELECT * FROM を実行しているのですが、表示をソートしておくとそれが記録されてしまうようです。記録されるのはいいのですが、テーブル名を変更しても、ORDER BY のカラム指定のテーブル名は変更されず古いテーブル名が残っったままなので、テーブルを開く際にエラーになるというものです。テーブル名を変更した際に、ORDER BY のところも直してくれよ、と言いたいところですが、こうなった場合、まずはエラーのダイアログに対して [OK] ボタンを押し、真っ白になったBaseのGUIで、ジョーロに×のアイコンをクリックして、ソートをしないようにします。すると、表示されるようになります。

こういう細かいところを1つ1つつぶしていかないと、Accessの代用としてBaseを使うところまではいかないのでしょう。