Для решения простых задач достаточно декларативно задать объекты данных в Мастерах-построителях или в Палитрах свойств объектов Формы. Если бы на этом возможности OpenOffice заканчивались, то кроме игр с данными ему сложно было бы найти применение. Вспоминаю сколько раз я раскрывал Star/OpenOffice, создавал подключение к серверу баз данных и с грустью закрывал, полистав весьма скудный (и до сих пор это так) Help.
Но время не стоит на месте. В Интернете начала накапливаться полезная информация о макросах OpenOffice и вот мы здесь.
Для начала работы следует получить объект Connection. Его можно получить несколькими способами. В частности из свойства ActiveConnection объекта Form или по символическому имени DataSource, которое можно задавать из Главного меню|OpenOffice Tools|Options|OpenOffice.org Base|Databases. Если вынести функцию GetConnection в скрипт из раздела My Macros, всегда будет достаточно изменить код ровно в одном месте чтобы измененить подключение.
Получив Connection надо создать Satement или PreparedStatement.
Теперь особое предупреждение для любителей строить запросы конкатенацией строк. Не забудем, что OpenOffice является офисным приложением. Поэтому при переводе чисел с точкой в строку десятичная точка превращается... превращается ... правильно - в десятичную запятую, что скорее всего откажется воспринять ваш сервер баз данных. Для такого случая удобно воспользоваться параметрическим запросом.
Объект ResultSet, полученный в результате запроса поддерживает удобную (привычную) навигацию и может быть изменяемым. То есть все плюшки, известные по ODBC/JDBC/DAO/ADO и иже с ними налицо. Впрочем это все уже можно прочитать в Интернете. Я же хотел дать зацепки для поиска нужных моментов. Пока.
Но время не стоит на месте. В Интернете начала накапливаться полезная информация о макросах 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 и иже с ними налицо. Впрочем это все уже можно прочитать в Интернете. Я же хотел дать зацепки для поиска нужных моментов. Пока.
Комментариев нет:
Отправить комментарий