コードの一部
dim oMainForm as object
dim oColumnList as object
dim theValue as variant
oMainForm = ThisDatabaseDocument.FormDocuments.getByName("update_rform")
oColumnList = oMainForm.getByName("rid") #rid is the name of the field from which I need to get the value
theValue=oColumnList.getCurrentValue()
rid=theValue
マクロを実行すると、実行時エラーがポップアップします
プロパティまたはメソッドが見つかりません:getByName
私は一日中解決策を探していました。X線ツールへの接続やaccess2baseライブラリのロードなどの提案に出くわしましたが、できませんでした。しかし、なぜこれがそんなに難しい仕事なのか、私にはわかりません。
私はLibreOfficeBasicプログラミング、およびデータベース全般に不慣れです。
次のコードは、https://ask.libreoffice.org/en/question/63260/how-to-access-to-the-controls-of-a-で説明されているように、オープンフォームではなく、フォームドキュメント定義のみを取得します。 base-form-with-basic /?answer = 63280#post-id-63280。
ThisDatabaseDocument.FormDocuments.getByName()
正しい解決策は、マクロがどのように呼び出されるかによって異なります。たとえば、フォームを開く前にメインのベース画面から呼び出すことができるコードを次に示します。コードの一部はhttps://ask.libreoffice.org/en/question/7555/open-form-via-macro-in-libreoffice-base/からのものです。
Sub getFormVal
form_container = ThisDatabaseDocument.FormDocuments.getByName("update_rform")
form_container.open()
Wait 500
oMainForm = form_container.Component.getDrawPage().getForms().getByIndex(0)
oControl = oMainForm.getByName("rid")
theValue = oControl.getCurrentValue()
MsgBox theValue
End Sub
以下の場合ThisDatabaseDocument
で説明したように仕事に、コードではなく、私のマクロの下に、文書でなければなりませんhttps://ask.libreoffice.org/en/question/94670/thisdatabasedocument-vs-thiscomponent/。
https://stackoverflow.com/a/39770933/5100564で説明されているように、コントロールから値を取得するよりも洗練されたアプローチは、フォームレコードセットから列を読み取ることです。
しかし、なぜこれがそんなに難しい仕事なのか、私にはわかりません。
とにかくデータベースの操作は難しい場合があり、LibreOfficeBaseマクロの作成方法を学ぶのは非常に難しいことで有名です。しかし、十分な努力を払えば、Baseは多くのことを可能にします。
X線ツールへの接続などの提案に出くわしました。
はい、LibreOfficeマクロを開発する際には、XrayToolやMRIなどのイントロスペクションツールが不可欠です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加