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

Вниз

ADO. Отслеживание изменения БД.   Найти похожие ветки 

 
Marser ©   (2005-08-13 15:58) [0]

Ситуация следующая - с помощью одного ADOQuery в БД заносится запись. Другой ADOQuery производит выборку из той же базы и отображает свои результаты в DBGrid.
 Если проводить обновление второго ADOQuery непосредственно после завершения выполнения первого, только что добавленная запись отображена не будет. Поэтому приходится использовать TTimer. Я заметил, что использование оптимистической блокировки и динамических курсоров позволяет уменьшить интервал обновления, но фиксированный интервал всё равно ненадёжен.
 Каким образом можно отследить изменение базы данных, используя ADOQuery?

З.Ы. В Б я человек новый, потому не взыщите.


 
Marser ©   (2005-08-13 16:14) [1]


> В Б я человек новый, потому не взыщите.

В БД :-)


 
sniknik ©   (2005-08-13 16:15) [2]

не надо следить, надо использовать нормальные (рекомендованные) конструкции/компаненты.

так судя по описаному поведению, можно сказать, что ADOConnectoin-ом ты не пользуешся... вернее ты его не используеш а в программе используется, даже лишнее их количество, на каждый ADOQuery по одному, вместо одного на всех... если бы сам поставил.

ADOQuery, тоже бы желательно заменить на ADODateSet для возвращающих рекордсет команд и ADOCommand для невозвращаюших. и зачем менять чтото отдельной командой если можно непосредственно в том месте где требуется? но ладно, это все, дело идеологии у каждого свое.
а ошибка у тебя как было сказано изза множественных коннектов которые возникли изза нежелания(/незнания что нужно?) использования одного, явно.


 
Marser ©   (2005-08-13 16:23) [3]

Нет, я использую прямую привязку через ConnectionString к UDL-файлу. ADOConnection пробовал, но здесь не счёл необходимым.


> ADOQuery, тоже бы желательно заменить на ADODateSet
> для возвращающих рекордсет команд и ADOCommand для
> невозвращаюших

Приму к сведению.

> и зачем менять чтото отдельной командой если можно
> непосредственно в том месте где требуется?

Не совсем понял.

> а ошибка у тебя как было сказано изза множественных
> коннектов которые возникли изза нежелания(/незнания
> что нужно?) использования одного, явно.

ADOConnection я не использую ВООБЩЕ, но то, что я ещё слепой котёнок в БД - факт.


 
Anatoly Podgoretsky ©   (2005-08-13 16:58) [4]

Marser ©   (13.08.05 16:23) [3]
ADOConnection я не использую ВООБЩЕ, но то, что я ещё слепой котёнок в БД - факт.

И зря, измени подход, используй везде и только один на поток.


 
Marser ©   (2005-08-13 17:00) [5]


> И зря, измени подход, используй везде и только один на
> поток.

Спасибо! Я так и понял. Но относительно самого вопроса...


 
Anatoly Podgoretsky ©   (2005-08-13 17:02) [6]

Так ты попробуй сначала.


 
Marser ©   (2005-08-13 17:13) [7]

Anatoly Podgoretsky ©   (13.08.05 17:02) [6]
Спасибо!
Интересен механизм сего чуда. Впрочем, я сам разберусь :-)


 
sniknik ©   (2005-08-13 20:02) [8]

>> и зачем менять чтото отдельной командой если можно
>> непосредственно в том месте где требуется?

>Не совсем понял.

непосредственно в том рекордсете который отображает / обновляется. зачем в другом компаненте менять данные в этом?

>> а ошибка у тебя как было сказано изза множественных
>> коннектов которые возникли изза нежелания(/незнания
>> что нужно?) использования одного, явно.

> ADOConnection я не использую ВООБЩЕ, но то, что я ещё слепой котёнок в БД - факт.
ты не используеш но само ADO с этим несогласно, и создает отдельный коннект для каждого ADOQuery/...
в итоге всетаки используеш.


 
Marser ©   (2005-08-13 20:18) [9]


> непосредственно в том рекордсете который отображает /
> обновляется. зачем в другом компаненте менять данные в
> этом?

При записи вносится UIN активного пользователя. В принципе, можно его и не отображать в гриде, но я сделал так.


> ты не используеш но само ADO с этим несогласно, и
>создает отдельный коннект для каждого ADOQuery/...
> в итоге всетаки используеш.

О! Вот это интересно. "О сколько нам открытий...", ну и так далее. Спасибо!


 
sniknik ©   (2005-08-13 21:14) [10]

> При записи вносится UIN активного пользователя. В принципе, можно его и не отображать в гриде, но я сделал так.
и раз сделал, и раз после изменения данных в таблице делаеш обновление рекордсета для отображения в гриде (?), то почему бы сразу в нем не менять (не в гриде, в рекорсете)?
если его то нужно показывать то не нужно ну тогда - добавь поля в гриде и делай одно из них (поле с UIN) невидимым (а меняеш в рекордсете. для ниго ничего не изменится). либо через колонки грида, делай - показывать не позывать.
хотя, это дело идеологии, как говорил. хочеш делай как сделано(написано) но только подумай ты записаль одну запись в таблицу так? и тут же перечитываеш всю таблицу, чтобы это поле/запись отобразилось... надо ли это?

> О! Вот это интересно.
а в первом посте (там тоже самое) было ненитересно? ;)


 
Marser ©   (2005-08-13 23:41) [11]


>> О! Вот это интересно.
> а в первом посте (там тоже самое) было ненитересно? ;)

Там я не понял, о чём это Вы. Сейчас я почитал соответствующую главу у Кэнту и понял всю глубину своего падения. В сущности, вопрос глупый.
Но всё равно спасибо!



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

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

Наверх




Память: 0.5 MB
Время: 0.031 c
6-1117379207
Галинка
2005-05-29 19:06
2005.09.25
Можно ли писать интернет-примочки на Дельфи?


1-1125409650
Anat
2005-08-30 17:47
2005.09.25
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ


14-1125247209
Ксардас
2005-08-28 20:40
2005.09.25
А DelphiDirect это что-то вроде WindowsUpdate?


14-1125432179
Nous Mellon_
2005-08-31 00:02
2005.09.25
Форматирование HTML-кода


14-1125677835
NikNet
2005-09-02 20:17
2005.09.25
Программа для создание блок схем... для DELPHI.