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

Вниз

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

Наверх





Память: 0.48 MB
Время: 0.034 c
2-1124199768
Гость22
2005-08-16 17:42
2005.09.25
Как не дать закрыть форму?


5-1100244969
Суслик
2004-11-12 10:36
2005.09.25
Runtime package


14-1125195707
Скруж
2005-08-28 06:21
2005.09.25
Какой программой для снятия скриншотов лучше воспользоваться?


2-1123960259
AdmeraL
2005-08-13 23:10
2005.09.25
Tcaption перевести в Char?


14-1125437940
KilkennyCat
2005-08-31 01:39
2005.09.25
31 августа. С Днем Рождения!





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