Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Транзакции в Access [D7, Access]


zsv ©   (2010-06-11 17:44:00) 

День добрый помогите с проблемкой.
использую базу данных Access2000, подкл через ADO
одной програмкой пишу в базу
frmMain.con1.BeginTrans;
q.SQL.Text:='insert into MyTable (IdUser,NameUser) values(1,'Вася');
q.ExecSQL;
frmMain.con1.CommitTrans;

второй програмкой тут же пытаюсь считать эту строку, но запрос пустой.
погонял считывание в цикле. показало что данные видны второй программкой спустя 2 сек примерно.
А вот если не использовать явные транзакции - то видны мгновенно. В чем тут дело?
frmMain.con1.IsolationLevel:=ilCursorStability в обоих программках.
ЗЫ. транзакции использовать обязательно ,тк необходимо делать несколько вставок в разные табл
Спасибо


sniknik   (2010-06-14 19:17:00) [1]

> не помогают - все также не видит записи...
это не для помощи в твоих проблемах, это правильные компоненты для использования.
помощь была в первом-втором абзаце первого поста.


zsv   (2010-06-14 18:06:00) [2]

>sniknik ©

q:=TADOQuery.Create(nil);
q.Connection:=frmMain.con1;

>ADOCommand, ADODataset .
не помогают - все также не видит записи...

причем более долгие наблюдения показали, что 2с - это не факт, может быть и 4 сек а может и менее одной секунды...непредсказуемо.
я в ступоре...


sniknik   (2010-06-12 18:00:00) [3]

> общего коннекшина и не м.б. в принципе
в одной программе. т.е. frmMain.con1 здесь один, q другой.


Виталий Панасенко(дом)   (2010-06-12 17:07:00) [4]

это я о
> не используют общий ADOConnection

...
общего коннекшина и не м.б. в принципе


Виталий Панасенко(дом)   (2010-06-12 17:05:00) [5]


> sniknik ©   (12.06.10 10:37) [1]

а как же

> zsv ©   (11.06.10 17:44)  


> второй програмкой тут же пытаюсь считать эту строку, но
> запрос пустой.


?


sniknik   (2010-06-12 10:37:00) [6]

> показало что данные видны второй программкой спустя 2 сек примерно.
в чем транзакции скорее всего не виноваты, поведение похоже на то когда не используют общий ADOConnection а прописывают строки соединений в компонентах, что приводит к созданию нескольких com объектов, и таймаутам на синхронизацию данных между ними.

> frmMain.con1.BeginTrans;
> использовать явные транзакции
это не явные, это клиентские... во что их транслирует, и как, используемый провайдер только ему одному известно (авторы уже давно это по-забывали), делай их запросами, тогда не будет зависеть от непонятных интерпретаций (и сразу будет видно если сервер не поддерживает, то и команд не будет, и не будешь думать на всякие эмуляции, что это полноценная транзакция. да, это не про аксесс это "вообще").

> q.ExecSQL;
ну и ... - ADOCommand, ADODataset .


Наверх

Титульная страница Поиск, карта сайта Написать письмо