المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم ورحمة الله تعالى وبركاته
ارفع محاولتي واطلب الاطلاع عليها فيما يتعلق بكود النتيجة
هل هو صحيح ام لا
المطلوب هو اذا كان التاريخ الاول يساوي 01/01/2011 والتاريخ الثاني يساوي 31/12/2013
النتيجة تكون 36 شهرا
اما اذا كان التاريخ الثاني يسازي 30/11/2013 فالنتيجة تكون 35 شهرا
ملاحة اذا كان هناك طيادة في الكود لا نحتاجها ارجو حذفها
وجزاكم الله عنا كل خير
[attachment=4084]
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
اولا اعتذر
عيدكم مبارك وسعيد وكل عام وانتم والامة الاسلامية بالف خير
نسأل الله العلي القدير ان يعيده علينا بالخير والسعادة أمـــين
ملاحطة
لماذا عندما يكون التاريخ الاول يساوي 01/01/2011 والتاريخ الثاني يساوي 28/02/2011 تكون النتيجة 1 شهر واحد
مادا افعل حتى تصبح النتيجة 2 شهران بدلا من شهر انا اضفت في الكود +1 كما هو مبين في المرفق ولا اعرف ان كان منطقي ام لا
ارجو الرد بارك الله فيكم لأني بحاجة ماسة لهذا الكود
جزاكم الله عنا كل خير
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
(17-08-2019, 06:15 PM)medreg كتب : اولا اعتذر
عيدكم مبارك وسعيد وكل عام وانتم والامة الاسلامية بالف خير
نسأل الله العلي القدير ان يعيده علينا بالخير والسعادة أمـــين
ملاحطة
لماذا عندما يكون التاريخ الاول يساوي 01/01/2011 والتاريخ الثاني يساوي 28/02/2011 تكون النتيجة 1 شهر واحد
مادا افعل حتى تصبح النتيجة 2 شهران بدلا من شهر انا اضفت في الكود +1 كما هو مبين في المرفق ولا اعرف ان كان منطقي ام لا
ارجو الرد بارك الله فيكم لأني بحاجة ماسة لهذا الكود
جزاكم الله عنا كل خير
لان 28-1 = 27 وهي اقل من 30 يوم
الفارق 01 شهر و 27 يوم
المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
(17-08-2019, 06:15 PM)medreg كتب : اولا اعتذر
عيدكم مبارك وسعيد وكل عام وانتم والامة الاسلامية بالف خير
نسأل الله العلي القدير ان يعيده علينا بالخير والسعادة أمـــين
ملاحطة
لماذا عندما يكون التاريخ الاول يساوي 01/01/2011 والتاريخ الثاني يساوي 28/02/2011 تكون النتيجة 1 شهر واحد
مادا افعل حتى تصبح النتيجة 2 شهران بدلا من شهر انا اضفت في الكود +1 كما هو مبين في المرفق ولا اعرف ان كان منطقي ام لا
ارجو الرد بارك الله فيكم لأني بحاجة ماسة لهذا الكود
جزاكم الله عنا كل خير
كما رد أخونا
onexite
للزيادة، هناك إجراءات في الدلفي تمكنك من معرفة الفرق بين تاريخين (عدد الأيام، عدد الشهور، عدد السنين ....)
فيما يهمك هما: (أنقر على كل كلمة لقراءة التوثيق الرسمي)
عدد الشهور:
MonthsBetween
عدد السنين:
YearsBetween
وحسب ما تريده هو أن
يعد الشهر الأخير ضمن الحساب لذلك هناك الإجراء
MonthSpan (كذلك بخصوص حساب السنة الأخيرة
YearSpan)
لذلك لا تحتاج لكل الكود الذي كتبته في برنامجك، ويصبح كالتالي:
PHP كود :
procedure TForm1.AdvSmoothButton1Click(Sender: TObject);
begin
with DM Do
begin
Tb1.Edit;
Tb1.Fieldvalues['AnneeGanier'] := YearSpan(Tb1.Fieldvalues['Dt_Debut'], Tb1.Fieldvalues['Dt_Dernr']);
Tb1.Fieldvalues['MoisGanier'] := MonthSpan (Tb1.Fieldvalues['Dt_Debut'], Tb1.Fieldvalues['Dt_Dernr']);
Tb1.post;
end;
end;
ملاحظة: سيعمل الكود الجديد بشكل جيد، لكن لمن أراد أن يستعمل هاته الإجراءات يضيف الوحدة System.DateUtils في Uses
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
18-08-2019, 06:33 PM
(آخر تعديل لهذه المشاركة: 18-08-2019, 07:03 PM بواسطة S.FATEH.)
بارك الله فيكم اخي مروان
هذا ما كنت اقصد
لكن عندما وضعت نفس الكود بالنسبة لعدد الايام ينقص منه يوم
غيرت فقط الدالة MonthSpan بـ DaySpan
يعني عندما يمون التاريخ الاول 01/01/2011 والتاريخ الثاني 28/01/2011 النتيجة التي تظهر 27 يوم
ومن المفروض النتيجة المطلوبة هي 28 يوما
جزاكم الله عنا كل خير
المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
(18-08-2019, 06:33 PM)medreg كتب : بارك الله فيكم اخي مروان
هذا ما كنت اقصد
لكن عندما وضعت نفس الكود بالنسبة لعدد الايام ينقص منه يوم
غيرت فقط الدالة MonthSpan بـ DaySpan
يعني عندما يمون التاريخ الاول 01/01/2011 والتاريخ الثاني 28/01/2011 النتيجة التي تظهر 27 يوم
ومن المفروض النتيجة المطلوبة هي 28 يوما
جزاكم الله عنا كل خير
DaySpan يحسب الأيام بأخذ بعين الاعتبار الساعات، التنيجة عدد كسري (أرقام بفواصل)
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
DaySpanV, DaySpanB: double;
begin
DaySpanV := DaySpan(strToDateTime('01/01/2019 12:00:00'),
strToDateTime('01/28/2019 11:30:00'));
DaySpanB := DaysBetween(strToDateTime('01/01/2019 12:00:00'),
strToDateTime('01/28/2019 11:30:00'));
Label1.Caption := 'DaySpan value : '+ floattostr(DaySpanV)+ #10
+ 'DaysBetween value : '+ floattostr(DaySpanB);
end;
النتيجة:
كود :
DaySpan value : 26.9791666666642
DaysBetween value : 26
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
جزاك الله عنا كل خير لقد اكتفيت باضافة +1 في اخر السطر حتى تتم العملية واضفت دالة التقريب حتى اتخلص من الفاصلة