さまよう大アリクイ

横浜市に住む。ホームページを作っていたりするが、最近滞り気味。

OpenOfficeのプログラミング:Baseのフォームのマクロで、データベースを操作する。

OpenOffice BASICで、データベースと接続して操作(SQLの実行)ができます。Baseから起動するフォームでは既にデータベースと接続済みなので、その接続を利用できそうです。

ネットで調べるt、ThisComponentからフォームオブジェクトを得る方法はわかります。さらにDbg_Propertiesの手法で探っていったら、ActiveConnectionというプロパティがデータベースとの接続でした。サンプルプログラムを作って見ました。

Sub Test

Dim oDoc As Object

Dim oForm As Object

Dim Connection As Object

Dim Statement As Object

Dim ResultSet As Object

' フォームオブジェクト取得

oDoc = ThisComponent

oForm = oDoc.getDrawPage().getForms().getByName("MainForm")

' コネクションの取得

Connection = oForm.ActiveConnection

' SQLの実行

Statement = Connection.createStatement()

ResultSet = Statement.executeQuery("SELECT ""ほげ"" FROM ""ほげテーブル""")

' 実行結果表示

If Not IsNull(ResultSet) Then

While ResultSet.next

MsgBox ResultSet.getString(1)

Wend

End If

' SQLを閉じる

ResultSet.Close()

Statement.Close()

End Sub

赤字部分がデータベースに対するSQLのSELECT文です。

フィールド名やテーブル名はダブルクオートで囲む必要があります。

BASICの文字列中にダブルクオートを入れるので、ダブルクオートが二重になって読みづらいです。