WinでもMacでもLinuxでも使えるLibreOfficeです。BaseをMySQLのフロントエンド(JDBC経由)として使っています。フォームにボタンを配置してmacroを与えて便利に使えるはずなのですが、プログラミングの技がない…
日付け毎に対処すべき顧客をリストアップした表形式のフォームAがあって、アイテム行をクリックしたあと設置したボタンを押せば、その顧客の詳細がわかるフォームBに遷移するマクロが欲しかった。最初はサブフォームを使おうとしたが、right join のためか、レコードの編集はできないようで、編集用フォームを使わざるを得ない。
Chat GPTに「表形式のFormAのレコード値を参照してFormBの当該レコードを表示するLibreOfficeのマクロを教えてください」ときいてみた。
Sub ShowSelectedRecordInFormB
Dim oFormA As Object
Dim oFormB As Object
Dim oDocument As Object
Dim recordID As Variant
Dim selectedRow As Integer
' 現在のドキュメントを取得
oDocument = ThisDatabaseDocument
' FormAのインスタンスを取得
oFormA = oDocument.FormDocuments.getByName("FormA").getForm()
' 選択された行を取得
selectedRow = oFormA.getSelectedIndex()
' 選択された行から主キーを取得
recordID = oFormA.getByName("ID").Value ' フィールド名を変更
' FormBを開く
oFormB = oDocument.FormDocuments.getByName("FormB").getForm()
' フィルタを設定して該当レコードを表示
oFormB.Filter = "ID = " & recordID ' フィールド名を変更
oFormB.FilterRecords()
' FormBを表示
oFormB.open()
End Sub
ふむふむ、便利になったものだ
