08-02-2010, 05:00 PM
- الجزء 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 نكتب :
و في الخاصية Params نحدد : Code_Client و نجعل DataType تأخذ القيمة ftString . و نفس الشيء مع Date01-02 نجعل ftDate .
- الآن في الخاصية SQL للــ Query7 نكتب :
و من Params نحدد : Code_Client و نجعل DataType تأخذ القيمة ftString.
- في الحدث OnChange للــ sEdit7 :
- نضغط مرتين على sCheckBox1 : نكتب
- في الحدث Onchange للــ DateTimePicker1 نكتب:
نجعل الخاصية OnEnter لهذا العنصر تأخذ القيمة DateTimePicker1Change
كما نجعل نفس القيمة للحدث OnChange للـعنصـر DateTimePicker2 .
* أخيرا نعرف عملية حساب المجموع : قبل implementation نكتب :
* المشروع مرفق ، حاول العمل و تدبر أمورك ، و قارن مع المرفق .
- المطلوب : هناك شبه كامل و واضح بالنسبة لهذا العمل و ما يلزم فعله على الصفحة Historique Fournisseur ، المطلوب استعمال Query8-9 على التوالي و اتمام مايلزم .
بالتوفيق .
.../ يتبــع / ....
على الفورم 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- الآن في الخاصية SQL للــ Query7 نكتب :
كود :
SELECT *
FROM Vente
Where Code_Client=:Code_Client- في الحدث 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;كما نجعل نفس القيمة للحدث 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 على التوالي و اتمام مايلزم .
بالتوفيق .
.../ يتبــع / ....

