0

Open Office Base で基本的に更新クエリを作成したい (Ms ACCESS と同じ方法)。

4

1 に答える 1

3

Base は通常、更新クエリを使用しません(ただし、以下を参照してください)。代わりに、更新コマンドを実行する最も簡単な方法は、[ツール] -> [SQL] に移動することです。次のような内容を入力して、 を押しExecuteます。

UPDATE "Table1" SET "Value" = 'BBB' WHERE ID = 0

もう 1 つの方法は、マクロを使用してコマンドを実行することです。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. 次のようなコマンドを入力します。
    update mytable set mycolumn = 'This is some text.' where ID = 59;
  1. ヒット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 に答える