Pan-SQL |
Отправлено: 06.04.2005, 10:49 |
|
Не зарегистрирован
|
Здравствуйте, подскажите, если кто знает, как обновить данные в запросе при добавлении записи в таблицу. Можно использовать "Метод чайника", т. е. свойство Active компонента Query задавать false, а потом true, но я хочу это сделать более лучшим сбособом. Заранее большое спасибо. |
|
olegenty |
Отправлено: 06.04.2005, 13:43 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
"более лучшие" способы требуют недетских усилий.
1. все пользователи системы должны некоторым способом получить сообщение о том, что некий пользователь сделал нечто над неким объектом БД, а также — что именно. особенно важно получить инфу о том, что именно. если это был UPDATE всей таблицы, например, то пара Close(), Open() — то, что надо.
2. по инфе об изменении нужно предпринять какие-то действия, типа сформировать некую Delta и догрузить её в буфер клиента (или что-то другое). такого рода работка вообще возможна только на клиентских наборах.
на мой взгляд — Close() + Open() — не самое худшее из решений, при условии, что пользователь на клиента получает выборки минимального размера. край — до 1000 записей, лучше — меньше.
|
|
Gedeon |
Отправлено: 06.04.2005, 14:03 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Ну тут еще зависит от компонентов доступа, например в TADOQuery->Requery, есть методы ReOpen и т.д. тут коннкретный компонент важен.
|
|
AVC |
Отправлено: 06.04.2005, 16:29 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
А я вполне успешно юзаю Active true/false с прибамбасами.
Для "более лучшего способа" можно попробовать кеширование, но это может стать далеко не "лучшим способом" — все зависит от запросов и задач. |
|
Gedeon |
Отправлено: 06.04.2005, 16:58 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
На TADOQuery если использовать параметр т.е. :@Param в запросе
и соответственно в коде менять Q->ParamByName("@Param")->AsInteger =10;
Requery происходит быстрее, чем Close()/Open() (Active — true/false)
Проверял экспериментально.
|
|
AVC |
Отправлено: 06.04.2005, 17:03 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Хм. Интересно. Жаль ADO не пользую. |
|
olegenty |
Отправлено: 07.04.2005, 07:05 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Меня ReQuery тоже не спасает, я работаю с TMemTableEh + TADODataDriverEh. Компоненты чуть сыроваты, но методом проб и ошибок и я уже узнал большую часть граблей, и наступаю рядом
|
|