Как создать запрос на обновление с Open Office Base?
Я хочу создать в основном запрос на обновление в Open Office Base (так же, как и с Ms ACCESS).
1 ответ
База обычно не использует запросы на обновление (но см. Ниже). Вместо этого самый простой способ выполнить команду обновления - перейти в Сервис -> 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')
Смотрите также: