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

Форум Libreoffice

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

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

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



Репутация: 0    

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

СообщениеДобавлено: Пн Май 28, 2012 8:57 am    Заголовок сообщения: Копирование данных из CALC в BASE Ответить с цитатой

Копирование данных с листа CALC в таблицу BASE делается с помощью макроса, находящегося в документе CALC ("calc2base.ods", к примеру). Макрос имеет вид:
Код:
Sub insert_into_base
  Dim oRange as Object
  Dim oSheet as Object
  Dim sname as string
  Dim age as integer
  Dim r as Integer
  Dim rm as Integer
  Dim i as Integer
 
  oSheet = thisComponent.CurrentSelection.getSpreadsheet
  oRange = thisComponent.getCurrentSelection.getRangeAddress
 
  r = oRange.startRow
  rm =  oRange.EndRow

  db = connect_to_database("Test")   'Имя БД
  oStatement = db.createStatement

  For i=r To rm
   sname = oSheet.getCellByPosition(0, i).String
    age = oSheet.getCellByPosition(1, i).Value
 
    oSql = "insert into ""cases"" " & "(""NAME"",""AGE"") values " & "('" & sname & "', " & age & ")"
    oResult = oStatement.executeQuery(oSql)
  Next i
 
  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


Используемая база данных BASE "Test.odb" должна быть зарегистрирована и в ней должна быть создана таблица "cases" с нужными полями.
Для копирования данных открывать эту БД не нужно!
Для работы открыть нужно только книгу CALC с макросом.
Строки с нужными данными выделяются и запускается на выполнение макрос "insert_into_base".



Если открыть теперь БД "Test", то в таблице "cases" можно увидеть вставленные данные из CALC.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Calc Часовой пояс: GMT
Страница 1 из 1

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


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