الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحديث شجرة تقارير عند اختيار

بدأه الحلفاوي في 12 فبراير 2012 · 3 رد · 727 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي برنامج صممت فيه التقارير باستخدام treeview ولنفترض انك في فرع معين ولديك بعض خيارات الاستعلام بمكونات اخرى RadioButtons مثلا , الاحظ ان التقرير لا ياتي بالمعلومات التي اريدها بعد تغيير الخيارات بمثل المكونات آنفة الذكر , ولكنه يعتمد التغيير الذي احدثته لخيارات التقرير بعد ان تتحول الى فرع آخر ثم تعود اليه ثانية

هب ان الفرع (أ) له خيارات النوع Gender على مكون مثل الذي ذكرناه فانك لاتستطيع تغيير التقرير بالخيار الجديد مالم تذهب الى فرع آخر (ب) ثم تعود اليه ثانية

اليكم هذا الجزء من البرنامج

 procedure TMainInterface.Tree_LocalityChange(Sender: TObject;
  Node: TTreeNode);

begin
try
    if Node.StateIndex = -1 then
  begin
    Tree_Locality.FullCollapse;
    Node[0].Selected := True;
  end
  else
  Begin
//   DBLookupComb_locality.KeyValue := 0;
//--------------------------------------Firsts Classifications ---------------------------------------------------
   case Node.StateIndex of
    21 :Begin
        try
        DataModule_report.Loc_All10First_report_set.Active := False;
        DataModule_report.Loc_All10First_report_set.CommandText :='select INdex_NO, Stud_name, Result_Desc, Result_digree, Year_name, Year_name_Desc, School_name, Categ_name, Gender_Desc, Exam_Reg_type, Exam_reg_Desc from General_set where subject= 0 and locality='''+IntToStr(DBLookupComb_locality.KeyValue)+''' and Year_name = '''+IntToStr(Combo_Year_name.ItemIndex)+''' order by Result_digree desc';
        DataModule_report.Loc_All10First_report_set.Active := True;

        frxReport1.LoadFromFile(ExtractFilePath(Application.ExeName)+IntToStr(Node.StateIndex)+'.fr3');
        Memo_Localities.Lines := frxReport1.ReportOptions.Description;
         except

         end;
        End ;

فماذا افعل ؟ لاول مرة استخد مكون الـTreeView

سلمكم الله

تم تعديل هذه المشاركة بواسطة الحلفاوي في 12 فبراير 2012 في 18:32

#2

السلام عليكم و رحمة الله و بركاته

أعتقد ان المشكلة في مكان وضع السطر اللي يظهر لك الريبورت , ضمن كود ال radiobuttons. بمعني ان كود التغيير اللي في الزر راديو بوتون يعمل على تخصيص المعطيات التي لازم تظهر في الريبورت. لكن انت سبقته بأمر اظهار الريبورت قبل ان يعمل التخصيص و هو ما قلته انت انك بعدما تظهر الى راديو بوتون ثاني و ترجع للاول يظهر لك التنيجة. بمعنى تاتي متأخرة.

الحل ان تجعلى تعليمة اظهار الريبورت في اخر سطر من تعليمات الزر radiobuttons.

هذا و الله أعلم.

بالتوفيق.

i-love-algerie-laura23920090720132603.gif
#3
info_megue كتب:

السلام عليكم و رحمة الله و بركاته

أعتقد ان المشكلة في مكان وضع السطر اللي يظهر لك الريبورت , ضمن كود ال radiobuttons. بمعني ان كود التغيير اللي في الزر راديو بوتون يعمل على تخصيص المعطيات التي لازم تظهر في الريبورت. لكن انت سبقته بأمر اظهار الريبورت قبل ان يعمل التخصيص و هو ما قلته انت انك بعدما تظهر الى راديو بوتون ثاني و ترجع للاول يظهر لك التنيجة. بمعنى تاتي متأخرة.

الحل ان تجعلى تعليمة اظهار الريبورت في اخر سطر من تعليمات الزر radiobuttons.

هذا و الله أعلم.

بالتوفيق.

وعليكم السلام

اشكرك للتفاعل السريع

ما افعله داخل حدث الرديو بوتون هو فقط تغيير قيمة ثنائية (0/1) لحقل النوع وكل ما كتبته داخل الحدث مايلي

         if RadioButton5.Checked then
           GenderType := 1 else GenderType := 0;

ثم جعلت الزر الاخر يقرأ في نفس الحدث الدالة السابقة

وعند اختيار الفرع يتم تجهيز امر الاستجلاب وتحديد مسار ملف التقرير

1- في زر لتوليد التقرير وضعت امر FrxReport.ShowReport

2 -استخدام القيمة اعلاها للامر التالي

 :Begin
        try
        DataModule_report.Loc_All10First_report_set.Active := False;
        DataModule_report.Loc_All10First_report_set.CommandText :='select INdex_NO, Stud_name, Result_Desc, Result_digree, Year_name, Year_name_Desc, School_name, Categ_name, Gender_Desc, Exam_Reg_type, Exam_reg_Desc from General_set where subject= 0 and locality='''+IntToStr(DBLookupComb_locality.KeyValue)+''' and Gender_type ='''+IntToStr(GenderType)+''' and Year_name = '''+IntToStr(Combo_Year_name.ItemIndex)+''' order by Result_digree desc';
        DataModule_report.Loc_All10First_report_set.Active := True;

        frxReport1.LoadFromFile(ExtractFilePath(Application.ExeName)+IntToStr(Node.StateIndex)+'.fr3');
        Memo_Localities.Lines := frxReport1.ReportOptions.Description;
         except

         end;
        End;

فاين الخطا المنطقي الذي حدث ...................... بوركتم وجوزيتم خيرا

تم تعديل هذه المشاركة بواسطة الحلفاوي في 12 فبراير 2012 في 21:22

#4

وعليكم السلام ورحمة الله وبركاته

برأيي أن أفضل طريقة لذلك باستخدام TDBRadioGroup المرفق مع دلفي 7 على الأقل

حيث تقوم بتهيئة المكون كالآتي:

في الخاصية Item تكتب القيم التي تريد أن يراها المستخدم

في الخاصية Values تكتب القيم التي تريد تخزينها في الجدول بالترتيب

حيث كل قيمة Item لها ما يقابلها Value

ولا تنسى ربطه مع الحقل في الجدول DataSource/DataField :)

ملاحظة: في الحقول التي تحتوي قطعا على قيمتين لا أكثر (Gender مثلا)

أفضل استخدام حقل منطقي Boolean واسم الحقل على شكل سؤال (IsMale)

ثم أستخدم الخاصية DisplayValues لكتابة ما يوافق كل قيمة (مثلا:Male;Female)

بالتوفيق.

مواضيع مشابهة