Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизВычисляемое поле Найти похожие ветки
← →
Arkady © (2005-10-14 09:05) [0]Как обновить вычисляемое поле?
← →
Johnmen © (2005-10-14 09:13) [1]Что такое "вычисляемое поле"?
Что значит "обновить"?
← →
ЮЮ © (2005-10-14 09:14) [2]если в DataSete, то изменив поле, участвующее в вышислении
если в таблице на сервере, то обновив запись
← →
Arkady © (2005-10-14 09:28) [3]Дело в том, что значение вычисляемого поля Таблицы1 (TADODataset) есть сумма, определяемая по запросу из другой Таблицы2 (в расчете вычисляемого поля Таблицы1 не участвует ни одно из её полей). При изменении значения в Таблице2 должен быть пересчет значения вычисляемого поля текущей записи Таблицы1.
← →
ANB © (2005-10-14 10:30) [4]Определить момент изменения таблицы2 и переоткрыть запрос на таблицу1.
А зачем тут вычисляемое поле ? Можно было бы и запросом сумму из другой таблицы посчитать.
Кстати, а если другой пользователь в сети таблицу2 поменяет ? Тогда уже лучшо не обновлять, т.к. пользователь замучается за морганием смотреть.
ЗЫ. Ветка не оформлена.
← →
Sergey13 © (2005-10-14 10:40) [5]2[4] ANB © (14.10.05 10:30)
>А зачем тут вычисляемое поле ?
тут ИМХО проблемы с терминологией просто.
← →
Arkady © (2005-10-14 11:05) [6]
> переоткрыть запрос на таблиц
Слишком долго, изменилась только одна запись
> а если другой пользователь в сети таблицу2 поменяет
Это другой вопрос, в данном случае только один пользователь меняет таблицу2
> тут ИМХО проблемы с терминологией просто
Нет, я расчет идет именно в вычисляемом поле
P.S. Буду делать Таблица1.Edit; Таблица1.Post чтобы вызвать OnCalcFields
← →
Sergey13 © (2005-10-14 11:10) [7]В запросе
Select t1.f1,sum(t2.f1) where.....
поле t2.f1 - хоть и вычисляется, но вычисляемым полем (с точки зрения Делфи и Сервера БД) не является. Вот такой парадокс. 8-)
← →
Arkady © (2005-10-14 11:14) [8]Я имею в виду Таблица1Поле1.FieldKind=fkCalculated
← →
Sergey13 © (2005-10-14 11:22) [9]2 [8] Arkady © (14.10.05 11:14)
Тогда приведи процедуру ОнКалкФилд
← →
Виталий Панасенко (2005-10-14 11:26) [10]
> Arkady © (14.10.05 09:28) [3]
> Дело в том, что значение вычисляемого поля Таблицы1 (TADODataset)
> есть сумма, определяемая по запросу из другой Таблицы2 (в
> расчете вычисляемого поля Таблицы1 не участвует ни одно
> из её полей). При изменении значения в Таблице2 должен быть
> пересчет значения вычисляемого поля текущей записи Таблицы1.
>
> Arkady © (14.10.05 11:05) [6]
>
> > переоткрыть запрос на таблиц
>
> Слишком долго, изменилась только одна запись
А тут нет противоречия ?
← →
Arkady © (2005-10-14 11:31) [11]
> Sergey13 © (14.10.05 11:22) [9]
procedure Таблица1CalcFields(DataSet: TDataSet);
var qt:tadoquery;
…
begin
…
qt.sql.tex:=’select sum(pole1) as sss from Таблица2’ //может быть и более сложный запрос
qt.open;
Таблица1Поле1.asFloat:=qt.fieldbyname(‘sss’).asFloat;
…
end;
← →
Sergey13 © (2005-10-14 11:42) [12]2 [11] Arkady © (14.10.05 11:31)
Тогда достаточно наверное будет убрать текущую запись с видимой части грида и вернуться обратно.
Но вычислять так - изврат полнейший, ИМХО.
Во первых - нет никакой привязки к текущей записи. Нафиг одинаковые цифры во всех записях?
Во вторых. Попробуй в эту процедуру поставить например точку останова или вывод сообщения и посчитай как часто он срабатывает.
Почему нельзя это поле вкючить в запрос датасета?
>//может быть и более сложный запрос
Это ты типа меня пугаешь? 8-)
← →
ANB © (2005-10-14 11:43) [13]
> Arkady © (14.10.05 11:31) [11]
Такая конструкция будет перегружать сервер и трафик, так как будет вызваться слишком часто. Сделай все одним запросом.
← →
Arkady © (2005-10-14 12:04) [14]
> Тогда достаточно наверное будет убрать текущую запись с
> видимой части грида и вернуться обратно.
Если я правильно понял Таблица1Поле1.visible:=false;Таблица1Поле1.visible:=true;
то не помогает
> Нафиг одинаковые цифры во всех записях
Сорри, хотел сказать
qt.sql.tex:=’select sum(pole1) as sss from Таблица2 where тыры-пыры’
> и посчитай как часто он срабатывает
Я предельно всё упростил, можно создать отдельный DataSet, хранить в нем все результаты select по всем записям Таблицы1 и обновлять по Таблица2.post. Речь не об этом. Мне нужно обновить только вычисляемое поле текущей записи, остальные не трогать! Если нельзя по другому, то буду использовать Edit-Post.
> Почему нельзя это поле вкючить в запрос датасета?
Тогда нужно будет обновлять весь датасет, что нежелательно.
← →
ANB © (2005-10-14 12:27) [15]
> Arkady © (14.10.05 12:04) [14]
Нежелательно лазить на сервер при навигации по гриду. А проблему можно таки решить. Где то была статья про рефреш одной записи.
← →
Arkady © (2005-10-14 12:32) [16]
> Где то была статья про рефреш одной записи.
Если не трудно, дайте ссылку
← →
ANB © (2005-10-14 12:44) [17]Это с неделю назад было. Тема была соответствующая. Полазь сам - мне некогда.
← →
ANB © (2005-10-14 12:45) [18]В смысле ветка в этой же конференции.
ЗЫ. Когда поиск починят ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.048 c