Товарищи, подскажите как из БД (odb) макросом (запросом) выбрать значения...

Автор ivamartynov, 10 октября 2015, 10:31

0 Пользователи и 1 гость просматривают эту тему.

ivamartynov

Есть созданная БД (odb как связь с таблицами ods). В ней таблица содержит рег.номера организаций и данные по ним.
Необходимо запросом ч/з макрос выбрать все значения по рег.номеру и вставить их на лист новой ods таблицы:

'подключение к базе
Function ConnectToDataBase(dbName as String) as Object
Dim dbContext As Object, oDataSource As Object
dbContext=createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=dbContext.getByName(dbName)
ConnectToDataBase=oDataSource.GetConnection("","")
End Function

Sub FNS
sht = ThisComponent.Sheets.GetByName("IN")
REG1 = sht.getCellByPosition(1,4).Value
DB = ConnectToDataBase("TEMP_IP_3000") 'имя базы
Statement = DB.createStatement()
   ResultSet = Statement.executeQuery( _____________________ ) 'вот тут нужно из таблицы PLAT выбрать все значения по REG1 и вставить все полученные значения в ячейки листа IN
        .....
   If Not IsNull(ResultSet) Then
   While ResultSet.next
   sht.getCellByPosition(1,1).Formula = ResultSet.GetString(1)
   sht.getCellByPosition(1,2).Formula = ResultSet.GetString(2)
        .....
   Wend
   End If
DB.Close()
End Sub

rami

Цитата: ivamartynov от 10 октября 2015, 08:31Необходимо запросом ч/з макрос выбрать все значения по рег.номеру и вставить их на лист новой ods таблицы
Написать макрос не проблема, но если в предыдущем случае макрос не сработал, то и в этом будет так же. В запросе ниже нужно задать "имя столбца для сравнения"
Sub FNS
sht = ThisComponent.Sheets.GetByName("IN")
REG1 = sht.getCellByPosition(1,4).Value
DB = ConnectToDataBase("TEMP_IP_3000") 'имя базы
Statement = DB.createStatement()
   ResultSet=Statement.executeQuery("SELECT * FROM ""PLAT"" WHERE ""имя столбца для сравнения"" = " & REG1)
   If Not IsNull(ResultSet) Then
   While ResultSet.next
   sht.getCellByPosition(1,1+i).Formula = ResultSet.GetString(1)   'первый столбец
   sht.getCellByPosition(2,1+i).Formula = ResultSet.GetString(2)   'второй столбец
   'если нужно добавить ещё столбцов
   i=i+1
   Wend
   End If
DB.Close()
End Sub