![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 28.01.2008
Сообщений: 267
|
![]()
здравствуйте, вобщем такая проблема у меня возникла. Пишу на Delphi, на форме есть DBGrid и DataSource связанные между собой, создаю динамически Query, прописываю запрос, присваиваю DataSource1.DataSet := FQuery; DBGrid естественно все нормально отображает с этим проблем нет, только вот запрос у меня стоит на таймере и перед тем как присвоить DataSource1.DataSet := FQuery; хотелось бы проверить есть ли изменения, и если есть перерисовать DBGrid.
Если такое возможно хотелось бы услышать ваши мнения.
Не забываем говорить спасибо за помощь - это ведь так приятно
![]() |
![]() |
![]() |
![]() |
#2 | |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
![]() Цитата:
DataSource1.DataSet := FQuery; еще до запроса? Тогда DBGrid сам будет перерисовываться. И у меня аналогичный вопрос (знаю, что одна тема - один вопрос, но ответ здесь будет один). Например, работаем в одной базе я и другой клиент. Оба видим данные одной и той же таблицы в DBGrid-ах. Клиент сделал изменение в одной из ячеек. (Я об этом получил сообщение по UDP протоколу.). Делаю банальные Close > Open. Таблица обновилась. Вопрос: как узнать в какой ячейке клиент сделал изменение? Как я понимаю, надо куда-то запомнить старый DataSet и сравнить его с обновленным... Может есть другой способ? |
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 28.01.2008
Сообщений: 267
|
![]()
вобщем решил проблему так (база данных PostgreSql) по сути мне нужно проверять прихождениие в таблицу записи или удаление из нее, т.к. при добавлении записи инкрементируется id, то можно проверять последнюю запись и если id не изменилось значит не перерисовывать DBGrid, а также проверять не изменилось ли количество записей в таблице, и если изменилось, то перерисовать DBGrid. Знаю способ не универсальный, но что ж тут поделаешь.
Не забываем говорить спасибо за помощь - это ведь так приятно
![]() |
![]() |
![]() |
![]() |
#4 | ||
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
![]() Цитата:
Цитата:
Впрочем, два способа вместе дадут искомое. Но это все при добавлении - удалении. А при редактировании? Последний раз редактировалось _SERGEYX_; 27.10.2010 в 15:26. |
||
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 28.01.2008
Сообщений: 267
|
![]()
если удалили и добавили, то критерием обновления будет изменение последнего id.
Что на счет вашего вопроса, что и менно вы получаете по UDP и в каком виде, а может в пакет запихнуть именно id изменившейся записи, и потом уже работать с ним????
Не забываем говорить спасибо за помощь - это ведь так приятно
![]() Последний раз редактировалось Sanprof; 27.10.2010 в 15:28. |
![]() |
![]() |
![]() |
#6 | |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,210
|
![]()
Можно добавлять время добавления записи в БД и потом время редактирования сравнивать так же как в случае с id.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
![]()
Почитайте вот этот топик (один из многочисленных на тему "обновлять/не обновлять изменившиеся данные на клиенте" и, если "обновлять, то как").
http://www.sql.ru/forum/actualthread...eb%e5%ed%e8%e8 На этом же форуме можно найти много способов (и для разных СУБД) как узнавать произошли ли обновления в таблицах БД. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Из DataSet работающего по циклу в DataSet | maroder22 | БД в Delphi | 1 | 05.09.2010 23:22 |
Использование DataSet | Zirael | Общие вопросы .NET | 0 | 31.10.2009 17:29 |
dataset | sergei64_89 | Общие вопросы .NET | 1 | 19.09.2008 20:14 |
DataSet | nimf | БД в Delphi | 3 | 28.01.2008 23:03 |