如何使用Open Office Base创建更新查询?

时间:2016-01-01 21:25:18

标签: openoffice.org openoffice-base

我想基本上在Open Office Base上创建一个更新查询(与ACCESS女士相同)。

1 个答案:

答案 0 :(得分:3)

Base通常不使用update queries(但请参见下文)。相反,执行更新命令的最简单方法是转到工具 - > 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。

  1. 在“查询”部分中,Create Query in SQL View
  2. 点击工具栏按钮至Run SQL Command directly
  3. 输入如下命令:
  4.     update mytable set mycolumn = 'This is some text.' where ID = 59;
    
    1. 点击 F5 运行查询。
    2. 它给出了The data content could not be loaded的错误,但它仍然执行更新并更改数据。要消除错误,命令需要return a value。例如,我在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')
      

      另见: