Для решения простых задач достаточно декларативно задать объекты данных в Мастерах-построителях или в Палитрах свойств объектов Формы. Если бы на этом возможности 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  и иже с ними налицо. Впрочем это все уже можно прочитать в Интернете. Я же хотел дать зацепки для поиска нужных моментов. Пока.

От Apa Pacy