Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: CL | DM;

Вниз

TADOQuery и вставка   Найти похожие ветки 

 
Palladin ©   (2003-02-26 10:37) [0]

вот столкнулся с такой проблемой

ADOQIns.SQL.Text:="insert into table1 select blabla from blabla"
ADOQIns.ExecSQL;

после сразу идет следующее

ADOQSel.SQL.Text:="select * from table";
ADOQSel.Open;

Recordset пустой...
бегу в сам Access в таблица не пустая...
я так понял, что видимо данные посылаются в отдельном потоке и на
момент ADOQSel.Open транзакция еще не завершилась, потому что сделал задержку и Recordset заполнился...
что делать?
как дождатся завершения транзакции ADOQIns.ExecSQL?


 
stone ©   (2003-02-26 10:43) [1]


> ADOQIns.SQL.Text:="insert into table1 select blabla from
> blabla"
> ADOQIns.ExecSQL;
>
> после сразу идет следующее
>
> ADOQSel.SQL.Text:="select * from table";
> ADOQSel.Open;



 
Palladin ©   (2003-02-26 10:48) [2]

писал здесь и поэтому недописал "1"
ADOQSel.SQL.Text:="select * from table1";


 
sniknik ©   (2003-02-26 11:06) [3]

Она завершается по ходу, если только не стоит в опциях асинхронное выполнение. Проверь.
И еще если здесь писал а в проге может SQL.Add используеш то тоже к этому приведет.


 
Palladin ©   (2003-02-26 11:09) [4]

И вообще :)
Все имена в приведенном выше коде вымышленные...
проблема в том что не могу оперативно в одном TADOQuery провести insert запрос и сразу же после ExecSQL выбрать в другом TADOQuery...


 
Palladin ©   (2003-02-26 11:13) [5]


> sniknik © (26.02.03 11:06)

нет не SQL.Add, sql.text...
Access не поддерживает асинхронное выполнение... по крайней мере у меня выдавал Exception при попытке установить...

оба TADOQeury создаются в run-time...


 
sniknik ©   (2003-02-26 11:38) [6]

Palladin © (26.02.03 11:13)
два показательных параметра подключения
Jet OLEDB:Exclusive Async Delay
Jet OLEDB:Shared Async Delay

нет это у тебя не получилось.

а с основным вопросом чтото не то. я делал примерно так и все срабатывало, правда для инсерта я использовал ADOCommand а для получения ADORecordSet но принцип не меняется.


 
Palladin ©   (2003-02-26 11:48) [7]

щаз проверил и действительно программа выполняется дальше ExecSQL, независимо от того проведена транзакция или нет...


 
sniknik ©   (2003-02-26 11:50) [8]

кстати если думаеш что это от незавершонной транзакции, то завершай ее сам. получится так

ADOQIns.SQL.Text:="BEGIN TRANSACTION";
ADOQIns.ExecSQL;
ADOQIns.SQL.Text:="insert into table1 select blabla from blabla";
ADOQIns.ExecSQL;
ADOQIns.SQL.Text:="COMMIT TRANSACTION";
ADOQIns.ExecSQL;


после сразу идет следующее

ADOQSel.SQL.Text:="select * from table";
ADOQSel.Open;


попробуй.


 
Palladin ©   (2003-02-26 11:50) [9]

ConnectionString у обоих Query такой
"DBQ=D:/Program Files/TB/Database/address.mdb;Driver={Microsoft Access Driver (*.mdb)};"


 
sniknik ©   (2003-02-26 11:52) [10]

проверь всеже ExecuteOptions, или просто сделай присвоение перед выполнением
ADOQIns.ExecuteOptions := [];


 
Palladin ©   (2003-02-26 11:53) [11]

ok ща...


 
sniknik ©   (2003-02-26 11:55) [12]

Palladin © (26.02.03 11:50)
нафига? ODBC - шное подключение, не раз глюки выдавало

попробуй с этим

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/Program Files/TB/Database/address.mdb;Persist Security Info=False


 
Palladin ©   (2003-02-26 12:03) [13]

в общем access не внял begin transaction и commit transaction
сказал что SQL ему надо...

присвоение уже делал не чего подобного...

с приведенной строкой такая же трабла... проскальзывает прога дальше и все...
кстати ODBC меня не подводил еще...


 
sniknik ©   (2003-02-26 12:09) [14]

> в общем access не внял begin transaction и commit transaction
сказал что SQL ему надо...

то есть не понимает "begin transaction"? но это может быть только на старых версиях. небось база Access 97? или jet старый?

а попробуй комбинацию, мою строку и begin transaction, поймет?


 
Palladin ©   (2003-02-26 12:17) [15]

Точно. После комбинации этих двух все отработало прекрасно.
Спасибо!


 
sniknik ©   (2003-02-26 12:21) [16]

> кстати ODBC меня не подводил еще...

:-))

все бывает в первый раз, вот оно и случилось.


 
Palladin ©   (2003-02-26 12:24) [17]

:))



Страницы: 1 вся ветка

Текущий архив: 2003.03.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
3-53890
DieM@N
2003-02-22 04:19
2003.03.17
Не открывается DBF-ник!!!


1-54095
Sever
2003-03-05 16:41
2003.03.17
TStringList и динамический массив


1-53988
Roki
2003-03-06 12:41
2003.03.17
Как сделать при вводе в DBGrid только заглавными буквами?


1-54061
Демонов Е.В.
2003-03-04 09:03
2003.03.17
Про дин масив ( продолжение GIL).


14-54312
Supreme 2
2003-02-28 01:06
2003.03.17
Что мне ответить девушке