![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO. Отслеживание изменения БД. [MS Access 2000]
Marser © (2005-08-13 15:58:00)Ситуация следующая - с помощью одного ADOQuery в БД заносится запись. Другой ADOQuery производит выборку из той же базы и отображает свои результаты в DBGrid.
Если проводить обновление второго ADOQuery непосредственно после завершения выполнения первого, только что добавленная запись отображена не будет. Поэтому приходится использовать TTimer. Я заметил, что использование оптимистической блокировки и динамических курсоров позволяет уменьшить интервал обновления, но фиксированный интервал всё равно ненадёжен.
Каким образом можно отследить изменение базы данных, используя ADOQuery?
З.Ы. В Б я человек новый, потому не взыщите.
Marser (2005-08-13 23:41:00) [1]
>> О! Вот это интересно.
> а в первом посте (там тоже самое) было ненитересно? ;)
Там я не понял, о чём это Вы. Сейчас я почитал соответствующую главу у Кэнту и понял всю глубину своего падения. В сущности, вопрос глупый.
Но всё равно спасибо!
sniknik (2005-08-13 21:14:00) [2]> При записи вносится UIN активного пользователя. В принципе, можно его и не отображать в гриде, но я сделал так.
и раз сделал, и раз после изменения данных в таблице делаеш обновление рекордсета для отображения в гриде (?), то почему бы сразу в нем не менять (не в гриде, в рекорсете)?
если его то нужно показывать то не нужно ну тогда - добавь поля в гриде и делай одно из них (поле с UIN) невидимым (а меняеш в рекордсете. для ниго ничего не изменится). либо через колонки грида, делай - показывать не позывать.
хотя, это дело идеологии, как говорил. хочеш делай как сделано(написано) но только подумай ты записаль одну запись в таблицу так? и тут же перечитываеш всю таблицу, чтобы это поле/запись отобразилось... надо ли это?
> О! Вот это интересно.
а в первом посте (там тоже самое) было ненитересно? ;)
Marser (2005-08-13 20:18:00) [3]
> непосредственно в том рекордсете который отображает /
> обновляется. зачем в другом компаненте менять данные в
> этом?
При записи вносится UIN активного пользователя. В принципе, можно его и не отображать в гриде, но я сделал так.
> ты не используеш но само ADO с этим несогласно, и
>создает отдельный коннект для каждого ADOQuery/...
> в итоге всетаки используеш.
О! Вот это интересно. "О сколько нам открытий...", ну и так далее. Спасибо!
sniknik (2005-08-13 20:02:00) [4]>> и зачем менять чтото отдельной командой если можно
>> непосредственно в том месте где требуется?
>Не совсем понял.
непосредственно в том рекордсете который отображает / обновляется. зачем в другом компаненте менять данные в этом?
>> а ошибка у тебя как было сказано изза множественных
>> коннектов которые возникли изза нежелания(/незнания
>> что нужно?) использования одного, явно.
> ADOConnection я не использую ВООБЩЕ, но то, что я ещё слепой котёнок в БД - факт.
ты не используеш но само ADO с этим несогласно, и создает отдельный коннект для каждого ADOQuery/...
в итоге всетаки используеш.
Marser (2005-08-13 17:13:00) [5]Anatoly Podgoretsky © (13.08.05 17:02) [6]
Спасибо!
Интересен механизм сего чуда. Впрочем, я сам разберусь :-)
Anatoly Podgoretsky (2005-08-13 17:02:00) [6]Так ты попробуй сначала.
Marser (2005-08-13 17:00:00) [7]
> И зря, измени подход, используй везде и только один на
> поток.
Спасибо! Я так и понял. Но относительно самого вопроса...
Anatoly Podgoretsky (2005-08-13 16:58:00) [8]Marser © (13.08.05 16:23) [3]
ADOConnection я не использую ВООБЩЕ, но то, что я ещё слепой котёнок в БД - факт.
И зря, измени подход, используй везде и только один на поток.
Marser (2005-08-13 16:23:00) [9]Нет, я использую прямую привязку через ConnectionString к UDL-файлу. ADOConnection пробовал, но здесь не счёл необходимым.
> ADOQuery, тоже бы желательно заменить на ADODateSet
> для возвращающих рекордсет команд и ADOCommand для
> невозвращаюших
Приму к сведению.
> и зачем менять чтото отдельной командой если можно
> непосредственно в том месте где требуется?
Не совсем понял.
> а ошибка у тебя как было сказано изза множественных
> коннектов которые возникли изза нежелания(/незнания
> что нужно?) использования одного, явно.
ADOConnection я не использую ВООБЩЕ, но то, что я ещё слепой котёнок в БД - факт.
sniknik (2005-08-13 16:15:00) [10]не надо следить, надо использовать нормальные (рекомендованные) конструкции/компаненты.
так судя по описаному поведению, можно сказать, что ADOConnectoin-ом ты не пользуешся... вернее ты его не используеш а в программе используется, даже лишнее их количество, на каждый ADOQuery по одному, вместо одного на всех... если бы сам поставил.
ADOQuery, тоже бы желательно заменить на ADODateSet для возвращающих рекордсет команд и ADOCommand для невозвращаюших. и зачем менять чтото отдельной командой если можно непосредственно в том месте где требуется? но ладно, это все, дело идеологии у каждого свое.
а ошибка у тебя как было сказано изза множественных коннектов которые возникли изза нежелания(/незнания что нужно?) использования одного, явно.
Marser (2005-08-13 16:14:00) [11]
> В Б я человек новый, потому не взыщите.
В БД :-)