Название: не работают транзакции в MS Access Отправлено: mokynis от Сентябрь 08, 2016, 08:46 при входе в программу производится подключение к базе access
Код: QSqlDatabase my_db = QSqlDatabase::addDatabase("QODBC3","my_conn"); Код: SqlQuery qry(QSqlDatabase::database("my_conn")); Access 2003. Qt 4.6 Название: Re: не работают транзакции в MS Access Отправлено: Aleksey_A от Сентябрь 08, 2016, 15:16 А у Access есть поддержка транзакций? Из оф.документации Qt:
Цитировать bool QSqlDatabase::rollback() Rolls back a transaction on the database, if the driver supports transactions and a transaction() has been started. И у вас написано: QSqlDatabase::database("lit_conn").transaction(); А коммит/роллбек: QSqlDatabase::database("my_conn").rollback(); Старт транзакции и коммит/откат идут на разные соединения. Название: Re: не работают транзакции в MS Access Отправлено: mokynis от Сентябрь 08, 2016, 16:06 насчет соединения-это я недоизменил реальный код. Я ж написал, что
Цитировать Делаю примерно так: насчет транзакция сам сомневаюсь, но MS help пишет:Цитировать Инструкция TRANSACTION Справка правда, MS и соврать может (сколько раз уже сталкивался...). Я бы с этим Access'ом с удовольствием дел не имел, но приходится. Честно говоря, ни разу никакая транзакция там не удавалась (хоть через ODBC, хоть напрямую из самого Accesss'а), но в инете пишут, что вроде, работает... Помощь > Access 2003 > Создание баз данных и объектов и работа с ними > Объекты баз данных > Работа с запросами > Справка по языку Microsoft Jet SQL > Язык управления данными Используется, чтобы начинать и завершать явные операции. Синтаксис Начало новой операции BEGIN TRANSACTION Завершение операции с возвращением результата, полученного во время операции. COMMIT [TRANSACTION | WORK] Завершение операции с возвращением результата, полученного во время операции. ROLLBACK [TRANSACTION | WORK] Название: Re: не работают транзакции в MS Access Отправлено: Aleksey_A от Сентябрь 08, 2016, 21:26 Тогда может быть попробовать не через
Код: QSqlDatabase::database("ххх").transaction(); Код: QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3","my_conn"); Название: Re: не работают транзакции в MS Access Отправлено: mokynis от Сентябрь 09, 2016, 12:39 ответили мне на forum.sources.ru. Ответ очень похож на мой собственный опыт работы с Access
Цитировать Транзакции в MS Access - это не транзакции в том смысле, в каком их интерпретируют "нормальные" SQL-серверы, а просто эмуляция - снапшот + UNDO-буфер. Работают ТОЛЬКО из среды MS Access и ТОЛЬКО с таблицами в текущей БД - т.е. ни со связанными таблицами, ни с обновляемыми запросами не работают (хотя и обрабатываются синтаксически - ошибок не возникает). может, кому поможет. Хотя другого такого психа, как я, наверное, не будет ;D |