|
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
|
|
Обновились ли данные в DataSet27.10.2010, 13:33. Показов 4279. Ответов 11
Метки нет (Все метки)
здравствуйте, вобщем такая проблема у меня возникла. Пишу на Delphi, на форме есть DBGrid и DataSource связанные между собой, создаю динамически Query, прописываю запрос, присваиваю DataSource1.DataSet := FQuery; DBGrid естественно все нормально отображает с этим проблем нет, только вот запрос у меня стоит на таймере и перед тем как присвоить DataSource1.DataSet := FQuery; хотелось бы проверить есть ли изменения, и если есть перерисовать DBGrid.
Если такое возможно хотелось бы услышать ваши мнения.
0
|
|
| 27.10.2010, 13:33 | |
|
Ответы с готовыми решениями:
11
Как обновить данные на форме у клиентов, сразу же когда обновились данные в базе
|
|
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
|
|
| 27.10.2010, 14:04 | |
|
1. Системно
* Если ADO (т.е. Аксцесс база) - через таймер сканить размер файла ИмяБазы.mdb и если он изменился - обновить ДБГрид * Если Пардокс (.mdf), то фалов будет тыщамильёнов и это сильно замедлит процесс сканирования. 2. Программно при каждом изменении данных в БД программа пишет в какой-то временный файл "1". Сканится этот файл тоже по таймеру (раз в 5 секунд - оптимально (зависит от задачи)). Если в файле "1" - обновляет ДБгрид и пишет в файл "0".
0
|
|
|
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
|
|
| 27.10.2010, 14:59 [ТС] | |
|
вобщем решил проблему так (база данных PostgreSql) по сути мне нужно проверять прихождениие в таблицу записи или удаление из нее, т.к. при добавлении записи инкрементируется id, то можно проверять последнюю запись и если id не изменилось значит не перерисовывать DBGrid, а также проверять не изменилось ли количество записей в таблице, и если изменилось, то перерисовать DBGrid. Знаю способ не универсальный, но что ж тут поделаешь.
0
|
|
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|
| 28.10.2010, 00:07 | |
|
Sanprof, Опиши Логику вопроса как узнать изменилась база не изменилась в чем состоит трудность рефреша таблицы???
А также Sanprof, Андрей Борисови скажите пожалуйста всеми вашими способами как узнать изменения была запись "хлеб" я сделал апдейт и получил "пиво". Фактически Ваша база изменилась при этом не изменил размер базы данных, не потерял к-во записей, не добавил к-во записей?????
0
|
|
|
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
|
||
| 28.10.2010, 07:24 | ||
|
вы исправили что-то в базе? - да => записать в temp файл "1"
0
|
||
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|
| 28.10.2010, 09:34 | |
|
Андрей Борисови, И все таки не вижу реально поставленной задачи при ктором нужно делать дополнительные движения на проверку изменения бд. Почему просто не делать рефреш грида?
0
|
|
|
67 / 67 / 11
Регистрация: 08.10.2010
Сообщений: 138
|
||||||
| 28.10.2010, 10:52 | ||||||
|
А если тригер поставить?
0
|
||||||
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
|
| 28.10.2010, 11:24 | |
|
Первый вопрос, как это можно сделать. В разных БД скорее всего это делается по разному. Так, в FB это просто реализуется на механизме событий (EVENTS). В FB этот механизм встроет в функционал сервераи действует по следующей схеме.
1. Создается некоторое событие как объект БД. 2. В таблицах, измения которых отслеживаются, в соотвеьствующих триггерах эти события инициируются 2. В приложения специально предназначенными для этого компонентами события принимаются и обрабатываются (переоткрываюся необходимые наборы данных) Не знаю точно, но, думаю, в PostgreSql эти возможности есть. Второй вопрос надо ли это делать и, если надо, то в каких случаях. Мое мнения, что использовать это можно только тогда, когда ОЧЕНЬ НАДО и осторожно. Представьте себе, что у Вас БД на несколько десятков или более юзеров и значительная часть модифицирует данные. И получите у себя на клиенте сплошное дерганье.
0
|
|
|
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
|
|
| 28.10.2010, 14:11 | |
|
для чего это может понадобиться?
вот пример: сетевой телефонный справочник. двух уровневый. Админ и Юзверь. Юзвери - только смотрят (читают базу). Когда на одном из них входит админ - в базу пишется значение EnterAdmin=true Раз в 10 секунд прога смотрит это значение и если оно стало true - выводит пользователю надпись: "занято" и картинку с унитазом и "данон". Добавлено через 18 секунд База аксцессовская. ADO.
0
|
|
|
161 / 159 / 39
Регистрация: 10.10.2010
Сообщений: 461
|
|
| 29.10.2010, 08:50 | |
|
Уже давно придумали сетевые СУБД(Firebird, MySql, MsSql, Oracle, Sybase и т.д.), и делать клиент сервер на Аксесе потом заморачиватся с отловом всяких там админентер, таблица занята и т.д. вроде как уже и не интересно
0
|
|
|
67 / 67 / 11
Регистрация: 08.10.2010
Сообщений: 138
|
|||
| 29.10.2010, 09:17 | |||
![]()
0
|
|||
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
|
| 29.10.2010, 11:39 | |
|
0
|
|
| 29.10.2010, 11:39 | |
|
Помогаю со студенческими работами здесь
12
Из DataSet экспортировать данные в Excel Получить данные в DataSet из интернета
Данные из DataSet->FieldByName() SQL Получить данные из DataSet в ListBox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|