Транзакция и Set dbs = CurrentDb

Nebo

Первый раз столкнулся с ситуацией.Становится невозможным внести изменения в формы после выполнения кода когда:
Dim wrkCurrent As DAO.Workspace
 Set wrkCurrent = DAO.DBEngine.Workspaces(<b>0</b>) 'Это из Гетца


 Dim dbs As DAO.Database
 Set dbs = CurrentDb
То есть когда
Dim dbs As DAO.Database
 Set dbs = CurrentDb
находится после
Dim wrkCurrent As DAO.Workspace
 Set wrkCurrent = DAO.DBEngine.Workspaces(<b>0</b>) 'Это из Гетца
А если перед DAO.DBEngine.Workspaces(0) то всё нормально.В чём может быть дело?
22 ответа

Nebo

Да, ерунда какая-то! Не может такого быть! При чем тут Workspaces? Давай-ка по-подробнее. В каком месте код, какие изменения и тд и тп...А то может быть, просто, комп не включен...


Nebo

Rivkin Dmitry,Согласен:) Что ерунда какая-то:) Я немножко расстроился:)Вроде уже много транзакций мною сделано. А тут такое:) Сам ничего не пойму.Да я, наверное, маленькую базку подготовлю, всё проверю ещё раз,если так-же будет себя вести, то выложу на форум.


Nebo

Вот такое сообщение после попытки открыть форму в конструкторе.А в следующем посте выкладываю базу.


Nebo

Теперь сама база.Порядок такой:1. Открыть frmOpenMe2. Нажать кнопку Включить. Потом закрыть форму.3. Потом попробовать открыть форму frmOpenMe в конструкторе.4. Думаю, что ситуация повторится как у меня. Но кто знает:)Использую лицензионный MS Access 2003 без сервис паков.Думается мне сервис-паки тут не причём. Много лет без них работаю:) cкачать


Nebo

в строке Set wrkCurrent = DAO.DBEngine.Workspaces(0) 'Это из Гетцаизменил на Set wrkCurrent = DBEngine.Workspaces(0) 'Это из Гетца... все заработало ... никаких ошибок.


Nebo

askerli,А почему если убрать DAO, то работает?? Разве можно без DAO? :))


Nebo

Вот я и говорю сам себе, что нужен FAQ про транзакции.


Nebo

askerli,А почему если убрать DAO, то работает?? Разве можно без DAO? :))
С DAO или без у меня получается та же проблема с последующим редактированием формы.Что-то здесь не правильно.Вопрос только, что за нужда работать в А2003 в DAO?


Nebo

Rivkin Dmitry,Что делать будем:) ?
Вопрос только, что за нужда работать в А2003 в DAO?
Ну обычное дело для меня:) Работаю почти всегда с DAO. Всё нормально.Да и транзакции я раньше делал и не замечал такого поведения.В данном случае просто поставил Dim dbs As DAO.Database в перед DAO.DBEngine.Workspaces(0) Так вроде работает без проблем. Чем это может аукнуться - не знаю.


Nebo

Сейчас посмотрел другой мою программу.А так нормально такая конструкция. Непонятно.Кажется я понял в чём дело. Сейчас попробую.


Nebo

Когда вместо wrkCurrent используемDBEngine.BeginTransDBEngine.CommitTransто работает всё нормально. Но ведь так не по Гетцу?Я не силён во всё этом:) Как правильно должно быть?Но и с wrkCurrent тоже нормально всё работает в другом проекте. Непонятно короче:))


Nebo

Когда убираешь DAO вот так, тогда всё работает.
Dim wrkCurrent As Workspace
 Set wrkCurrent = DBEngine.Workspaces(<b>0</b>) 'Это из Гетца
В принципе так можно делать. Вроде это не приведёт к ошибкам?


Nebo

Выяснилось, что можно сделать так, только с DAO перед Workspace:
Dim wrkCurrent As DAO.Workspace
 Set wrkCurrent = DBEngine.Workspaces(<b>0</b>) 'Это из Гетца

 Dim dbs As DAO.Database
 Set dbs = CurrentDb


Nebo

Смотрю Гетца второй том:на странице 79 Set wrkCurrent = DAO.DBEngine.Workspaces(0) 'Это из Гетца


Nebo

Nebo, только не понятно, если вы пользуете
Dim dbs As DAO.Database
 Set dbs = CurrentDb
, зачем вам
Dim wrkCurrent As DAO.Workspace
 Set wrkCurrent = DAO.DBEngine.Workspaces(<b>0</b>)
, мне кажется либо это - либо то.


Nebo

Nebo, только не понятно, если вы пользуете
Dim dbs As DAO.Database
 Set dbs = CurrentDb
, зачем вам
Dim wrkCurrent As DAO.Workspace
 Set wrkCurrent = DAO.DBEngine.Workspaces(<b>0</b>)
, мне кажется либо это - либо то.
Пардон, не в тему, только сейчас слово транзакция прочитал :).


Nebo

Мутная тема - эти транзакции:) Полагашься на "авось":)Я до сих пор не понимаю как их правильно оформлять. Ну должна же быть какая-то "классика" в этом деле. Какоё-то единый шаблон.Читаешь хелп, вчитываешься, я ясного, однозначного понимания применения нет.Ну да ладно:) Что теперь делать.


Nebo

Мутная тема - эти транзакции:) Полагашься на "авось":)Я до сих пор не понимаю как их правильно оформлять.
А в чем вопрос? Сначала открываем транзакцию, потом либо подтверждаем, либо откатываем.


Nebo

Владимир Саныч,Спасибо:) Но, в частности, вопрос в начале топика:))Как открываем транзакцию, на Ваш взгляд?


Nebo

Это какой-то глюк.


Nebo

Владимир Саныч,Ну понял:) Поживём - увидем что дальше будет.Хотя конечно хочется разобраться досконально:)