我在Libreoffice Base中有一个连接到“Songs”表格(basicaly db of music)的表格,我想要做的是每次检查/取消选中CheckBox表单我希望字段“播放”每个记录具有相同的名称和作者作为我目前在表单上的那个被选中/取消选中。我已经读过这样做的唯一方法是使用宏(因为我不想使用关系,因为我现在有很多记录)。我写这样一个宏:使用宏表格中的数据更新数据库表格
Sub UpdatePlayed()
Context = CreateUnoService("com.sun.star.sdb.DatabaseContext")
databaseURLOrRegisteredName = "file:///C:/Users/grzes/Desktop/Muzyka.odb"
Db = Context.getByName(databaseURLOrRegisteredName)
Conn = Db.getConnection("","") 'username & password pair - HSQL default blank
dCheckBox = Forms("Formularz").Controls("CheckBox").Value
dAuthorBox = Forms("Formularz").Controls("AuthorBox").Value
dTitleBox = Forms("Formularz").Controls("TitleBox").Value
Stmt = Conn.createStatement()
strSQL = "UPDATE ""Songs"" SET ""Played"" = " + dCheckBox + " WHERE ""Title"" = '" + dTitle + "' AND ""Author"" = '" + dAuthor + "'"
Stmt.executeUpdate(strSQL)
Conn.close()
End Sub
(AuthorBox和TitleBox是文本框和CheckBox是一个复选框与托运设置为1,未选中为0),但没有任何反应执行宏时(绑定为按下鼠标按钮事件到复选框本身)
我敢肯定,如果执行SQL查询的方式与另一个宏一样正确,我也可以毫无问题地使用它,因此问题必须是设置变量dcheckbox,dauthorbox和dtitlebox,或者与strSQL。 (宏本身正在运行,因为当我更改控件名称时出现错误)。所以问题是:它有什么不对?
什么是数据库引擎 - 内置的HSQL 1.8? –
我不确定什么版本,但肯定HSQL。 Libre办公室版本是5.2.2 –
好的,还有一个问题:表中的“玩过”字段类型是什么? –