powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGridEh
9 сообщений из 9, страница 1 из 1
DBGridEh
    #32120718
-Димон-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что это может быть?
На событие DataSet OneCalcFields
FieldByName('Rest').Value:=(FieldByName('Quantity').Value)-(FieldByName('SaleQuantity').Value);
Получается переполнение стека.Как сделать правильно?
...
Рейтинг: 0 / 0
DBGridEh
    #32120853
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А поле Rest у тебя вычисляемое или нет?
...
Рейтинг: 0 / 0
DBGridEh
    #32120858
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕСли это поле данных, и ты его модифицируешь на OnCalcFields, в ответ тебе снова генериться OnCalcFields и ты получаешь зацикливание, что в конце концов приводит к Stack Overflow.

Вот тока интересно, причем тут DBGridEH в теме топика?!
...
Рейтинг: 0 / 0
DBGridEh
    #32121623
-Димон-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А поле Rest у тебя вычисляемое или нет?

Поле Rest хочу сделать вычисляемым:
FieldByName('Rest').Value:=(FieldByName('Quantity').Value)-(FieldByName('SaleQuantity').Value);Оно не виртуальное и находится в базе,может содержать значения.

Вот тока интересно, причем тут DBGridEH в теме топика?!

Чтоб было понятнее :)

Как теперь понимаю OnCalcFields событие не подходит.
Что можно сделать????????
Help me please!?
...
Рейтинг: 0 / 0
DBGridEh
    #32121660
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я спрашивал про вычисляемое поле в терминах TDataSet. А у тебя поле fkData, и делать с ним такое в обработчике OnCalcFields нельзя. Как можно сделать, если нужно вычисляемое поле хранить в базе. Из базы это поле можно не выбирать, раз оно расчитывается на основании значений других полей. Создай поле Rest, типа fkCalculated, в обработчике OnCalcFields пиши, что писал. И его сохраняй в базе.
...
Рейтинг: 0 / 0
DBGridEh
    #32122364
-Димон-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создай поле Rest, типа fkCalculated, в обработчике OnCalcFields пиши, что писал. И его сохраняй в базе.

Прошу меня простить за мою непонятливость.Но как сохраняются поля OnCalcFields?Это же виртуальные поля.Они видны только при работе приложения.
...
Рейтинг: 0 / 0
DBGridEh
    #32122403
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, через что ты работаешь. У меня есть два варианта проектов, одни на BDE, другие на ADO. Везде используются переработанные компоненты доступа к данным, в которых изменения данных сохраняются через инструкции UpdateSQL, InsertSQL и DeleteSQL (не люблю когда за меня ADO решает, какую инструкцию ему на сервер посылать) В которых, как обычно стоит параметр ...SET SomeField = :SomeCalculatedField... А его подствляем из DataSeta, и в данном случаи без разницы, какого оно типа fkData или fkCalculated.
...
Рейтинг: 0 / 0
DBGridEh
    #32122493
-Димон-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что делать в ADO?Компоненты UpdateSQL, InsertSQL и DeleteSQL к сожалению я не использую.Данные получаю через ClientDataSet.
...
Рейтинг: 0 / 0
DBGridEh
    #32122518
Dikobrazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше поставить в DataSource обработку на DataChange. Тогда значение этого поле будет пересчитываться при редактировании других полей.
Код: plaintext
1.
2.
3.
4.
5.
6.
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  if (Field<>nil) and (Field.FieldName<>'Rest') and (Field.DataSet.State in dsEditModes)
  then with Field.DataSet do
    FieldByName('Rest').Value := FieldByName('Quantity').Value - FieldByName('SaleQuantity').Value;
end;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGridEh
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]