Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Вычисляемое поле   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.408 c
2-1128405886
Well
2005-10-04 10:04
2005.11.06
SQL запрос в FoxPro, соединение 2 таблиц


14-1129646450
Fin
2005-10-18 18:40
2005.11.06
Опять про миранду.


5-1106314196
STS
2005-01-21 16:29
2005.11.06
Регистрация ActiveX контрола


14-1129381101
alexsis
2005-10-15 16:58
2005.11.06
Уважаемые мастера, люди.


3-1127813135
Wolferio
2005-09-27 13:25
2005.11.06
Удаление всех записей в базе.