Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменять динамические поля созданные в TQuery ? [D7, Paradox]


Страницы:   1 2

Alpine ©   (2005-09-18 13:17:00) 

Значит создал я два динамических поля (KOLICHESTVO и SUMMA) в Query1 ... Задал свойству RequestLive значение True ... Теперь мне надо в гриде менять значение поля KOLICHESTVO и после изменения SUMMA=KOLICHESTVO*PRICE(это поле не динамическое).... Так вот в гриде не получается изменять значение этого поля ... В гриде разрешенно EDITING. И ReadOnly=False.  В чём может быть проблемма .. Помогите ...


msguns   (2005-09-19 15:09:00) [21]

>Sergey13 ©   (19.09.05 14:48) [14]
>Посмотрим чей телепатор круче.

На пиво ?


Sergey13   (2005-09-19 14:48:00) [22]

2[12] msguns ©   (19.09.05 14:40)
А мне мой телепатор подсказывает, что он вводит нечто вроде накладной. Но непонятно, при этом, почему у него количество вычисляемое. Оно просто должно вводиться.
Посмотрим чей телепатор круче. 8-)


msguns   (2005-09-19 14:47:00) [23]

>ANB ©   (19.09.05 14:18) [11]
>- если опишешь обработчик - оно само введется. Только убери его из запроса и сделай нормальное вычисляемое поле.

Не то.

Чтобы калк-поле запроса пересчиталось, надо запостить запись, т.е. как минимум "уйти" с нее. А он хочет чтоб узер поправил цену и переведя курсор в другую ячейку этой жезаписи, сразу получил новую сумму.
Если не пересчитывать ее вообще по любому изменению цены (OnKeyXXX грида), что, имхо, вообще уродство.


msguns   (2005-09-19 14:40:00) [24]

>Sergey13 ©   (19.09.05 14:15) [10]
>ИМХО, ты сам не знаешь, что тебе надо.

Попробую включит телепатор ;)
Похоже у него такая трабла:

Есть три сущности: a,b и c, причем c = a * b
Однако позволяется менять все 3 сущности, при этом если одна из них меняется, то должны быть пересчитаны остальные 2:

a = c/b  или b = c/a

Если так, то редактирование в гриде возможно (при том же компоненте доступа) только если поле c - регулярное табличное поле.

Если нет, то редактирование в гриде возможно, только с прорисовкой в  гриде (прорисовкой точно по укоординатам ячейки)  TEdit`а.
Маразм, конечно, т.к. требует кучи кода по корректному переключению видимости и перерисовке єдита при любых событиях перемещения как по гриду (между колонками), так и по НД (между записями).

Нормальное решение -
1. отказаться от редактирования в гриде, перейдя на модальную форму редактирования записи (имхо-оптимально).
2. использовать непривязанный в "живой" таблице запрос (стрингрид, CDS, НД в памяти (Rxlib) и т.д.)


ANB   (2005-09-19 14:18:00) [25]


> Alpine   (19.09.05 14:11) [9]
- если опишешь обработчик - оно само введется. Только убери его из запроса и сделай нормальное вычисляемое поле.


Sergey13   (2005-09-19 14:15:00) [26]

2 [9] Alpine   (19.09.05 14:11)
ИМХО, ты сам не знаешь, что тебе надо. Описал бы задачу которую решаешь. Я почему то почти уверен, что ты заблудился в трех соснах.


Alpine   (2005-09-19 14:11:00) [27]

Проблемма в том что мне надо вводить значение в вычисляемое поле !


Megabyte   (2005-09-19 14:00:00) [28]

Вычисляемые поля на то и вычисляемые. В чем проблема сделать обработчик события?


Alpine   (2005-09-19 13:49:00) [29]

Anatoly Podgoretsky
Это вычисляемые поля ... В таблице есть ещё много полей. Мне нужно в поле количество вводить даные, после чего сумма стане = количество * цену. Значит в CalcFields никак нельзя ввести данные да ?


msguns   (2005-09-19 12:54:00) [30]

Идея ясна. В базе есть 2 поля: к-во и цена.
Клиенту при их визуализации надо еще посчитать сумму. При этом если редактируется одно из "рабочих" полей, то автоматом должна меняться и сумма.
Решение получать это поле на "сервере" (в запросе) неудачное, имхо. Для отображения(и только, ведь это число в БД записано не будет) достаточно "кинуть" в запрос любое "левое" поле, в OnGetText которого прописать

With Field.DataSet do
  Text := IntToStr(FieldByName('Quont').AsInteger*FieldByName('Price').AsInteger)


Plague   (2005-09-19 12:35:00) [31]

"Руками" ты вычисляемые поля не заполнишь, они не для этого рождены. В OnCalcFields напиши процедурку, которая будет "SUMMA=KOLICHESTVO*PRICE" и все... если я праввильно понял subject ;-)


Anatoly Podgoretsky   (2005-09-19 11:55:00) [32]

Alpine   (18.09.05 13:45) [2]
Теперь подробно об этих полях, что какое и как, и это вроде бы или расчетные, или подстановочные, или списочные поля, но только не динамические.


Виталий Панасенко   (2005-09-19 11:38:00) [33]

Ты имеешь ввиду, вычисляемые ? Наверное, с наскоку, никак.. в OnCalcFields только


Alpine   (2005-09-18 13:45:00) [34]

Это поля реально не существующие в таблице. Они добавляются в Query или Table в разделе FieldsEditor.


Anatoly Podgoretsky   (2005-09-18 13:21:00) [35]

Что такое динамические поля?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо