07.07.2003, 08:14 | #1 |
Участник
|
Доступ через C/ODBC: Транзакции
Здравствуйте!
Я использую C/ODBC для доступа к БД Navision Attain и работаю с помощью ADO. Возникает непонятная ошибка, связанная с транзакциями. // Set ConnectionObj = CreateObject ("ADODB.Connection") Попытка начать транзакцию заканчивается успешно (метод ConnectionObj.BeginTrans возвращает 1), но любая попытка позже вызвать ConnectionObj.CommitTrans (или ConnectionObj.RollbackTrans) заканчивается ошибкой: ----------------------------------------------------- Ошибка: Активные транзакции отсутствуют. Источник: Microsoft OLE DB Provider for ODBC Drivers ----------------------------------------------------- В чем может быть проблема? Поддерживает ли C/ODBC транзакции вообще? Заранее благодарен. |
|
07.07.2003, 08:57 | #2 |
Участник
|
... может быть ...
Любой запрос к БД неявно инициализирует транзакцию.
На мой взгляд (возможно неверный) подобное поведение может быть вызвано следующей причиной - В настройках указан AutoCommit ... вследствие чего после успешного выполнения запроса транзакция коммитится... или откатывается в противном случае ... без участия разработчика... Транзакция - есть единица работы СУБД и по этой причине транзакции просто ОБЯЗАНЫ наличиствовать. |
|
07.07.2003, 09:27 | #3 |
Участник
|
AutoCommit
В настройках C/ODBC отключил опцию Commit Cache (хотя не уверен, что это то самое).
Но ошибка осталась и появляется, даже если BeginTrans и CommitTrans поставить рядом: ConnectionObj.BeginTrans ConnectionObj.CommitTrans Наверное, проблема в чем-то другом? |
|
07.07.2003, 10:06 | #4 |
Участник
|
re
CommitCache - позволяет производить ряд модификаций,
а потом скопом их фиксировать ... |
|
07.07.2003, 16:40 | #5 |
Участник
|
Aethete прав.
Если вы имеет доступ к сервисной службе Navision (NSS), то, задав запрос "С/ODBC AND transaction" вы найдете такой ответ от 9 мая 2003 года на вопрос (DE-803-617-NBK5) о возможности управления транзакциями в C/ODBC : "The SQLTransact() function in C/ODBC does nothing (this would be used to perform manual transactions), and its correct that the auto_commit option is always on and does not complain about an attempt to turn it off. Therefore it is not possible to handle transactions with the ODBC driver This is of cause not very good, we are currently looking into redesigning our driver, and you question is taken into considuration when designing the next version of the C/ODBC driver." |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Вопрос от чайника по работе с ODBC | 4 | |||
ODBC.DLL | 1 | |||
Navision Attain через Citrix | 2 | |||
доступ к элементам дизайна | 4 | |||
C/FRONT C/ODBC | 2 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|