我想在 Open Office Base 上创建一个更新查询(与女士 ACCESS 相同)。
问问题
7966 次
1 回答
3
Base 通常不使用更新查询(但见下文)。相反,执行更新命令的最简单方法是转到工具 -> SQL。输入类似于以下内容的内容,然后按Execute
:
UPDATE "Table1" SET "Value" = 'BBB' WHERE ID = 0
另一种方法是使用宏运行命令。下面是一个使用 Basic 的示例:
Sub UpdateSQL
REM Run an SQL command on a table in LibreOffice Base
Context = CreateUnoService("com.sun.star.sdb.DatabaseContext")
databaseURLOrRegisteredName = "file:///C:/Users/JimStandard/Desktop/New Database.odb"
Db = Context.getByName(databaseURLOrRegisteredName )
Conn = Db.getConnection("","") 'username & password pair - HSQL default blank
Stmt = Conn.createStatement()
'strSQL = "INSERT INTO ""Table1"" (ID,""Value"") VALUES (3,'DDD')"
strSQL = "UPDATE ""Table1"" SET ""Value"" = 'CCC' WHERE ID = 0"
Stmt.executeUpdate(strSQL)
Conn.close()
End Sub
请注意,也可以使用表单或直接编辑表格来修改数据。
在某些情况下,可以创建更新查询。我无法让它与默认的内置 HSQLDB 1.8 引擎一起使用,但它可以与 MYSQL 一起使用。
- 在查询部分,
Create Query in SQL View
- 单击工具栏按钮即可
Run SQL Command directly
。 - 输入如下命令:
update mytable set mycolumn = 'This is some text.' where ID = 59;
- 点击F5运行查询。
它给出了一个错误The data content could not be loaded
,但它仍然执行更新并更改数据。为了摆脱错误,命令需要返回一个值。例如,我在 MYSQL 中创建了这个存储过程:
DELIMITER $$
CREATE PROCEDURE update_val
(
IN id_in INT,
IN newval_in VARCHAR(100)
)
BEGIN
UPDATE test_table SET value = newval_in WHERE id = id_in;
SELECT id, value FROM test_table WHERE id = id_in;
END
$$
DELIMITER ;
然后 LibreOffice Base 中的这个查询修改了数据而不给出任何错误:
CALL update_val(2,'HHH')
也可以看看:
于 2016-01-02T03:50:59.343 回答