25-05-2008, 01:00 AM
و عليكم السلام ورحمة الله تعالى وبركاته
الخطأ هو
في حين:
DT_DEP1, DT_ARV1: Date
HR_DEP1, HR_ARV1: Time
لمعالجة الوضعية (أؤكد أنها تتغير حسب المبرمج، البرنامج، ...) تستطيع استعمال هذه الطريقة:
اللون الأزرق يعبر عن التعديل
بالنسبة للإدخال في الجدول حاول دائما الإدخال مرة واحدة.
ملاحظة: الحل المقترح مع انه يقوم بما تريد إلا أنه ليس نهائي تستطيع دائما التحسين
ننتظر النتيجة ، و بالتوفيق
الخطأ هو
كود :
table3.fieldByName('HR_DEP1').asdateTime:=table3.fieldByName('DT_DEP1').asdateTime;
table3.fieldByName('HR_ARV1').asdateTime:=table3.fieldByName('DT_ARV1').asdatetime;في حين:
DT_DEP1, DT_ARV1: Date
HR_DEP1, HR_ARV1: Time
لمعالجة الوضعية (أؤكد أنها تتغير حسب المبرمج، البرنامج، ...) تستطيع استعمال هذه الطريقة:
اللون الأزرق يعبر عن التعديل
كود :
procedure TForm1.Calcul1Click(Sender: TObject);
var t1,t2,
[color=Blue] t01,t02[/color] : tdatetime;
i,j : integer;
AYear,AMonth,ADay : word;
[COLOR=Blue] function TheTime(AYear,AMonth,ADay:word ;heure:string):tdatetime;
var Hour,Min,Sec,MSec : Word;
begin
DecodeTime(strtotime(heure),Hour,Min,Sec,MSec);
Result := EncodeDateTime(AYear,AMonth,ADay,Hour,Min,Sec,MSec);
end;[/COLOR]
begin
i:=DaysBetween(table3.fieldByName('DT_DEP1').asdateTime,table3.fieldByName('DT_ARV1').asdatetime);
DecodeDate(table3.fieldByName('DT_DEP1').asdateTime,
AYear,AMonth,Aday);
t1:=EncodeDateTime(AYear,AMonth,ADay,
14,00,00,00);
[color=Blue]t01 := TheTime(AYear,AMonth,Aday,table3.fieldByName('HR_DEP1').AsString);[/color]
DecodeDate(table3.fieldByName('DT_ARV1').asdatetime,
AYear,AMonth,Aday);
t2:=EncodeDateTime(AYear,AMonth,ADay,
11,01,00,00);
[color=Blue]t02 := TheTime(AYear,AMonth,Aday,table3.fieldByName('HR_ARV1').AsString);[/color]
j:=0;
if ([color=Blue]t01[/color]<t1)then
j:=j+1;
if [color=Blue]t02[/color]>=t2 then
j:=j+1;
table3.Edit;
table3.FieldByName('Nb_RPJ1').asInteger:=(i-1+j);
table3.Post;
DecodeDate(table3.fieldByName('DT_DEP1').asdateTime,AYear,AMonth,Aday);
t1:=EncodeDateTime(AYear,AMonth,ADay,
21,00,00,00);
[color=Blue]t01 := TheTime(AYear,AMonth,Aday,table3.fieldByName('HR_DEP1').AsString);[/color]
DecodeDate(table3.fieldByName('DT_ARV1').asdatetime,AYear,AMonth,Aday);
t2:=EncodeDateTime(AYear,AMonth,ADay,
18,00,00,00);
[color=Blue]t02 := TheTime(AYear,AMonth,Aday,table3.fieldByName('HR_ARV1').AsString);[/color]
j:=0;
if ([color=Blue]t01[/color]<t1)then
j:=j+1;
if [color=Blue]t02[/color]>=t2 then
j:=j+1;
Table3.edit;
table3.FieldByName('Nb_RPM1').asInteger:=(i-1+j);
table3.post;
DecodeDate(table3.fieldByName('DT_DEP1').asdateTime,AYear,AMonth,Aday);
t1:=EncodeDateTime(AYear,AMonth,ADay,
05,00,00,00);
[color=Blue]t01 := TheTime(AYear,AMonth,Aday,table3.fieldByName('HR_DEP1').AsString);[/color]
DecodeDate(table3.fieldByName('DT_ARV1').asdatetime,AYear,AMonth,Aday);
t2:=EncodeDateTime(AYear,AMonth,ADay,
00,00,00,00);
[color=Blue]t02 := TheTime(AYear,AMonth,Aday,table3.fieldByName('HR_ARV1').AsString);[/color]
j:=0;
if ([color=Blue]t01[/color]<t1)then
j:=j+1;
if ([color=Blue]t02[/color]>t2) then
j:=j+1;
table3.edit;
table3.FieldByName('N_Che1').asInteger:=(i-1+j);
table3.FieldByName('N_RP1').AsInteger:=Table3.fieldbyname('Nb_RPJ1').AsInteger + table3.fieldbyname('Nb_RPM1').AsInteger;
table3.Post;
end;بالنسبة للإدخال في الجدول حاول دائما الإدخال مرة واحدة.
كود :
table3.Edit;
table3.FieldByName('Nb_RPJ1').asInteger:=(i-1+j);
table3.FieldByName('Nb_RPM1').asInteger:=(i-1+j);
table3.FieldByName('N_Che1').asInteger:=(i-1+j);
table3.FieldByName('N_RP1').AsInteger:=
Table3.fieldbyname('Nb_RPJ1').AsInteger + table3.fieldbyname('Nb_RPM1').AsInteger;
table3.Post;ملاحظة: الحل المقترح مع انه يقوم بما تريد إلا أنه ليس نهائي تستطيع دائما التحسين
ننتظر النتيجة ، و بالتوفيق

