الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مناداة تقرير من نموذج مع حقول تاريخ

Featured Replies

بتاريخ:

السلام عليكم ابها الاحبة ورحمة الله وبركاته وبعد
مشكلتي انني اريد بناء تقرير يتعلق بالشيكات التي دفعها زبون/زبائن من تاريخ الى تاريخ آخر، ويتم مناداة ذلك التقرير من نموذج يقوم المستخدم بادخال 4 معاملات PARAMETERS وهي من زبون ..... الى زبون ..... وكذلك من تاريخ ..... الى تاريخ ..... وعند مناداة التقرير لا يظهر اي نتيجة . وبعد الفحص تبين ان المشكلة هي في حقول التواريخ حيث عند حذفها من التقرير ومن النموذج عمل التقرير عال العال . مع ملاحظة بأنه عند تنفيذ التقرير لوحده من NAVIGATOR دون مناداته من النموذج مع استخدام المعاملات الاربعة فهو يعمل ايضا عال العال. فاين المشكلة
؟؟؟؟؟؟
مع ملاحظة بأن حقلي التاريخ في كل من النموذج والتقرير معرفان على أساس انهما من نوع تاريخ وطوله 10 وINPUT MASK هو DD/MM/YYYY وقد كتبت الكود التالي عند مناداة التقرير بعد الضغط على زر "تنفبذ التقرير"

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,: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');
ولكن دون فائدة حيث لا يأتي التقرير بأي نتيجة، فهل من مساعد ومغيث لي لحل هذه الاشكالية
وبارك الله في الجميع

اخوكم ابو المجد

بتاريخ:

هذا تعديل الكود اخي

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

بتاريخ:
  • كاتب الموضوع

بارك الله فيك يا اخ ADMIN05 على سرعة الرد، وسأجرب ما قلته بعد انتهاء دوامي والعودة الى البيت ولكن لدي استفسار يا اخي ان عملية تحويل الباراميتر في كل من النموذج والتقرير الى CHAR ولكن في الجدول الخاص بذلك في الداتابيز هو DATE ألا يحدث أي تعارض على ذلك وسيأتي بالنتيجة الصحيحة؟؟؟؟؟؟ وشكرا لك مقدما على الرد

تم تعديل بواسطة Abu_almajd1

بتاريخ:

لا يا اخي لا يحدث تعارض المشكلة انك عندما ترسل باراميتر من الفورم الى التقرير يجب ان يكون بصيغة معينه وانت عندما تعمل جملة select مثلا عن طريق SQL هل يحدث تعارض لو كتبنا الجملة بالشكل التالي
select to_char(sysdate,'dd-mm-yyy'') frm dual
الجواب لا طبعا
وبالتوفيق وخبرنا بالتنتيجة

بتاريخ:
  • كاتب الموضوع

بوركت يا اخي واكثر الله من أمثالك وان شاء الله سأجرب وأوافيك بالنتيجة

بتاريخ:

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

WHERE  CHECH_DATE=_DATE


و لكن عند استخدام معامل مقارنة اخر مثل
BETWEEN ... AND
فتحويل التاريخ الي CHAR سيتسبب في بعض المشاكل
فقد حدثت هذه المشكلة عدة مرات معي
لان مقارنة التاريخ بتاريخ غير مقارنة ال CHAR ب CHAR
و بصورة اوضح
كرقم 11 اكبر من 2 في الترتيب مثلا
اي اذا كان عندنا سيريال نمبر نرتب به من نوع رقم فسيكون رقم 2 قبل 11
و لكن اذا حولناه الي CHAR فسيكون 11 قبل 2و ذلك يحث في بعض بيانات التاريخ ايضا ووارد ان بعض البيانات لن تظهر بسبب ذللك
لذلك يفضل عدم تحويل التاريخ الي CHAR اذا كنت ستستخدم BVETWEEN .. AND
و الله و رسوله اعلم
بالتوفيق

بتاريخ:
  • كاتب الموضوع

الاخ Admin05 لقد حاولت عمل ما طلبت to_char(:fromdate,'dd/mm/yyyy')
ولكنه يعطيني خطأ على الدالة Too Many Decelerationsof 'to_char' match this call ورقم الخطأ Error -307 فما السبب يا ترى لهذه المشكلة؟؟؟؟؟ مع التحية

بتاريخ:

اخي الكريم
هذا الخطأ فعلا يظهر اذا كان نوع 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');

بتاريخ:

الاخوة الافاضل
الموضوع ببساطة هو عند نقل parameter من form الى report
لابد و ان ارسله char
:chk_date is date >>>
to_char(:chk_date,'dd-mm-yyyy')
the type of this parameter in report is char
in any sql statment convert the parameter to date again
to_date(:P_chk_date,'dd-mm-yyyy')
والله الموفق

بتاريخ:
  • كاتب الموضوع

السلام عليكم ورحمة الله وبركاته
يبدو ان طريقة الاخ gana3m هي طريقة صحيحة وقد جربتها واعطت نتيجة صحيحة، وان شاء الله سأجربها على تقارير أخرى وأن شاء الله تخرج دائماً النتائج الصحيحة وبارك الله في جهود الجميع في هذا المنتدى العظيم

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.