تعلم معي خطوة خطوة صنع برنامج لتسيير المخزون و التسويق
#30
- الجزء 4 من الدرس العاشر

على الفورم FFactureEtStatistique دائما ، نمر إلى الصفحة : Historique Client ،

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

نبدأ بعون الله:

نجعل ReadOnly=True لكل من العناصرsEdit8-9-10 .
- سوف نستعمل العنصرين Query6-7 .

قبل كل شيء ، و رغم أنني نبهت في الدرس 4 ، على عدم استعمال اسماء حقول محجوزة في لغة الإستفسار البنيوي (SQL) ، إلا أنني سميت حقل التاريخ في الجدول Vente باسم Date عوضا مثلا عن Date_Vente ، مما سبب لي مشكلة أثناء العمل على Historique Client ، و هو الشيء الذي جعلني أكتشفه . فمعذرة مرة أخرى (و بما أننا مبتدئين أخي الكريم ، فحتى في هذه الأخطاء و العمل على تصحيحها فيه فائدة) .
الحل ببساطة نعدل الجدول بتسمية الحقل بــ (Date_Vente) ، و نعدل هذه التسمية في مكان استعمالها ، و لم نستعملها إلا في الفورم FGSM و FFactureEtStatistique ، يعني كلما وجدنــا ('Date') نغيرها بــ ('Date_Vente') .


- الآن في الخاصية SQL للــ Query6 نكتب :
كود :
SELECT * FROM Vente Where Code_Client=:Code_Client and Date_Vente Between :Date01 and :Date02
و في الخاصية Params نحدد : Code_Client و نجعل DataType تأخذ القيمة ftString . و نفس الشيء مع Date01-02 نجعل ftDate .



- الآن في الخاصية SQL للــ Query7 نكتب :
كود :
SELECT * FROM Vente Where Code_Client=:Code_Client
و من Params نحدد : Code_Client و نجعل DataType تأخذ القيمة ftString.



- في الحدث OnChange للــ sEdit7 :
كود :
sEdit12.text:=sEdit7.Text ; sEdit16.text:=sEdit7.Text ; sEdit9.text:=sEdit13.Text ; sEdit8.Text:=sEdit17.text; if (sCheckBox1.Checked=True) and (sEdit7.text<>'') then begin Query6.Close; Query6.ParamByName('Code_Client').Value:=sEdit7.text; DbGrid2.DataSource:=DataSource6; Query6.Open; (* Majmoo3eClient_TTC_Date *) RecordPlaceClient_TTC_Date := Query2.GetBookmark; MajmoueClient_TTC_Date:=0; Query6.Active:=true; Query6.First; while not Query6.Eof Do begin MajmoueClient_TTC_Date:= MajmoueClient_TTC_Date +Query6.FieldByName('Prix_TTC').AsCurrency; Query6.Next; end; sLabel19.Caption:=CurrToStr(MajmoueClient_TTC_Date); sLabel19.Caption:=FormatFloat('0.00 DA',StrtoFloat(sLabel19.Caption)); if FGSM.Table4.Locate('Code_Client',sEdit7.Text,[ ]) then sLabel17.Caption:=sEdit7.Text +' / '+FGSM.Table4.FieldValues['Code_Com_C'] else sLabel17.Caption:='. . . . . . . . . . . . . . . . . . '; end; if (sCheckBox1.Checked=False) and (sEdit7.text<>'') then begin Query7.Close; Query7.ParamByName('Code_Client').Value:=sEdit7.text; DbGrid2.DataSource:=DataSource7; Query7.Open; (* Majmoo3eClient_TTC *) RecordPlaceClient_TTC := Query7.GetBookmark; MajmoueClient_TTC:=0; Query7.Active:=true; Query7.First; while not Query7.Eof Do begin MajmoueClient_TTC:= MajmoueClient_TTC +Query7.FieldByName('Prix_TTC').AsCurrency; Query7.Next; end; sLabel19.Caption:=CurrToStr(MajmoueClient_TTC); sLabel19.Caption:=FormatFloat('0.00 DA',StrtoFloat(sLabel19.Caption)); if FGSM.table4.Locate('Code_Client',sEdit7.Text,[ ]) then sLabel17.Caption:=sEdit7.Text +' / '+FGSM.table4.FieldValues['Code_Com_C'] else sLabel17.Caption:='. . . . . . . . . . . . . . . . . . '; end;



- نضغط مرتين على sCheckBox1 : نكتب
كود :
if sCheckBox1.Checked=true then begin sPanel5.Visible:=true; DateTimePicker1.Visible:=true; DateTimePicker2.date:=Now; DateTimePicker2.Visible:=true; DateTimePicker1.SetFocus; end else if sCheckBox1.Checked=false then begin sPanel5.Visible:=false; DateTimePicker1.Visible:=false; DateTimePicker2.Visible:=false; sEdit7.SetFocus; end;



- في الحدث Onchange للــ DateTimePicker1 نكتب:
كود :
Query6.Close; Query6.ParamByName('date01').AsDate:=DateTimePicker1.date; Query6.ParamByName('date02').AsDate:=DateTimePicker2.date; Dbgrid2.DataSource:=datasource6; Query6.Open; if (sCheckBox1.Checked=true) and (sEdit7.text<>'') then begin Query6.Close; Query6.ParamByName('Code_Client').Value:=sEdit7.text; DbGrid2.DataSource:=DataSource6; Query6.Open; (* Majmoo3eClient_TTC_Date *) RecordPlaceClient_TTC_Date := Query6.GetBookmark; MajmoueClient_TTC_Date:=0; Query6.Active:=true; Query6.First; while not Query6.Eof Do begin MajmoueClient_TTC_Date:= MajmoueClient_TTC_Date +Query6.FieldByName('Prix_TTC').AsCurrency; Query6.Next; end; sLabel19.Caption:=CurrToStr(MajmoueClient_TTC_Date); sLabel19.Caption:=FormatFloat('0.00 DA',StrtoFloat(sLabel19.Caption)); if FGSM.Table4.Locate('Code_Client',sEdit7.Text,[ ]) then slabel17.Caption:=sEdit7.Text +' / '+FGSM.table4.FieldValues['Code_Com_C'] else slabel17.Caption:='. . . . . . . . . . . . . . . . . . '; end;
نجعل الخاصية OnEnter لهذا العنصر تأخذ القيمة DateTimePicker1Change
كما نجعل نفس القيمة للحدث OnChange للـعنصـر DateTimePicker2 .


* أخيرا نعرف عملية حساب المجموع : قبل implementation نكتب :
كود :
(*Pour Majmoo3eClient_TTC_Date*) MajmoueClient_TTC_Date: Currency; RecordPlaceClient_TTC_Date: TBookmark ; (*Pour Majmoo3eClient_TTC*) MajmoueClient_TTC: Currency; RecordPlaceClient_TTC: TBookmark ;

* المشروع مرفق ، حاول العمل و تدبر أمورك ، و قارن مع المرفق .

- المطلوب : هناك شبه كامل و واضح بالنسبة لهذا العمل و ما يلزم فعله على الصفحة Historique Fournisseur ، المطلوب استعمال Query8-9 على التوالي و اتمام مايلزم .


بالتوفيق .


.../ يتبــع / ....


الملفات المرفقة
.rar   13_GSM.rar (الحجم : 42.03 ك ب / التحميلات : 1,113)
الرد


الردود في هذا الموضوع
تعلم معي خطوة خطوة صنع برنامج لتسيير المخزون و التسويق - بواسطة nabilkeb - 08-02-2010, 05:00 PM

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


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