【libreOffice base】呼び出した先のフォームに、親画面の情報を引き継ぎたい。

libreOffice6.4.3.2 baseを利用しています。

マクロにて取得した「フォーム1」のテキストボックスの値を、「フォーム2」のテキストボックスに入力する方法がわかりません。

「フォーム1」に表示されているテキストボックス(中身はidで主キー)を、
マクロのOpen(id)で開いた次の「フォーム2」に引き継ぎたいのですが、
方法がよくわかりません。

具体的なやりたいことは、
利用者ID(主キー)と利用者情報を入力する親画面から呼び出された子画面で、
利用者ID(外部キー)に紐づく情報を入力していく画面遷移を作りたいのです。

初歩的なことで申し訳有りません。
方法がわかる資料へのURLでも構いませんのでご教授いただければ幸いです。

<現在のソースコード>

Dim userid as String
Dim oForm1 as Object
Dim oForm2 as Object
Dim oTxtControl as Object

'親画面のUserIDの取得
oForm1 = ThisComponent.getDrawPage().getForms().getByName("01_UserInfo")
userid = oForm1.getByName("fmtUSERID").Text)

'子画面へUserIDを入力
oForm2 = ThisComponent.getDrawPage().getForms().getByName("03_AgreeInfo") 
                             '↑ここでNoSuchエラー。子画面のテキストボックスにUserIDを入れたい
   oForm2.????????????????.text = userid

こんなソースコード書いてみました。

REM  事前にデータベースペインから「テーブル」を選択するなりフォームを一度開くなどしてデータベースを認識させておかないと以下のエラーになる
REM Type: com.sun.star.lang.WrappedTargetException
REM Message: 
REM TargetException:
REM Type: com.sun.star.sdbc.SQLException
REM Message: [OOoBase] データベースへの接続がありません。。

Option Explicit

Sub Main
    Dim form1def As Object
    Dim form2def As Object
    Dim form1 As Object
    Dim form2 As Object
    
    REM DocumentDefinitionになっているのは、EmbeddedObjectとして格納するため。

    form1def = ThisDatabaseDocument.FormDocuments.getByName("FormA")
    form2def = ThisDatabaseDocument.FormDocuments.getByName("FormB")
    
    form1def.Open
    form2def.Open
    Wait 500
    
    form1 = form1def.Component.Drawpage.Forms.getByName("Form1")
    form2 = form2def.Component.Drawpage.Forms.getByName("Form2")
    
    REM コミットはされない
    form1.getByName("TextBox1").Text = form2.getByName("TextBox1").Text
End Sub

差別化のために、FormAやFormBに変更。
データベースペインで「フォーム」を選んだとき、右下「フォーム」に並ぶときの名前がこれら。右クリックした時に名前を変更できる。

これとは別に、FormAやFormBを編集するとき、「フォームのプロパティ」から編集したのがForm1とForm2

必須ではないものの、念の為英語版の表記を用い、スペースを取り除きました。好みの問題で。

ありがとうございます!
親画面のデータが子画面に引き継げました!!

FormAという画面名で取得したオブジェクトから、
更にForm1というフォーム名でフォームを取得し、
そこからgetByNameでフォームに配置されたテキストオブジェクトにアクセスするのですね。

とてもわかり易かったです!

お尋ねの件についての回答にはなっていませんしマクロモジュールでもありません事をご了承ください。

お尋ねの件で「サブフォーム」は検討されましたでしょうか?

例えば、下記のような条件でDBを作成されていると仮定して
利用者テーブルのID(主キー)と利用者明細テーブルの外部キーをセットするのであれば
「サブフォーム」を使うことで対応できると思ったのです。

利用者テーブル・・・利用者情報(氏名・住所など)

利用明細テーブル・・・利用したサービス明細を登録していく(利用サービスの種類や内容など、あるいはサービス購入内訳など)

利用者テーブルをベースに作成したフォーム内に利用者明細テーブルを入力するサブフォームをセットすることで
利用者テーブルの主キーを利用者明細テーブルの外部キーにセットできると思います。

サブフォームの作り方
JA福岡市のBASEマニュアル:HSQLDB用ですので画面が多少違うと思います

  1. 既にサブフォームがあるフォームに、さらにサブフォームを追加する …6

  2. ウィザードを使わないでサブフォームを作るには? …10

WEB上で

Libreoffice BASE サブフォーム

Openoffice BASE サブフォーム

で検索するといろんな事例が出てくると思います。

必ずしも別々にフォームを立ち上げての処理が必要無いのであれば、サブフォームもお試しください。

丁寧なご説明と対応案、ありがとうございます。
一画面で複数のテーブルの情報を表示して、INSERTやUPDATEをするということですね。
わかりました、やってみます!

後日、結果を投稿いたします。