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

Вниз

Последняя надежда   Найти похожие ветки 

 
Defort ©   (2006-12-16 23:20) [0]

Последняя надежда на вас, мастера. Я так и не смог разобраться со своей проблемой.

Процедура вычислимых полей:
procedure TDataModule1.ADOTable3CalcFields(DataSet: TDataSet);
var peni, ost, ostatok: real;
   date, must: TDateTime;
   days: word;
begin
 must:=ADOTable3DSDesigner.AsDateTime;
 if ADOTable3.FieldValues["Дата платежа"]=NULL then
   date:=now;
 if date>must then
 begin
   days:=DaysBetween(must, date);
   peni:=peni+(ADOTable3DSDesigner2.AsCurrency-ADOTable3DSDesigner7.AsCurrency)*ADOTable1DSDesigner5.AsFloat;
   ost:=peni+ADOTable3DSDesigner2.AsCurrency-ADOTable3DSDesigner7.AsCurrency;
   ADOTable3DSDesigner3.Value:=peni;
   ADOTable3DSDesigner5.Value:=ost;
   if ost=0 then
       ADOTable3.FieldValues["Погашен"]:=true;
     end;
end;


Когда доходит до строки
ADOTable3DSDesigner3.Value:=peni;
начинает заного. Не знаю как быть. Нид хелп!


 
BiN ©   (2006-12-17 00:17) [1]

Очевидно, поле DSDesigner3 у тебя не calculated, из-за чего происходит рекурсивный дедлок.


 
MsGuns ©   (2006-12-17 00:19) [2]

засстрелиться ;(((


 
Defort ©   (2006-12-17 11:12) [3]


> Очевидно, поле DSDesigner3 у тебя не calculated, из-за чего
> происходит рекурсивный дедлок.


Я проверял это. Поле calculated, факт!


 
MsGuns ©   (2006-12-17 11:20) [4]

А засунуть всех этих бесконечных "дизайнеров" в связанный запрос и поместить на сервер не пробовали ?
Чтобы избавить клиентский код от этого кошмара.

И просто совет: не пишите так никогда:

  peni:=peni+(ADOTable3DSDesigner2.AsCurrency-ADOTable3DSDesigner7.AsCurrency)*ADOTable1DSDesigner5.AsFloat;

Есть точные сведения, что составление и, особенно, разбор такого кода убивает слона. В то время как никотин, как известно, органичивается лошадью.


 
Defort ©   (2006-12-17 12:11) [5]


> А засунуть всех этих бесконечных "дизайнеров" в связанный
> запрос и поместить на сервер не пробовали ?Чтобы избавить
> клиентский код от этого кошмара.


Пока моя программа не сетевая, а запросы я не учил.

Но я нашел проблема, действительно, оказывается пени были не calculated.

Теперь переполнения нет, но все равно ничего не считает - просто пустые значения (даже не ноль!).

Код с комментариями:
procedure TDataModule1.ADOTable3CalcFields(DataSet: TDataSet);
var peni, ost, ostatok: real;
   date, must: TDateTime;
   days: word;
begin
 must:=ADOTable3DSDesigner.AsDateTime;
 if ADOTable3.FieldValues["Дата платежа"]=NULL then
   date:=now;
 if date>must then
 begin
   days:=DaysBetween(must, date);
   peni:=peni+(ADOTable3DSDesigner2.AsCurrency{сумма платежа}-ADOTable3DSDesigner7.AsCurrency{уже заплачено})*ADOTable1DSDesigner5.AsFloat{коэффициент пени};
   ost{остаток}:=peni+ADOTable3DSDesigner2.AsCurrency{исходня сумма}-ADOTable3DSDesigner7.AsCurrency{уже заплачено};
   ADOTable3DSDesigner3.Value{пени}:=peni;
   ADOTable3DSDesigner5.Value{остаток}:=ost;
   if ost=0 then
       ADOTable3DSDesigner4.Value{текущий статус}:=true;
 end;

end;


Поля, которые он должен считать, остаются пустыми.

Возможно это связано с тем, что он вычисляет поля для связанной таблицы? Вот сам код формирования данных для этой табоицы:

while days<days2 do
     begin
       DataModule1.ADOTable3.Insert;  //по задумке добавление новой строки
       DataModule1.ADOTable3.FieldValues["LinkKey"]:=DataModule1.ADOTable1.FieldValues[ "Key1"]; {перед этим для таблицы 1 была выполнена команда post и edit для того, чтобы linkkey имел значение}
       DataModule1.ADOTable3.FieldValues["Дата платежа"]:=days;//присваиваение полю Дата платежа текущей даты
       DataModule1.ADOTable3.FieldValues["Сумма платежа"]:=summ;
       days:=IncMonth(days);
       DataModule1.ADOTable3.Post;
     end;


 
MsGuns ©   (2006-12-17 18:10) [6]

Аминь..



Страницы: 1 вся ветка

Текущий архив: 2007.01.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
2-1166456508
sat
2006-12-18 18:41
2007.01.07
как свернуть программу в системный трей


2-1166267115
minter
2006-12-16 14:05
2007.01.07
Праблема!


15-1166106278
shulcsan
2006-12-14 17:24
2007.01.07
О среде разработки


15-1166472099
PHPDeveloper
2006-12-18 23:01
2007.01.07
закачка файла


2-1166358355
Apachi
2006-12-17 15:25
2007.01.07
как можно уменьшить размер компилируемой DLL