Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
6-1122299778
maxwellz
2005-07-25 17:56
2005.11.06
перехват TCP/IP пакетов


2-1129281738
ABS
2005-10-14 13:22
2005.11.06
TAdoConnection


1-1129651373
BFG9k
2005-10-18 20:02
2005.11.06
Delphi не воспринимает пользовательские классы


14-1129360380
Колян
2005-10-15 11:13
2005.11.06
Нужно написать серверную программу


2-1129369490
RzCoDer
2005-10-15 13:44
2005.11.06
Дин массивы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский