أخر الأخبار
دروس قواعد البيانات
منذ بضع اعوام

الدرس العشرون من دروس -SQL Server 2014- عمليات Insert -...

اليوم في هذا الدرس سنتطرق الى العمليات الثلاث المهمة في SQL Server و هي  Insert - Up...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس التاسع عشر من دروس -SQL Server 2014- التعليمات Where...

في هذ الدرس الجديد من دروس SQL Server 2014  اليوم سنرى التعليمات الخاصة بتحديد ن...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس الثامن عشر من دروس -SQL Server 2014- التعليمة...

في هذا الدرس الجديد من دروس SQL Server 2014   ُتعتبر تعليمة  Select&nb...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس السابع عشر من دروس -SQL Server 2014- ...

في هذا الدرس الجديد من دروس SQL Server 2014 الإجراءات المخزنة (Les procédures stock...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس السادس عشر من دروس -SQL Server 2014- عمل...

في هذا الدرس الجديد من سلسلة دروس SQL Server 2014 Diagram  هي مجموعة من العناص...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس الخامس عشر من دروس -SQL Server 2014- ربط الجداول...

في هذا الدرس الجديد الخاص بدروس SQL Server 2014  اليوم في هذا الدرس سنريكم كيفية...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس الرابع عشر من دروس -SQL Server 2014- ربط الجداول...

في هذا الدرس الجديد من دروس  SQL Server 2014  سنرى اليوم كيفية ربط الجداول...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس الثالث عشر من دروس -SQL Server 2014- التحليل المعلوماتي...

في هذا الدرس الجديد الخاص بدروس -SQL Server 2014- اليوم سنرى طريقة التحليل المعلوماتي&nb...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس الثاني عشر من دروس-SQL Server 2014- إنشاء الجداول...

في هذا الدرس الجديد و الذي من خلاله سنحاول إنشاء الجداول عن طريق الأكواد المستعملة ...
اقرأ المزيد
دروس قواعد البيانات
منذ بضع اعوام

الدرس الحادي عشر من دروس -SQL Server 2014- إنشاء...

في هذا الدرس الجديد من دروس SQL Server 2014 سنرى اليوم كيفية إنشاء الجداول عن طريق النمو...
اقرأ المزيد

التعامل مع التاريخ في الدلفي - الفرق بين تاريخين يوم شهر سنة


التعامل مع التاريخ في الدلفي - الفرق بين تاريخين  يوم شهر سنة




اليوم سنرى درس مهم جدا و هو استعمال الدوال الخاصة بالتاريخ في الدلفي هذه المرة سنرى الفرق بين تاريخين 
بصيغة متتالية يوم شهر سنة اي كم يوجد بين تاريخين من يوم شهر سنة و هذه الدوال مهمة جدا حيث تساعد مثلا على حساب العمر  بين تاريخين او حساب عدد ايام العطل في تسيير الموظفين طبعا نستطيع ان نضع هذا في قواعد البيانات لنعود اليها كمعطيات 
خاصة بالموظفين مثلا
المهم طبعا نستعمل الدلفي نفتح مشروع جديد و نضع المكونات الخاصة بــ Dynamique Skin Form 
 و نغير الإعدادات طبعا الخاصة بالخط ووضعية المكونات على الفورم كما في الصورة

(spSkinDateEdit    (2

(3)    spSkinEdit
  
spSkinButton


الأن وبعد ما قمنا بوضع المكونات التي نحتاجها في التطبيق نبدأ في برمجتها اولا ندهب الى  تعريف المتغيرات في البداية و نعرف

حيث تستعمل لتعريف كل دوال التواريخ في الدلفي و تعتبر مهمة جدا و الا سيظهر خطاء في البرنامج    DateUtils,





اولا يجب علينا ان نعرف المتغيرات الآتية تحت  implementation

type
  TJJMMAA = record
              JJ,
              MM,
              AA : word;
            end;

ثم نضع الدالة الخاصة بالتاريخ الآتية

function DatetoJJMMAA(const CDate1, CDate2 : TDate) : TJJMMAA;

var
  Date1,
  Date2,
  WDate : TDate;

begin
  if CompareDate(CDate1, CDate2) > 0 then begin  
    Date1 := CDate2;
    Date2 := CDate1;
  end
  else 
begin
    Date1 := CDate1;
    Date2 := CDate2;
  end;
  with result do begin
    AA := 0;                                 
    repeat                                  
      inc(AA);                             
      WDate := Date1;                       
      Date1 := incyear(Date1);              
    until comparedate(Date1, Date2) > 0;    
    dec(AA);                                
    Date1 := WDate;                          

    MM := 0;                               
    repeat
      inc(MM);
      WDate := Date1;
      Date1 := incmonth(Date1);
    until comparedate(Date1, Date2) > 0;
    dec(MM);
    Date1 := WDate;

    JJ := 0;                               
    repeat
      inc(JJ);
      Date1 := incday(Date1);
    until comparedate(Date1, Date2) > 0;
    dec(JJ);
  end;
end;
 لقد اسمينا الدالة الفرق بين التواريخ من نوع يوم شهر سنة و بالتالي نحتاج الى تاريخين  ثم نقوم بعملية مقرنة فإذا كان التاريخ الثاني  اكبر من التاريخ الأول فاننا سنقلب النتيجة مهما كانت الوضعية
 ثم نقوم بوضع حلقة تكرارية تبدا بعداد السنوات تضيف له في كل مرة  سنة 
وذلك حين انتهاء عدد الشهور 12 و هكذا حتى نحسب الفرق في الأشهر ثم في الأيام

الأن نذهب الى الزر الخاص بحساب الفرق  و نضع الأكواد الخاصة بالحساب 

procedure TForm1.spSkinButton1Click(Sender: TObject);
var
  texte0 : string;
   texte1 : string;
   texte2 : string;
    Delta0 : TJJMMAA;
 begin
  Delta0 := DatetoJJMMAA(spSkinDateEdit1.date, spSkinDateEdit2.date);

  texte0 := '';
  with Delta0 do begin
    case JJ of
      0 : texte0 := '0';
      1 : texte0 := '1 ';
    else
      texte0 := format('%2d ', [JJ]);
    end;
    if MM >= 0 then
      if texte1 = '' then
        texte1 := format('%2d ', [MM])
      else
        texte1 := format('%2d  ', [MM]) + texte1;
    if (AA > 0) and
       (Texte2 <> '0') then
      Texte2 := '' + Texte2;
    case AA of
      0 :texte2 := '0' ;
      1 : texte2 := '1' + Texte2;
    else
      texte2 := format('%2d ', [AA]) + Texte2;
    end;


 spSkinEdit1.Text := texte0;
 spSkinEdit2.Text := texte1;
 spSkinEdit3.Text := texte2;
 end;
end;
F9 بعد ذلك نقوم بتنفيذ البرنامج عن طريق

سنجرب تاريخين و الصورة خير دليل على ظهور الفرق بينهما 


الأن رغم تغييرنا للتاريخين من حيث القيمة فإن البرنامج يعمل بكفاءة



نتمنى ان يكون الشرح وافيا تقبلوا تحياتنا و الى درس قادم ان شاء الله






قد يعجبك ايضا
تعليقات
تعليقات Bloggerتعليقات Disqus



حجم الخط
+
16
-
تباعد السطور
+
2
-