Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
Копирование данных из BASE в CALC

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Base
Предыдущая тема :: Следующая тема  
Автор Сообщение
hasim



Репутация: 0    

Зарегистрирован: 28.05.2012
Сообщения: 32

СообщениеДобавлено: Вс Июл 29, 2012 12:29 pm    Заголовок сообщения: Копирование данных из BASE в CALC Ответить с цитатой

В разделе, посвящённом CALC, было описано Копирование данных из CALC в BASE
Обратная задача (Копирование данных из BASE в CALC) решается с помощью слегка изменённого макроса из вышеуказанной темы.
Нужная выборка данных из таблицы БД задаётся с помощью запроса oSql в теле макроса.
Код:
Sub read_from_base
  Dim oRange as Object
  Dim oSheet as Object
  Dim Zeni(0,0)
 
  oSheet = thisComponent.CurrentSelection.getSpreadsheet
  oRange = thisComponent.getCurrentSelection.getRangeAddress
 
  r = oRange.startRow
  rm =  oRange.EndRow

  db = connect_to_database("Test")
  oStatement = db.createStatement

  oSql = "SELECT ""cases"".""ID"" AS ""ID"", ""cases"".""NAME"" AS ""NAME"", ""cases"".""AGE"" AS ""AGE"" FROM ""cases"" WHERE ( ""cases"".""AGE"" <= 15 AND ""cases"".""AGE"" >= 10 ) ORDER BY ""cases"".""AGE"""

  oResult = oStatement.executeQuery(oSql)

  NumRows=oResult.getColumns.Count

n=0
    Do while oResult.Next
    n=n+1
    ReDim Preserve Zeni(n,NumRows)
     For nr=1 To NumRows
      Zeni(n,nr) =oResult.getString(nr)
    Next nr
   Loop
nmax=n

  For n=1 To nmax
   For col=1 To NumRows
   oSheet.getCellByPosition(col, n).String=Zeni(n,col)
   Next col
  Next n
 
  disconnect_from_database(db)
End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function connect_to_database (dbName as String) as Object
  Dim dbContext As Object
  Dim oDataSource As Object
  dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
  oDataSource = dbContext.getByName(dbName)
  connect_to_database = oDataSource.GetConnection("", "")
End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub disconnect_from_database (db as Object)
  db.close
  db.dispose()
End Sub


PS. Как и раньше, открывать файл БД (Test.odb) в Base не требуется, но эта БД должна быть зарегистрирована.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Base Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS