|
|
|
Завершение транзакции для WorkSpace
|
|||
|---|---|---|---|
|
#18+
У меня такая ситуация: Есть процедура, в которой есть запросы через DAO и через ADO. Хочу выполнить эту процедуру как единую транзакцию. Для этого в начале процедуры выполняю: MyWorkSpace.BeginTrans MyConnection.BeginTrans Затем, когда я в конце процедуры делаю следующее : MyWorkSpace.CommitTrans мне выдается ошибка:"Попытка занесения или свертывания транзакции без предварительного начала транзакции". Не могу понять, что могло вызвать занесение транзакции в процессе выполнения программы :(. С помощью какого метода можно посмотреть состояние транзакции? Заранее спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 15:15 |
|
||
|
Завершение транзакции для WorkSpace
|
|||
|---|---|---|---|
|
#18+
какая версия Access? где расположен MyWorkSpace.BeginTrans в "обычном" модуле ? Желательно было бы видеть больше подробностей - кто такие MyWorkSpace и MyConnection - то есть как создаются и КТО они - функции, возвращающие объектные переменные, или собственно объектные переменные. ---------------- ЗЫ не зная деталей - одна из самых возможных причин - "завершение" кода, создающего MyWorkSpace с "отпусканием" VBA до вызова MyWorkSpace.CommitTrans (разумеется с повторной инициализацией) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 16:48 |
|
||
|
Завершение транзакции для WorkSpace
|
|||
|---|---|---|---|
|
#18+
Приложение на Access 2000. Процедура обработки находится в обычном модуле (т.е. НЕ в модуле формы) Переменные Global MyWorkSpace As Workspace Global MyConnection As New ADODB.Connection объявлены в другом модуле Инициализируются они в форме-заставке, которая открывается при открытии приложения. Set MyWorkSpace= DBEngine.Workspaces(0) MyConnection.ConnectionString = "Driver=sql Server;Server=" & MyServer & ";UID=" & MyUID & ";PWD=" & MyPWD & ";Database=" & MyDatabase MyCnn.Open Ой, пока я набирала этот ответ, я решила поэксперементировать с объявлением MyWorkSpace и сделала так :Global MyWorkSpace As DAO.Workspace . После этого, вроде бы ошибка перестала появляться. Но все-таки вопрос остается. А что имелось ввиду под фразой ""завершение" кода, создающего MyWorkSpace с "отпусканием" VBA " ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 17:32 |
|
||
|
Завершение транзакции для WorkSpace
|
|||
|---|---|---|---|
|
#18+
авторА что имелось ввиду под фразой ""завершение" кода, создающего MyWorkSpace с "отпусканием" VBA " ? вообще-то я предполагал, что инициализация и доступ производится производится функциями в том же модуле. тогда есть вероятность обратиться "не к тому объекту" (так что мое предположение не работает. ) а "имелось ввиду" примерно следующее: "поднятый" проект vba (путем вызова функции или переменной, в зависимости от версии Access и производимых действий) имеет право быть "завершенным" (БУДЕМ СЧИТАТЬ - ВЫГРУЖЕННЫМ ИЗ ПАМЯТИ исполнителя), когда в нем отпадает необходимость ИЛИ произведены изменения в проекте (не проверял, но может оказаться зависимым от "режима компиляции"). Одно из таких событий - внесение изменений в проект vba - правка кода. вот сценарий изменения проекта шаг 1 пусть есть 2 формы - первая выполняет Set MyWorkSpace= DBEngine.Workspaces(0) во второй есть контрол, в котором выводится MyWorkSpace.Name пускаем форму 1, закрываем ее затем форму 2 - все работет шаг 2 создаем новую форму3 и мастером размещаем на ней кнопку закрытия формы. сохраняем. шаг 3 запускаем форму 2 и получаем ошибку неинициализированного объекта. --------------------- все это не ваш случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 18:25 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1651&tid=1675471]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 316ms |

| 0 / 0 |
