问题描述
我制作了一个宏来获取有关用户的信息以自动填充两个字段,姓名和姓氏。它工作并显示字段中的信息。在我的表单中,它们都链接到数据库中的一个字段。我的问题是,当我保存表单时,写入这两个字段的数据不会存储在数据库中。我是否必须在我的宏中做一些特别的事情来让表单知道该字段实际上不是空的?
这是宏
Sub getMotherFirstName
Dim oFormDocs,oCallFormDoc,oForm,oComponent as object
Dim valueData As String
oForm =thisComponent.Parent.FormDocuments
rem ThisComponent.Drawpage.Forms.getByName("Form").getByName("Boxtest").Text = "hey you "
rem valueData = ThisComponent.Drawpage.Forms.getByName("HomeForm").getByName("Boxtest").getCurrentValue()
if oForm.HasByName("F_HOME") then
oForm = oForm.getByName("F_HOME")
valueData = oForm.Component.DrawPage.Forms.getByName("HomeForm").getByName("prenom_Box").getCurrentValue()
ThisComponent.Drawpage.Forms.getByName("Form").getByName("prenomMere").Text = valueData
getMotherLastName
End if
End Sub
解决方法
这是您在 https://ask.libreoffice.org/en/question/316923/why-filled-field-with-macro-doesnt-stock-in-database/ 接受的答案的副本。
您必须 .commit() 将更改的字段添加到表单中。一个 updateRow() 将当前(更改的)行存储到数据库中。
如果您的更改可能导致其他更改,可能是过滤器或 您可以考虑 field.refresh() 或/和 .reload() 的子表单 形式。
(Base 的手册中有描述,但我只有德文 版本在这里,所以我只能建议搜索有关宏的章节 以您的语言使用上述功能。)
注意:我已经阅读了诸如 https://meta.stackexchange.com/questions/4708/what-to-do-with-cross-site-duplicates 之类的说明,但仍然不太清楚如何正确处理此类交叉发布。有一点很清楚:下个月,当 Ask 站点消失时,一个简单的链接可能会中断,从而使信息无法访问。所以我复制了信息。