بتاريخ: 2 مايو 200619 سنة comment_68010 السلام عليكم ابها الاحبة ورحمة الله وبركاته وبعدمشكلتي انني اريد بناء تقرير يتعلق بالشيكات التي دفعها زبون/زبائن من تاريخ الى تاريخ آخر، ويتم مناداة ذلك التقرير من نموذج يقوم المستخدم بادخال 4 معاملات PARAMETERS وهي من زبون ..... الى زبون ..... وكذلك من تاريخ ..... الى تاريخ ..... وعند مناداة التقرير لا يظهر اي نتيجة . وبعد الفحص تبين ان المشكلة هي في حقول التواريخ حيث عند حذفها من التقرير ومن النموذج عمل التقرير عال العال . مع ملاحظة بأنه عند تنفيذ التقرير لوحده من NAVIGATOR دون مناداته من النموذج مع استخدام المعاملات الاربعة فهو يعمل ايضا عال العال. فاين المشكلة؟؟؟؟؟؟مع ملاحظة بأن حقلي التاريخ في كل من النموذج والتقرير معرفان على أساس انهما من نوع تاريخ وطوله 10 وINPUT MASK هو DD/MM/YYYY وقد كتبت الكود التالي عند مناداة التقرير بعد الضغط على زر "تنفبذ التقرير"pl_id paramlist;beginpl_id := get_parameter_list('tmpdata');if not id_null(pl_id) thendestroy_parameter_list('tmpdata');end if;pl_id := create_parameter_list('tmpdata');add_parameter(pl_id,'FromCust',text_parameter,:FromCust);add_parameter(pl_id,'paramform',text_parameter,'no');add_parameter(pl_id,'ToCust',text_parameter,:ToCust);add_parameter(pl_id,'FromDate',text_parameter,:FromDate);add_parameter(pl_id,'ToDate',text_parameter,:ToDate);add_parameter(pl_id,'DesType',text_parameter,:send_res_to);add_parameter(pl_id,'Orientation',text_parameter,:print_direction);add_parameter(pl_id,'copies',text_parameter,:copies_no);Run_Product(reports,'C:\naqa\rdf\rpt_cheques_by_dates.rep',asynchronous,runtime,filesystem,pl_id,null);destroy_parameter_list('tmpdata');end;وقد اقترح علي بعض الاخوة ان استخدم دالات TO_CHAR وtO_DATE لارسال الحقلين FROMDATE و TODATE على النحو الاتيTO_DATE(TO_CHAR(:FROMDATE,'DD/MM/YYYY'),'DD/MM/YYYY');ولكن دون فائدة حيث لا يأتي التقرير بأي نتيجة، فهل من مساعد ومغيث لي لحل هذه الاشكاليةوبارك الله في الجميعاخوكم ابو المجد تقديم بلاغ
بتاريخ: 2 مايو 200619 سنة comment_68012 هذا تعديل الكود اخي Declare pl_id paramlist; begin pl_id := get_parameter_list('tmpdata'); if not id_null(pl_id) then destroy_parameter_list('tmpdata'); end if; pl_id := create_parameter_list('tmpdata'); add_parameter(pl_id,'FromCust',text_parameter,:FromCust); add_parameter(pl_id,'paramform',text_parameter,'no'); add_parameter(pl_id,'ToCust',text_parameter,:ToCust); add_parameter(pl_id,'FromDate',text_parameter,TO_CHAR(:FromDate,'DD/MM/YYYY')); add_parameter(pl_id,'ToDate',text_parameter,TO_CHAR(:ToDate,'DD/MM/YYYY')); add_parameter(pl_id,'DesType',text_parameter,:send_res_to); add_parameter(pl_id,'Orientation',text_parameter,:print_direction); add_parameter(pl_id,'copies',text_parameter,:copies_no); Run_Product(reports,'C:\naqa\rdf\rpt_cheques_by_dates.rep',asynchronous, runtime,filesystem,pl_id,null); destroy_parameter_list('tmpdata'); end; مع ملاحظة ان تضع في التقرير نوع الباراميتير الخاص بالتاريخ من نوع char وليس من نوع date تقديم بلاغ
بتاريخ: 2 مايو 200619 سنة كاتب الموضوع comment_68014 بارك الله فيك يا اخ ADMIN05 على سرعة الرد، وسأجرب ما قلته بعد انتهاء دوامي والعودة الى البيت ولكن لدي استفسار يا اخي ان عملية تحويل الباراميتر في كل من النموذج والتقرير الى CHAR ولكن في الجدول الخاص بذلك في الداتابيز هو DATE ألا يحدث أي تعارض على ذلك وسيأتي بالنتيجة الصحيحة؟؟؟؟؟؟ وشكرا لك مقدما على الرد تم تعديل 2 مايو 200619 سنة بواسطة Abu_almajd1 تقديم بلاغ
بتاريخ: 2 مايو 200619 سنة comment_68016 لا يا اخي لا يحدث تعارض المشكلة انك عندما ترسل باراميتر من الفورم الى التقرير يجب ان يكون بصيغة معينه وانت عندما تعمل جملة select مثلا عن طريق SQL هل يحدث تعارض لو كتبنا الجملة بالشكل التالي select to_char(sysdate,'dd-mm-yyy'') frm dualالجواب لا طبعا وبالتوفيق وخبرنا بالتنتيجة تقديم بلاغ
بتاريخ: 2 مايو 200619 سنة كاتب الموضوع comment_68018 بوركت يا اخي واكثر الله من أمثالك وان شاء الله سأجرب وأوافيك بالنتيجة تقديم بلاغ
بتاريخ: 2 مايو 200619 سنة comment_68029 السلام عليكم عملية تحويل التاريخ الي CHAR مفيدة في حالة اذا كان الشطلر الموجود في جملة السكول الوجودةة بالتقرير هي مساواة تاريخ بتاريخ اي مثلا WHERE CHECH_DATE=_DATE و لكن عند استخدام معامل مقارنة اخر مثل BETWEEN ... AND فتحويل التاريخ الي CHAR سيتسبب في بعض المشاكل فقد حدثت هذه المشكلة عدة مرات معي لان مقارنة التاريخ بتاريخ غير مقارنة ال CHAR ب CHAR و بصورة اوضح كرقم 11 اكبر من 2 في الترتيب مثلا اي اذا كان عندنا سيريال نمبر نرتب به من نوع رقم فسيكون رقم 2 قبل 11 و لكن اذا حولناه الي CHAR فسيكون 11 قبل 2و ذلك يحث في بعض بيانات التاريخ ايضا ووارد ان بعض البيانات لن تظهر بسبب ذللك لذلك يفضل عدم تحويل التاريخ الي CHAR اذا كنت ستستخدم BVETWEEN .. AND و الله و رسوله اعلم بالتوفيق تقديم بلاغ
بتاريخ: 2 مايو 200619 سنة كاتب الموضوع comment_68077 الاخ Admin05 لقد حاولت عمل ما طلبت to_char(:fromdate,'dd/mm/yyyy')ولكنه يعطيني خطأ على الدالة Too Many Decelerationsof 'to_char' match this call ورقم الخطأ Error -307 فما السبب يا ترى لهذه المشكلة؟؟؟؟؟ مع التحية تقديم بلاغ
بتاريخ: 3 مايو 200619 سنة comment_68101 اخي الكريم هذا الخطأ فعلا يظهر اذا كان نوع fromdate من نوع character فمن غير المعقول ان ترسل char من خلالها char وكلام اخي hanon_OCP اظنه في محله مع بعض التحفظات على الطريقة لأنه ممكن ان يكون نوع الحقل date وتحوله الى caharacter اذا ارسلته القيمة الى تقرير من خلال براميتر وان تجعل الطرف الثاني في التقرير من نوع date وتجربها وبصراحة انا استخدمت الكثير من التقارير فيها التواريخ واذا كانت المشكلة فيها فاظن ان مشكلتك غير ذلك المهم انك تستطيع من خلال التقرير في SQL او جملة السليكت ان تكتب التالي select check_no from checks where to_char(chk_date,'dd/mm/yyyy')=to_char(:parameter_date,'dd/mm/yyyy'); تقديم بلاغ
بتاريخ: 3 مايو 200619 سنة comment_68116 الاخوة الافاضلالموضوع ببساطة هو عند نقل parameter من form الى reportلابد و ان ارسله char :chk_date is date >>>to_char(:chk_date,'dd-mm-yyyy')the type of this parameter in report is charin any sql statment convert the parameter to date againto_date(_chk_date,'dd-mm-yyyy') والله الموفق تقديم بلاغ
بتاريخ: 6 مايو 200619 سنة كاتب الموضوع comment_68350 السلام عليكم ورحمة الله وبركاتهيبدو ان طريقة الاخ gana3m هي طريقة صحيحة وقد جربتها واعطت نتيجة صحيحة، وان شاء الله سأجربها على تقارير أخرى وأن شاء الله تخرج دائماً النتائج الصحيحة وبارك الله في جهود الجميع في هذا المنتدى العظيم تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.