![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменять динамические поля созданные в TQuery ? [D7, Paradox]
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]Что такое динамические поля?