こちらのサイトを参考にしてサンプルコードをコピペして名称を変更して実行してみた。
http://itref.fc2web.com/openoffice/basic/base.html
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("DataBaseFile")
Connection = DataSource.getConnection("", "")
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("select * from Table")
If IsNull(ResultSet) Then
MsgBox "検索されたレコード件数が0件"
Else
While ResultSet.next
sValue1 = ResultSet.getString(1)
sValue2 = ResultSet.getLong(2)
Wend
End If
Statement.Close()
Connection.Close()
Connection.Dispose()
案の定エラーが発生。
エラーメッセージはステートメントにあるテーブルが見つからないとのこと。
テーブルが見つからないということは登録してあるデータベースへのアクセスはできているようだ。
なら登録してあるデータベースを Base を起動して確認してみると該当のテーブルは作成済みである。
んー。
もしやと思いテーブル名称 Table を TestTable へ変更した。もちろん Basic 側も変更した。
そして実行すると先ほどのエラーメッセージではなくて違うエラーメッセージが表示された。
今度のエラーはテーブルから取得したデータは文字列だけどステートメントは整数になっているから data type が違うって言ってる。
なので sValue2 = ResultSet.getString(2) にしてあげれば解決。
あっけないくらいに Basic からデータベースへアクセスできるようになった。
OpenOffice のオプションからデータベースの登録作業は必要ではあるがドライバのインストールが不要なのは良いことだ。
次はテーブルから取得したデータを指定したセルへ入れたり次のレコードを読んだり出来るようにしてみよう。
そういえばデータベースファイルはローカルを指定しているがネットワークドライブ越しのデータベースファイルを指定することは可能なのだろうか。
気になる気になる。
0 件のコメント:
コメントを投稿