سلام عليكم ورحمة الله وبركاته ..أما بعد:
أخواني الاعضاء الكرام واخواني مشرفين المنتدى الحبيب وضعت لكم هذا الموضوع حيث أن بعض الاخوان لايفهمون لغة التقارير وكيفية التعامل معها وسوف أقوم هنا بتوضيح بعض الأشياء الخفيفة والمفيدة حسب خبرتي في التقارير حيث أني لست أخبر منكم ولا اعلمكم بها بل هناك من هو أعلم مني بها وعلى بركة الله نبدأ ..
بسم الله
أولا بالنسبة لوضعية الجداول في التقرير وكيفية التعامل مع أكثر من جدول (لاحظ أني قلت جدول ولم أقل قاعدة بيانات) فللتعامل مع أكثر من جدول وربطها بالتقرير نقوم بالتالي (اعتذر منكم أني لم اقم بالتوضيح بالصور)
أولا نذهب للتقرير ونقوم بادراج الجداول في التقرير عن طريق طريق database exeplorer وبعد ذلك نقوم بربطها معاً عن طريق العلاقات فيما بينها وبعد الانتهاء من ذلك نقوم بالضغط على الزر Ok حتى نقوم بادراجها في التقرير .
الان يمكننا التعامل مع الجداول سواء كانت مدرجة في التقرير أم لم تدرج به (وأقصد بكلامي لم تدرج به أي الحقول التي ادرجناها في database exeplorer ولم تدرج في شاشة التقرير أي لاتظهر مع التقرير عند الطباعة )وذلك لأنها مرتبطة علائقيا
وربما يسأل أحدكم هل هذا صحيح هل يمكن التعامل مع كل الجداول سواء الظاهرة او المخفية
فأقول بكل بساطة نعم يمكنك ذلك وأزيدك من الشعر بيتاً يمكنك الاستعلام عن أكثر من حقل من جدول واحد أو أكثر .
ماذا تقصد بذلك يا أبوعزام أرجوا التوضيح بمثال حتى نفهم ذلك؟
أبشر أخي الحبيب سأوضح لك ذلك فرضا أنه لدينا ثلاث جداول مترابطها فيما بينها جدول العملاء وجدول المبيعات وجدول المخزون ونريد طباعة تقرير عن عدد مرات شراء العميل محمد زكي الصنف (فأرة) لا أقصد فأرة حقيقة بل فأرة الكمبيوتر (الماوس) :D وطريقة ذلك كالتالي:
نذهب للفيجوال بيسك ونقوم بوضع الأداة crystalreportviewer على فورم جديد ولنسميه frmview ونقوم بعد ذلك بكتابة الكود التالي في زر طباعة
dim rpt as new salesreport rpt.recordformula="customer.name like '" & txtcustname.text.trim & "' and inventory.desc like '" & txtdesc.text & "'" with frmview .crystalreportviewer .reportsource(rpt) .crystalreportviewer .refreshreport .show
وأما التعامل مع التقرير بين تاريخين فيوجد له ثلاث صيغ وهي التالي
صيغة between وهي الصيغة القديمة (علما أن الخاصية تتعامل مع كل الصيغ المعروف)
مثال على ذلك
ولنفترض أننا نريد تقرير عن المشتريات التي قام بها محمد زكي خلال الفترة من 12/5/1428 إلى 12/7/1428 سنقوم بالتالي :
فقط نغير قيمة الخاصية recrdformula
rpt.recordformula=" sales.date between " & cdate(txtd1.text.trim) & " and " & cdate(txtd2.text.trim) " and customer.name like '" & txtname.text.trim & "'"
إذا لم تنجح الطريقة مع احدكم يمكنك تجربة ذلك في الخاصية select expert الموجودة في التقرير .
الصيغة الثاني :هي الصيغة التي نستعمها مع الخاصية rowfilter الموجودة في الكائن view وهي صيغة أصغر من أو يساوي وأكبر من أو يساوي .
rpt.recordformula=" sales.date >='" & cdate(txtd1.text.trim) & "' and sales.date <='" & cdate(txtd2.text.trim) "' and customer.name like '" & txtname.text.trim & "'"
الصيغة الاخيرة هي الصيغة الجديدة: من كذا إلى كذا "
rpt.recordformula=" sales.date >='" & cdate(txtd1.text.trim) & "' and sales.date <='" & cdate(txtd2.text.trim) "' and customer.name like '" & txtname.text.trim & "'"
وكما ترون أخواني الموضوع سهل جدا ولا يحتاج إلى تعقيد او إلى كتابة استعلامات معقدة كما يفعل البعض ومن لديه أي سؤال فليتفضل وأرجوا من الاخوة المشرفين مشاركتنا في الموضوع حتى نلبي جميع احتياجات الاخوة وشكر