Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
2-1166335455
lsvit
2006-12-17 09:04
2007.01.07
Drag&amp;Drop


9-1141300690
Galiaf
2006-03-02 14:58
2007.01.07
Что там по трению? :)


15-1166309701
PHPDeveloper
2006-12-17 01:55
2007.01.07
WordPress


2-1166374385
Vladimir1984
2006-12-17 19:53
2007.01.07
Как отрыть файл BMP в виде цифровой таблице?


2-1166290330
anton773
2006-12-16 20:32
2007.01.07
обратиться к контролам на другой форме (.NET)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский