Для решения простых задач достаточно декларативно задать объекты данных в
Мастерах-построителях или в
Палитрах свойств объектов
Формы. Если бы на этом возможности
OpenOffice заканчивались, то кроме игр с данными ему сложно было бы найти применение. Вспоминаю сколько раз я раскрывал
Star/OpenOffice, создавал подключение к серверу баз данных и с грустью закрывал, полистав весьма скудный (и до сих пор это так)
Help.
Но время не стоит на месте. В Интернете начала накапливаться полезная информация о макросах
OpenOffice и вот мы здесь.
Для начала работы следует получить объект
Connection. Его можно получить несколькими способами. В частности из свойства
ActiveConnection объекта
Form или по символическому имени
DataSource, которое можно задавать из
Главного меню|OpenOffice Tools|Options|OpenOffice.org Base|Databases. Если вынести функцию
GetConnection в скрипт из раздела
My Macros, всегда будет достаточно изменить код ровно в одном месте чтобы измененить подключение.
Function GetConnection() As Variant
Dim DataSource As Variant
Dim Connection As Variant
DatabaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.GetByName("sourcename")
GetConnection = DataSource.GetConnection()
End Function
Получив
Connection надо создать
Satement или
PreparedStatement.
oStatement = GetConnection().CreateStatement
oResultSet = Statement.ExecuteQuery("select * from ...")
lCount = Statement.ExecuteUpdate("update ...")
Теперь особое предупреждение для любителей строить запросы конкатенацией строк. Не забудем, что
OpenOffice является офисным приложением. Поэтому при переводе чисел с точкой в строку десятичная точка превращается... превращается ... правильно - в десятичную запятую, что скорее всего откажется воспринять ваш сервер баз данных. Для такого случая удобно воспользоваться параметрическим запросом.
pStatement = GetConnection().PrepareStatement("update ... set ... = ? where ... = ?")
pStatement.SetDouble(1, 123.456)
pStatement.SetString(2, "789" )
' pStatement.ExecuteQuery
pStatement.ExecuteUpdate
Объект
ResultSet, полученный в результате запроса поддерживает удобную (привычную) навигацию и может быть изменяемым. То есть все плюшки, известные по
ODBC/JDBC/DAO/ADO и иже с ними налицо. Впрочем это все уже можно прочитать в Интернете. Я же хотел дать зацепки для поиска нужных моментов. Пока.