![]() |
|
|
![]()
|
|
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
используется MS SQL Server, Delphi 7, ADO
все манипуляции с данными (insert, update,delete) происходят путем вызова хранимых процедур сервера. здесь и хочу спросить вашего совета: каким образом после обновления данных лучше обновлять даные в maste/detail гридах на форме? источником данных для master грида служит запроc (ADOQuery), для подчиненного - view-таблица с сервера (TADOTable) перевыполнение запроса происходит с некоторым лагом , да и указатель с выделенной записи после обновления перескакивает на первую строчку, что несколько неудобно --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
я делаю так
а что такое с лагом ? Это сообщение отредактировал(а) Bes - 29.7.2005, 09:59 |
|||
|
||||
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
спасибо за ответ!
с лагом = с небольшой задержкой, т.е. нажимаешь кнопочку "добавить" или изменить, и наблюдаешь изменения в гриде не сразу, а через 1-2 секунды. немного напрягает, тем более, что юзер обычно туп и ненаблюдение изменений мгновенно вводит его в ступор --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
сколько записей в таблице?
|
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 6 Всего: 55 |
Bes, твой код хорошь, но иногда может вызвать Exception!
Увы, сам на это наткнулся. Например, стоишь на последней записи, отдельным запросом удаляешь ее, и потом выполняешь твой код. Вынужден был городить огород с locate. Причем, даже DBGridEh в EhLib'е для этого доработал. (см. здесь) Но, и там тоже есть пробдлемы - Ошибка TADODataSet.Locate!, проверено в Delphi 6,7,9. Так что, на сегодня, универсального решения нет. Лично у меня, все таблицы имеют ключевое поле, причем, всегда первое. Этому полу назначено Visible=False, поэтому его не видно. Перед закрытием датасета я сохраняю его значение, и после открытия делаю locate на него. Если интересует, могу выложить новую доработку DBGridEh в EhLib'е, которая позволяет указывать как искать текущую запись: добавлено:
Это сообщение отредактировал(а) Петрович - 29.7.2005, 17:55 -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Bes |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
2Петрович:
да-да забыл про это - я решил проблему так вместо
надо писать
и все P.S. глянул приведенный код из ЭхЛиб и вспомнил что поначалу я тоже проверял где стоит указатель и если на первой или последней записи то при удалении их туда и ставил без букмарка. Это сообщение отредактировал(а) Bes - 1.8.2005, 06:42 |
||||
|
|||||
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
спасибо за советы, букмарки - хорошее решение
единственно, что интересно: если данные отсортированы по алфавиту и добавляется новая запись, то возможно ли установить выделение на неё Петрович, если можешь, выложи, или пришли на почту: ddx{песик}.mail.ru,спасибо. или, может, тоже самое можно скачать из указанной тобой темы? --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| Петрович |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 6 Всего: 55 |
Вот объект:
А вот как им пользоваться:
-------------------- Все знать невозможно, но хочется |
||||||
|
|||||||
| DDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 31.1.2005 Где: Москва Репутация: 5 Всего: 5 |
Петрович
сенкс Это сообщение отредактировал(а) DDX - 2.8.2005, 17:12 --------------------
Учиться, учитьcя и ещё раз учиться |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
|
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Ух ты! Спасибо. Век живи - век учись.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Что-то опасно как-то сделано - с букмарками это плохое решение. Это же указатели. И гарантированно работать они не будут. Лучше тогда использовать поле ID какое-нибудь (ну чтобы в базе было) и уже по нему делать Locate.
А букмарки - это же указатели. Их к тому же освобождать надо. Не советую. |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
а нафига ж их придумали? Добавлено @ 14:33
что, освобождать не советуешь? Программеры там, у дяди Бормана, сидят и головы ломают, как сделать то или иное, а мы тут умничать начинаем Как в КВН было сказано про футбол: "Вся страна специалисты, одни мы, 11 человек играть не умеем". |
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Их удобно использовать, если например надо пробежать по всему DataSet и сосчитать сумму. Или еще чего. Но на это время сам DataSet не закрывается. В этом случае букмарки - штука очень удобная и наверно самая быстрая. |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Программист сам в праве выбирать, что ему использовать: закладки или locate
Добавлено @ 14:37
я и с закрытием DataSet`a использую закладки, пока проблем небыло.
Это сообщение отредактировал(а) dsergey - 9.8.2005, 14:41 |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |