powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как обновить строку в гриде после изменения данных в базе?
19 сообщений из 19, страница 1 из 1
Как обновить строку в гриде после изменения данных в базе?
    #32109487
Leonid Spiridonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть.
Хранимой процедурой изменяю значение поля Status текущей записи в базе.
На событие OnCustomDrawCell повешена процедура раскраски строк в зависимости от значения поля Status.
Надо: после изменения значения поля в базе обновить строку в гриде, желательно без получения всех данных из базы.
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32109511
olga1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если используются ADO-компоненты, то
Query.Refresh;
Query.UpdateCursorPos;
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32109671
Leonid Spiridonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую ADO, c Refresh'ем работает, но медленно - получаются все данные из базы. Попробовал заменить на Resync, если верить хелпу, то он работает как Refresh, но только обновляет текущую запись, предудущую и следующую записи, однако у меня Resync не заработал - данные в гриде не изменились.
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32109775
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меняй значение поля в RecordSet паралельно с XП, только Post не делай :)
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32109792
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 golsa

Ты бы лучше не предлагал - а то человек и вправду так делать будет
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110240
Leonid Spiridonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что значит "ХР" и почему этого делать не следует?
Извините, если вопросы кажутся глупыми - я еще тот программист.
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110245
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХП- Хороший Программист :-))))
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110296
duha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вызов метода requery если dataset.active=true и open если он был закрыт?
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110427
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй DBGrid . Refresh;
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110538
Iv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Iv
Гость
Дык как обновить одну запись?
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110645
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак ты не обновишь одну запись - обновляй весь датасет.
Close; Open;
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110756
vladuha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу предложить такой вариант (действует, правда, если кол-во записей в датасете не меняется): в гриде выводятся только те поля, значения которых не изменяются (с помощью Query1), остальные поля на форме размещаются с помощью dbText, которые выводятся через Query2. А потом на событие afterscroll запроса Query1 вешаешь обработку типа

Query2.Close;
Query2.Parameters.ParamByName('Param).Value:=Query1.FieldByName('KeyField').AsFloat;
Query2.Open;

в результате dbText'ы будут отражать рельные данные, даже если другой пользователь их уже поменял.

А вот что делать, если другой юзер данные добавил или удалил :((, то тут что делать, кроме Close и Open всего датасета, я не знаю
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110894
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вы че, ребята?
На копеечную проблему разговоров на рупь развели
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32110993
vladuha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, tygra, но я с тобой не согласен. Проблема действительно большая. Объясню почему: у меня на работе стоят в основном машины с Windows 98 и 16 или 32 метров памяти, с медленными винтами и старыми петюхами, а есть еще и 486 (помнишь были такие?). Так вот делать close/open на таблице даже с 10000 записями и отображать их в гриде, это удовольствие на 1 минуту и больше. Вот и пытаюсь победить эту проблему.
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32111004
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гнать и отображать на клиенте 10000 записей, это нонсен даже для П4. Че у тебя народ с таким кол-вом записей делать будет.
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32111008
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ты с ума сошел? 10000 записей в гриде!!!!!!!
Зачем? С вундеркиндами работаешь - они сразу все их видят?

И при чем тут 486? Разницы нет - сеть то от процессора не зависит
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32111064
vladuha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to tygra & pkarklin. Честно говоря, начинается треп не связанный не темой, но попробую объяснить. Для программера главный кто? По-моему, юзер с его дурацкими запросами и пожеланиями. И вот у моих юзеров были пожелания: хочу видеть сразу всю базу, я хочу по ней скроллиться и видеть все и сразу. Т.к. автоматизация шла не по плану, а по моей инициативе, пришлось пойти им на встречу (лишь бы на бумаге все эти данные не писали, а потом на калькуляторе не суммировали :((( ). Вот такой, может и не совсем конкретный, ответ.

Честно говоря, я тоже не вижу ничего страшного (с точки зрения пользователя) когда я захожу в программу, в окошке вижу сразу все данные, пролистываю их и мне не надо помнить никаких дополнительных данных. И как бы было еще хорошо, если бы я лазю по гриду, а другой юзер в это время что-то обновил, а у меня в гриде эти изменения сразу бы и отобразилось. Логика железная .
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32111090
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта логика идет из времен dbf.

А юзеров надо отучать, и начальство тоже. Как? А сказать, что долго будет так - и сделать долго, специально, пусть помучаются.

Потому что нет задач, когда нужны все записи - никакой юзер не сможет убедить, если грамотно с ним разговаривать.

А так если идти на поводу - клиентская часть будет похожа на неповоротливого монстра :)
...
Рейтинг: 0 / 0
Как обновить строку в гриде после изменения данных в базе?
    #32111166
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To vladuha:
у моих юзеров были пожелания: хочу видеть сразу всю базу, я хочу по ней скроллиться и видеть все и сразу...
Ну говорят же тебе - неправильно это. Все данные никогда не нужны пользователю. Предположим, есть у тебя табличка всего-лишь из 1000 строк, каждая строка по 1К. Для того, чтобы клиент всего-лишь увидел их, тебе надо перегнать 1 Мег на клиента, разместить его в памяти. А если там 100000 строк?
Посчитай, сколько строк у тебя одновременно можно отобразить в гриде? Скорей всего не больше 50, так нафига тебе качать остальные, когда их можно взять потом, в момент прокрутки? Для этого и настройки есть, сколько строк за один раз фетчить.

И как бы было еще хорошо, если бы я лазю по гриду, а другой юзер в это время что-то обновил, а у меня в гриде эти изменения сразу бы и отобразилось.
Было у меня такое сделано - при изменении данных клиентам рассылалось сообщение на обновление данных. Но возникли такие проблемы - человек 10 сидят и редактируют документы, по очереди нажимают "сохранить" и у каждого обновляется грид. Т.е. если человек нажал "Сохранить", тут-же (одновременно) от 10 клиентов летят в базу одинаковые запросы. А если клиентов 40-60 ? А если у 20 из них стоят фильтры, и те записи, которые изменены другими юзерами, эти 20 человек вообще не видят (они им не нужны). Ну и курсорчик у них исправно дергается в часики (обновление данных). Потом переделал на таймер и добавил кнопку "Обновить" - когда надо, пусть сами обновляют.
Так что делай, как надо, а не так как хотят юзеры.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как обновить строку в гриде после изменения данных в базе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]