如何从基本 libreOffice 中的表单中获取字段值?
How to get the field values from the forms in base libreOffice?
部分代码
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
当我运行宏时,运行弹出时间错误
property or method not found: getByName
我整天都在寻找解决方案。我遇到了连接到 xray 工具或加载 access2base 库等建议,但我无法做到。但我不知道,为什么这是一项如此艰巨的任务。
我是 LibreOffice Basic 编程和一般数据库的新手。
以下代码仅获取表单文档定义,而不是打开的表单,如 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/ 所述。
比从控件获取值更优雅的方法是从表单记录集中读取列,如
中所述
But I do not know, why this is such a difficult task.
数据库无论如何都很难使用,学习编写 LibreOffice Base 宏是出了名的困难。然而,只要付出足够的努力,Base 就能让很多事情成为可能。
I came across suggestions like connecting to xray tool.
是的,在开发 LibreOffice 宏时,像 XrayTool 或 MRI 这样的内省工具是必不可少的。
部分代码
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
当我运行宏时,运行弹出时间错误
property or method not found: getByName
我整天都在寻找解决方案。我遇到了连接到 xray 工具或加载 access2base 库等建议,但我无法做到。但我不知道,为什么这是一项如此艰巨的任务。
我是 LibreOffice Basic 编程和一般数据库的新手。
以下代码仅获取表单文档定义,而不是打开的表单,如 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/ 所述。
比从控件获取值更优雅的方法是从表单记录集中读取列,如
But I do not know, why this is such a difficult task.
数据库无论如何都很难使用,学习编写 LibreOffice Base 宏是出了名的困难。然而,只要付出足够的努力,Base 就能让很多事情成为可能。
I came across suggestions like connecting to xray tool.
是的,在开发 LibreOffice 宏时,像 XrayTool 或 MRI 这样的内省工具是必不可少的。