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

Вниз

Обновление TADOTable   Найти похожие ветки 

 
Alex870   (2006-09-28 15:40) [0]

Здравствуйте!
Помогите пожалуйста разобраться, я использую компонент TADOTable, база *.mdb(MS Access). Моя программа производит изменения в этой базе при помощи SQL-запросов. Для отображения содержимого таблицы использую DBGrid. Проблема в следующем: после добавления (удаления) новой строки, мне нужно обновить DBGrid, для этого я не нашел ничего умнее, чем сделать:
ADOTable.Active := False;
ADOTable.Active := True;

однако этот способ работает только после прохождения 4-х секунд с момента исполнения SQL-запроса. Подобный пример видел в интернете - там используют таймер, который запускается после
ADOQuery.ExecSQL;
и через 5 секунд делает
ADOTable.Active := False;
ADOTable.Active := True;
Timer1.Enabled := False;

Меня не устраевает такой способ, может кто расскажет как грамотно и быстро обновить ADOTable и DBGrid.
Спасибо.


 
stone ©   (2006-09-28 15:44) [1]


> однако этот способ работает только после прохождения 4-х
> секунд с момента исполнения SQL-запроса

Происходит сразу, просто у тебя или запрос 4 сек. выполняется, или данных возвращается столько, что они 4 сек. на клиента передаются.


 
zdm ©   (2006-09-28 15:59) [2]

вряд ли есть другой способ как переоткрытие датасэт


 
ANB ©   (2006-09-28 16:00) [3]


> stone ©   (28.09.06 15:44) [1]

А из-за кэширования такой ерунды не может быть ?


 
Sergey13 ©   (2006-09-28 16:00) [4]

> [0] Alex870   (28.09.06 15:40)
А чем не устраивает TADOTable.Insert, TADOTable.Edit и TADOTable.Delete?


 
stone ©   (2006-09-28 16:04) [5]


> ANB ©   (28.09.06 16:00) [3]
>
> > stone ©   (28.09.06 15:44) [1]
>
> А из-за кэширования такой ерунды не может быть ?

Откуда я знаю, у меня телепатор не работает, а посмотреть что там такое нет возможности. Предположил первое, что показалось наиболее вероятным.


 
sniknik ©   (2006-09-28 16:06) [6]

> А из-за кэширования такой ерунды не может быть ?
коственно... т.к. здесь 100% игнорирование компонента TADOConnection (строки прям у датасетов прописаны...), а так как в этом случае у каждого свой конект->com обьект->кеш то естественны задержки пока они все не синхронизируются.  

> может кто расскажет как грамотно и быстро обновить ADOTable
грамотно ADOTable не обновлять, а спустить в унитаз... а пользоваться и обновлять нормальный ADODataSet.


 
MsGuns ©   (2006-09-28 16:54) [7]

>zdm ©   (28.09.06 15:59) [2]
>вряд ли есть другой способ как переоткрытие датасэт

Есть, и не один


 
Alex870   (2006-09-28 17:12) [8]

Спсибо всем!

> Происходит сразу, просто у тебя или запрос 4 сек. выполняется,
>  или данных возвращается столько, что они 4 сек. на клиента
> передаются.

Нет, запрос выполняется быстро, их выполняется море, но для обновления (или для смены состояния Active) необходимо 4 сек ничего не делать с ADOTable. Но раз знатоки говорят, что ни хрена не выйдет, то буду ковырять другой компанент.


 
Alex870   (2006-09-28 17:15) [9]


> Есть, и не один

Ну хоть один скажите, а то интересно, да и если получится, будет гуд, а то много кода переписывать надо.


 
zdm ©   (2006-09-28 17:46) [10]


> MsGuns

Не сомневаюсь в твоей компетенции, ну действительно подскажи, интересно.


 
Johnmen ©   (2006-09-28 17:50) [11]

Напр. метод Requery.


 
ANB ©   (2006-09-28 18:05) [12]


> но для обновления (или для смены состояния Active) необходимо
> 4 сек ничего не делать с ADOTable.

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


 
Anatoly Podgoretsky ©   (2006-09-28 19:24) [13]

Зачем нужен ADOTable (особенно для Акцесс) и при этом одновременное использование запросов, ни как не могу понять. А вот осудить могу и осужаю.


 
Alex870   (2006-09-29 09:39) [14]


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

Тогда ничего не происходит, т.е. DBGrid не обновляется, но я засомневался: толи DBGrid обновляется, но получает старые данные, толи в это время что-то не дает переоткрыть таблицу, ведь я не получу эксепшена на операцию Active := false, а если он не стал false по какой-то причине, то и Active := true ошибки не даст, так что есть вариант, что раньше 4 секунд что-то не дает изменить состояние active, хотя это только предположение.


 
ЮЮ ©   (2006-09-29 10:27) [15]


> Sergey13 ©   (28.09.06 16:00) [4]
> А чем не устраивает TADOTable.Insert, TADOTable.Edit и TADOTable.
> Delete?


В этом случае и в гриде будет то, что нужно и запросы необходимые выполнятся.

А комбинацию
ADOTable.Active := False;
ADOTable.Active := True;
назначь кнопочке "Обновить" - это потребуется только если хочется увидеть изменения, сделанные другими пользователями.



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

Форум: "Базы";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.043 c
5-1144675303
solenko
2006-04-10 17:21
2006.12.03
Выравнивание по левому краю в TEdit


4-1153691416
Тонго
2006-07-24 01:50
2006.12.03
Win API


2-1163798289
АртемКИН
2006-11-18 00:18
2006.12.03
Создание программы - с базой


15-1163311268
Сало
2006-11-12 09:01
2006.12.03
Кличко! Кличко!


2-1163580289
Делфи
2006-11-15 11:44
2006.12.03
плейлист





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский