Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Май 2017, 00:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Управление транзакциями из StarBasic в LibreOffice  (Прочитано 446 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ost
Пользователь
**
Offline Offline

Сообщений: 60


« Стартовое сообщение: 1 Май 2017, 17:35 »

Доброго.
Я так понял, что для начала транзакции следует установить свойство autocommit объекта  oConnection в состояние false.
После чего все sql-команды до явного выполнения oConnection.commit() будут выполнены в одной транзакции.
Выполнение кода вызывает ошибку  "This call is not allowed when sharing connections.." на строке "oConnection.setAutoCommit(false)"
Растолкуйте, пож., в чем проблема. О каком совместном использовании подключений идет речь?
Код:
Function _ConnectToDataBase(dbName as String) as Object
'===Функция подключения к Базе данных
'dbName - Полный путь к базе данных (раширение .odb обзяательно) в формате URLconvertToURL
Dim dbContext As Object, oDataSource As Object
dbContext=createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=dbContext.getByName(dbName)
oConnection=oDataSource.GetConnection("","")
oConnection.setAutoCommit(false)
_ConnectToDataBase=oConnection
End Function
« Последнее редактирование: 1 Май 2017, 18:56 от ost » Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 520


« Ответ #1: 2 Май 2017, 08:08 »

Диагностические сообщения в Base - это особая песня. Тут видимо oConnection просто не поддерживает такой параметр setAutoCommit, а называет "наиболее вероятную" причину.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
ost
Пользователь
**
Offline Offline

Сообщений: 60


« Ответ #2: 5 Май 2017, 15:48 »

=(. Если я все правильно понял, то поддерживает http://www.openoffice.org/api/docs/common/ref/com/sun/star/sdbc/XConnection.html#setAutoCommit
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 520


« Ответ #3: 7 Май 2017, 10:32 »

А какая СУБД (движок) используется?
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
ost
Пользователь
**
Offline Offline

Сообщений: 60


« Ответ #4: 11 Май 2017, 09:06 »

SQLite. Доступ к ней через LO Base (ODBC)
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 520


« Ответ #5: 15 Май 2017, 12:32 »

В случае с SQLite - Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK.

То есть включать его не нужно. Более того, отключение его - зело повышает производительность почти любых запросов, и особенно вставку и обновление данных, особенно малопользовательскую, по LAN. Ведь SQLite - однофайловая БД, в которой внутренняя адресация идет по "смещениям", а COMMIT означает запись файла на диск (или журнала). Не нужен вам Autocommit, если база не IN-MEMORY.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!