مشكلة في حسابات تتعلق بالزمن والتاريخ
#11
و عليكم السلام و رحمة الله

أنا هنا لكنك لم تجبني فيما كتبت

إقتباس : اقتباس:
وجبة الغذاء تبدأ من الساعة 11:01 وتنتهي على الساعة 14:00
وجبة العشاء تبدأ من الساعة 18:00 وتنتهي على الساعة 21:00
المبيت يبدأ من الساعة 00:00 وتنتهي على الساعة 05:00
ملاحظة أولية خطأ في السطرين الأخيرين و الصواب

وجبة الغذاء تبدأ من الساعة 11:01 وتنتهي على الساعة 14:00
وجبة العشاء تبدأ من الساعة 18:01 وتنتهي على الساعة 21:00
المبيت يبدأ من الساعة 00:01 وتنتهي على الساعة 05:00
من تشبه بقوم فهو منهم
الرد
#12
مهدي كتب :و عليكم السلام و رحمة الله

أنا هنا لكنك لم تجبني فيما كتبت

السلام عليكم أعذرني لم انتبه
ظننتك وجدت الخطأ وأصلحته وأن ما كتبته هو انك حذرتني من الخطأ

وسأشرح لك

الصواب هو :
وجبة الغذاء تبدأ من الساعة 11:01 وتنتهي على الساعة 14:00
وجبة العشاء تبدأ من الساعة 18:01 وتنتهي على الساعة 21:00
المبيت يبدأ من الساعة 00:01 وتنتهي على الساعة 05:00

ملاحظة أخرى
كيف يمكن للساعة ان تخرج في ورقة الطباعة بهذا الشكل
00:00 بدلا من 00:00:00
وكيف يمكن للتاريخ ان يخرج في ورقة الطباعة على هذا الشكل
01/01/2008 بدلا من 2008/01/01
الرد
#13
و عليكم السلام و رحمة الله

إقتباس :كيف يمكن للساعة ان تخرج في ورقة الطباعة بهذا الشكل
00:00 بدلا من 00:00:00

هل تريد إلغاء حساب الثواني ؟

إقتباس :وكيف يمكن للتاريخ ان يخرج في ورقة الطباعة على هذا الشكل
01/01/2008 بدلا من 2008/01/01

يمكنك تغيير شكل التاريخ من الإعدادت الإقليمية في لوحة التحكم

بدلا من dd-MM-yyyy اكتب yyyy-MM-dd
من تشبه بقوم فهو منهم
الرد
#14
السلام عليكم ورحمة الله تعالى وبركاته
وصباح الخير

نعم **** إلغاء حساب الثواني حتى تظهر الساعة بأربعة ارقام في الطباعة بدلا من ستة ارقام

أما بالنسبة للتاريخ
فانا اعرف بان التغيير يكون في لوحة التحكم
لكن ما ****ه هو ان التغيير يكون داخل البرنامج لكي حتى ولو كان في الويندوز يظهر من اليسار الى اليمين لا بد من اظهاره في البرنامج من اليمين الى اليسار
وشكرًا
الرد
#15
و عليكم السلام و رحمة الله و بركاته

إقتباس : لماذا هذه النجوم التي تظهر في مكان بعض الكلمات
توجد بعض الكلمات محظورة في المنتدى

إقتباس :لكن ما ****ه هو ان التغيير يكون داخل البرنامج لكي حتى ولو كان في الويندوز يظهر من اليسار الى اليمين لا بد من اظهاره في البرنامج من اليمين الى اليسار
إليك هذا المثال الذي يحدث التغيير الذي أردته و ذلك لإستعمال كائن TButton و كائنين من TEdit

كود :
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var Present: TDateTime; Year, Month, Day, Hour, Min, Sec, MSec: Word; begin Present:= Now; DecodeDate(Present, Year, Month, Day); Edit1.Text:=IntToStr(Year)+'-'+IntToStr(Month)+'-'+IntToStr(Day) ; DecodeTime(Present, Hour, Min, Sec, MSec); Edit2.Text:=IntToStr(Hour) + ':'+ IntToStr(Min) end; end.
من تشبه بقوم فهو منهم
الرد
#16
شكرًا جزيلاً وسأرى بعد التجربة وأخبرك
الرد
#17
السلام عليكم ورحمة الله تعالى وبركاته
الأكود الذي تمت به التجربة وحولته هو الملف المرفق من طرفكم
DATE_HEURE_correct
لقد حولته من DateTimePicker إلى DBedit
ولم افلح (اين الخطأ يا ترى)

لابد من الإطلاع على المرفق وتبيين الخطأ أين يكمن
وتصحيحه من فضلكم
الرد
#18
و عليكم السلام ورحمة الله تعالى وبركاته

الخطأ هو

كود :
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;

ملاحظة: الحل المقترح مع انه يقوم بما تريد إلا أنه ليس نهائي تستطيع دائما التحسين

ننتظر النتيجة ، و بالتوفيق Smile


الملفات المرفقة
.zip   FRAIS_DEPL_Correct.zip (الحجم : 370.55 ك ب / التحميلات : 69)
الرد
#19
شكرًا جزيلاًا هذا هو المطلوب وجزاكم الله عنا كل خير
ووفقكم لما فيه الخير
متمنيين من المولى عز وجل ان يضع اعمالكم هذه في ميزان حسناتكم
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم