التفقيط في الفاست ريبورت والمجاميع
#1
السلام عليكم ورحمة الله

لكثرة السؤال عن هذا انشاءت هذا المثال ورفعته على المنتدى تجنبا للضياع وهو يشرح كل شئ

[صورة: attachment.php?aid=4434]

بداية المجموع SumByFastRepot يتم عن طريق الفاست ريبورت ستجد في الحقل

كود :
[<frxDBDataset2."cnt"> * <frxDBDataset2."price">]

ناتج ضرب الكمية في السعر لتعطي المجموع

ثانيا SumByAdodb يتم التجميع في الحقل Calculate لمكون الجدول خارج الفاست ريبورت

كود :
ADOTable2Total.Value:=ADOTable2cnt.Value * ADOTable2price.Value;

حيث تم انشاء حقل Calculate تم وضع فيه ناتج حقل الكمية في السعر

بعدها يتم تفقيط اجمالي المجموع من داخل الفاست ريبورت بواسطة Function يمكن وضعها في التقرير 

كود :
procedure Memo9OnAfterData(Sender: TfrxComponent); begin         Memo13.text:=NoToTxt(Memo9.value,'دينار','درهم');  end;

مع ملاحظة اننا استخدمنا الحدث AfterData اي بعد ان يتم احتساب الاجمالي واكتمال النتيجة


وايضا ستجدون دالة انشأناها خارج الفاست ريبورت وقمنا باضافتها للفاست ريبورت واستخدمناها

كود :
function  MyFunc(s: String): String;

والتي ترسل كلمة FastRepot فنضيف لها Well Come ويمكن استخدام هذه الطريقة في التفقيط او احتساب اي عمليات معقدة تستخدم وحدات او مكونات لا يمكن برمجتها او الاعلان عنها  داخل الفاست ريبورت

في الحدث GreatForm نضيف الدالة او الاجراء المطلوب

كود :
frxReport1.AddFunction('function MyFunc(s: String):string');

ثم في الحدث frxReport1UserFunction نقوم باصطياد الدالة المطلوبة

كود :
if MethodName = 'MYFUNC' then Result := MyFunc(Params[0])

وفي الدالة نضع اي برمجة نريد ونقتنص اي بارمترات مرسلة من الفاست ريبورت بحال كان هناك بارمترات

كود :
function TForm1.MyFunc(s: String): string; begin Result:='Well Come : ' + s; end;

ومن داخل الفاست ريبورت نستخدم الدالة بشكل طبيعي

كود :
Memo14.text := MyFunc('FastReport');


المثال بالمرفقات ويمكن تحميله


الملفات المرفقة
.rar   FastReportSum.rar (الحجم : 108.05 ك ب / التحميلات : 232)
.jpg   aaa.jpg (الحجم : 101.55 ك ب / التحميلات : 379)
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 5 users say قال شكرا ل Delphi4Us على المشاركة المفيدة
  • محمد عبد العزيز, h-farid, ALG2009, Mr.DOS, amar1997
الرد
#2
لك تحية خاصة الاخ Delphi4Us ولكن عندي سؤال و هو الاحظ علامة مثلث صغير على الحقول Memo9 ,  Memo13 و  Memo14 في الفاست ريبورت . ما معنها و كيف تظهر على هذه الحقول فقط

الصورة


الملفات المرفقة
.png   rep.png (الحجم : 7.98 ك ب / التحميلات : 61)
وقل ربي زدني علماً
[-] كل من 1 user says قال شكرا ل bouh25 على المشاركة المفيدة
  • amar1997
الرد
#3
شكرا وبارك الله فيك
ولاتظن اننا نقدم شيئا بالمجان فكل ما نقدمه وما نبدله ولو كان بسيطا ومتواضعا نقبض ثمنه
بالنسبة للعلامة اذا كان للحقل حدث تظهر هذه العلامة في اشارة لذلك
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#4
تعديلات اضافية على المشروع

تم انشاء وحدة تقوم بالتفقيط داخل الدلفي بحيث يتم استدعاءها من الفاست ريبورت بدل من الدالة السابقة حتى يكون المثال اكثر عملية

كود :
Memo14.text := MyFunc(Memo9.value);

ويتم ارسال قيمة الاجمالي لاستعادته كنص

في الدالة التي عرفناها على الفاست ريبورت يتم استدعاء دالة التفقيط

كود :
function TForm1.MyFunc(s: Double): string; begin Result:=NumToTxt(s,'دينار','درهم'); end;

طبعا بالامكان استبدال هذه الدالة التي عرفناها بدالة التفقيط مباشرة فقط لان المثال كان هكذا لم اشاء ان اغيره

[صورة: attachment.php?aid=4438]

لاظهار التفقيط في الـ Title لابد ان تختار من القائمة Report ثم Option ومنها تؤشر الخيار Double Pass
فهنا يظهر تفقيط سفلي واخر علوي
السفلي بواسطة دالة بداخل الفاست ريبورت والعلوي باستخدام دالة في الدلفي

حقيقة كنت اريد ان اضيف الدالة مباشرة بداخل الفاست ريبورت بحيث تستخدمها بزمن التصميم وليس التشغيل فقط

ولكن هذا لا يمكن كما تشير مستندات الشركة هنا بالرابط التالي

كود :
https://fast-report.com/documentation/DevMan/index.html?custom_functions_connection_to_report.htm

ولكن يمكن بزمن التشغيل مع استخدام الـ Designer وتظهر الدالة بلا اي مشكلة ويمكن استخدامها ومعاينة النتيجة فوريا

[صورة: attachment.php?aid=4439]

استخدم الكود الذي بالمشروع لان هناك مشكلة بالكود الذي تعرضه الشركة

كود :
constructor TFunctions.Create; begin inherited Create(AScript); with AScript do    AddMethod('function MyFunc(s: String; i: Integer): Boolean', CallMethod,             'My functions', ' MyFunc function always returns True');    AddMethod('procedure MyProc(s: String)', CallMethod,             'My functions', ' MyProc procedure does not do anything''); end; end;

حيث نسيت بعض العبارات والصحيح كالتالي :

كود :
constructor TFunctions.Create; begin inherited Create(AScript); with AScript do    begin    AddMethod('function MyFunc(s: String; i: Integer): Boolean', CallMethod,             'My functions', ' MyFunc function always returns True');    AddMethod('procedure MyProc(s: String)', CallMethod,             'My functions', ' MyProc procedure does not do anything');    end; end;


يمكنكم معاينة المشروع بالمرفقات


الملفات المرفقة
.rar   FastReportSum.rar (الحجم : 110.07 ك ب / التحميلات : 134)
.jpg   Untitled2.jpg (الحجم : 101.21 ك ب / التحميلات : 339)
.jpg   Untitled.jpg (الحجم : 17.92 ك ب / التحميلات : 327)
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 2 users say قال شكرا ل Delphi4Us على المشاركة المفيدة
  • أبو معاذ, ALG2009
الرد
#5
الاخ Delphi4Us عملت عدة محاولات و لكن فشت في الدالة الاخير لو سمحت قليل من التفاصيل و اجرك على الله
وقل ربي زدني علماً
الرد
#6
ما الذي لم ينجح خاصة وانني حملت المثال بالمرفقات ويعمل عندي
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#7
لم تظهر الدالة MyFonct في قائمة الدوال في الفاست ربورت
وقل ربي زدني علماً
الرد
#8
(18-01-2021, 07:32 AM)bouh25 كتب : لم تظهر الدالة MyFonct في قائمة الدوال في الفاست ربورت

لقد أجابك الأستاذ Delphi4Us

في هذا الجزء

ولكن يمكن بزمن التشغيل مع استخدام الـ Designer وتظهر الدالة بلا اي مشكلة ويمكن استخدامها ومعاينة النتيجة فوريا

[صورة: attachment.php?aid=4439]

ـ تظهر معك في حالة فتحه بـ Designer
‏اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
الرد
#9
شكرا وصلت للنتيجة
لم افهم هذه المرحلة
لاظهار التفقيط في الـ Title لابد ان تختار من القائمة Report ثم Option ومنها تؤشر الخيار Double Pass
وقل ربي زدني علماً
الرد
#10
[صورة: attachment.php?aid=4442]


الملفات المرفقة
.jpg   Untitled2.jpg (الحجم : 121.28 ك ب / التحميلات : 284)
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد


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


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