Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
3-53849
Anonimus
2003-02-27 09:23
2003.03.17
Из пародоксовской базы теряются данные


3-53952
Roki
2003-02-26 15:03
2003.03.17
Мастера, скажите, какое событие происходит?


1-54077
Neznaika
2003-03-05 11:15
2003.03.17
Exe & Stream


3-53917
anton2v
2003-02-26 09:48
2003.03.17
Создание таблиц в ADO


14-54280
NKkkk
2003-02-28 17:11
2003.03.17
8 марта посвящается





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский