![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Транзакции в 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 .