الانتقال إلى المحتوى
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.

انا عايز استعمل ال Ref Cusrsor فى الريبورت ولكن المشكلة

Featured Replies

بتاريخ:

انا عايز استعمل ال ref cursor فى الريبورت ولكن المشكلة ان الريف كورسير فى ال كويرى ببيتكرت على انة function
gلزما ت return data type من النوع ref cursor وبالتالى انا مبقدرش احدد السطور ال انا عايز ارجعها فى ال return او اعمل عليها اى ترانس اكشن
يعنى من الأخر انا عايز اعمل كيروسر فى الريبورت هو ال يملى سطور الريبورت بالفاريبل ال انا عايزة اقولة لما يكون السطر كذا حطيلى كذا زولما يكون السطر ال راجع كذا اعمل علية لوب تانى ورجعة كذا مرة ورا بعض ويتنة يكتب فى التقرير

:)
هل فعلا ممكن اتحكم فى الريف كيروسر بالشكل دة ولا لاة وجزاكم الله خيراً

بتاريخ:

بص يا أخي أنت ممكن تعمل Function يرتجع جدول تعمل بها ما تشاء ، ولكن هتكون غير جيدة بعض الشيء !!!!

1- الكود هيبقي طويل أو مقرف.
2- إستخداد الدوارة Loop لو زادت عن حدها في جلب سجلات كثيرة بتعمل ثقل للبيانات ، فبالتالي بتأخر فتح التقرير


علي كل حال أبحث بالمنتدي عن كيفية صناعة Function يرتجع لك جدول


ربنا يسهل أصنع لك مثال بسيط وهبقي أرسلة لك



بالتوفيق

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

هى بالفعل ياخ مصطفى عملتها ولكنى لا استطيع التحكم فى السطور المرتجعة لان بيرجع ال record بتاع ال ref cursor كلة مرة واحدة حسب فهمى فمبقدرش اعمل ارجع السطور ال انا عايزها بالشكل ال انا عايزة

بتاريخ:
هى بالفعل ياخ مصطفى عملتها ولكنى لا استطيع التحكم فى السطور المرتجعة لان بيرجع ال record بتاع ال ref cursor كلة مرة واحدة حسب فهمى فمبقدرش اعمل ارجع السطور ال انا عايزها بالشكل ال انا عايزة


وما المشكلة في ذلك ، يمكنك عمل جملة Where علي الحقول المرتجعة كما يلي :

SELECT * FROM TABLE(GET_EMP('a')) WHERE EMP_NO = 1;



أم أنك ترغب في إيجاد أوامر مثل أوامر التنقل بين السجلات لبروك البيانات ؟؟؟؟

مفيش الأمر دة علي الـ CURSOR ، وموجود علي VARRAY ، ولكنه محدود العدد ، ومفيش علي NESTED TABLE علي ما أعتقد


طيب سبني شوية أبحث لك يمكن ألاقي حل


شكراً

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

شكرا يمصطفى على تعبك معنا
يعنى انا عايز من ألأخر املى الريبورت عن طريق ال loop كانى بملى كنترول بوك فى الفورمز
بقولة next_record واحط ال values ال انا عازها وهكذا

بتاريخ:

مش عارف أخ حسام ، أعتقد أن الموضوع مش هينفع !!!!

طيب أتركني فترة لعل وعسي أجد حل



وآسف جداً


شكراً

بتاريخ:

بسم الله الرحمن الرحيم


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

الأخ حسام ، في الحقيقة أنا لم أجد مشاركات من قبل تفيد بذلك بالمنتدي ، ولم أجد أي شيء يوحي بذلك عبر موقع Goolge علي الإطلاق !!!

ولم أقل لك أن ليس هناك حلول لذلك ، لأنني لم أتعود علي ذلك !!!

فبالتحايل يمكن صناعة كل شيء ... وقلة خبرتي مع الديفيلوبار لم أقدر علي قول أن ليس هناك حل لذلك !!!

المهم علشان مطولش عليك ، أنا حبيت أتحايل علي الوضع بأكثر من طريقة ، ولكن لم أتمكن من ذلك .. خصوصاً لأنني وجدت مجموعة أوامر في مكتبة SRW من خلالها تقدر تعدل علي حقول التصميم Layut وليس الحقول الفعلية الموجودة في الـ Groups ، والأوامر هي :

SRW.SET_FIELD 
SRW.SET_FIELD_CHAR 
SRW.SET_FIELD_DATE 
SRW.SET_FIELD_NUM



لكن طبعاً كما ذكرت تعديل علي حقول تصميم التقرير وليس حقول بيانات المجموعات Groups .. فحاولت جاهداً أبحث في هذه المكتبة وفي مكتبات أخري عن أمر Create_Record أو ما يشابهها فلم أجد !!!

لكن أنا من رأيي أن مفيش حل بطلبك هذا ، لأنني تعاملت مع Crystal Report حتي الإصدار 10 ولم يكن هناك مثل ما تطلبة .. بالإضافة أن أنواع التقارير المختلفة هدفها الوحيد هو الطباعة علي الورق بغض النظر عن الإمكانيات المتاحة.

أما بخصوص الـ RefCursor ، فهذا النوع يحتاج الي عمل Function أو Ref Cursur Query يرتجع لك ما تريدة من داخل التقرير "مرفق لك مثال أنظر فية"


أعتزر كل الإعتزار علي عدم إيجاد حل نهائي لمشكلتك .. ولكن ما زلت لا أأمن بهذه الفكرة لأن التقرير في الأساس طباعة علي الورق .. لكن العلم أكبر من أي شخص .. لذلك أقول يجوز هناك حل أو حلول تخيلية Visual .. فأعتزر مرة أخري




بالتوفيق

Simble.zip

بتاريخ:

اخي ممكن حضرتك تقول وصف الريبورت وعايز تعمل ايه بالظبط والجداول يعني
حتى لو مثال
لاني مش فهمك اوي وانا الحمد لله بتعمل بشكل جيد مع الريفكرسور في الريبورت
ياريت مثال حضرتك عايز تنفذ إيه بالظبط ... يمكن ربنا يوفقنا ونلاقي حل

بتاريخ:

المفروض أن الأخ حسام عايز يعمل Group شبية بـ Control Block ، بحيث أن يتم جلب البيانات من خلال Cursor ويتم إدراجة !!!

في Form Builder بيتم إستخدام أمر Create_Record .. هو بقي عايز يعمل كدة ، مثال :

نفرض أن لدينا بلوك عناصر مكون من TEXT1, TEXT2, TEXT3 ... وعندنا جدول EMP مكون من EMP_NO, EMP_NAME, EMP_SALARY ... المفروض علشان نعبي هذا البلوك بإستخدام الـ CURSOR يجب علينا الذهاب الي NEW-FORM أو NEW-BLOCK ويتم كتابة الكود التالي :

DECLARE
  CURSOR CUR_EMP IS SELECT EMP_NO, EMP_NAME, EMP_SALARY FROM EMP;
  ID_SERIAL   NUMBER;
  ID_NAME	 VARCHAR2(10);
  ID_SALARY  NUMBER(10,3);
BEGIN
  GO_BLOCK('BLODK1');
  CLEAR_BLOCK;
  OPEN CUR_EMP;
  FETCH CUR_EMP INTO ID_SERIAL, ID_NAME, ID_SALARY;
  WHILE CUR_EMP%FOUND 
  LOOP
	CREATE_RECORD;
	:TEXT1 := ID_SERIAL;
	:TEXT2 := ID_NAME;
	:TEXT2 := ID_SALARY;
	FETCH CUR_EMP INTO ID_SERIAL, ID_NAME, ID_SALARY;
 END LOOP;
  CLOSE CUR_EMP;
EMD;
/




وبالطبع هذا الكود بإستخدام الـ FORM BUILDER ، ولكن السؤال هل يمكن عمل ذلك بإستخدام الـ Report Builder ؟؟؟؟





شكراً

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

والله ياخ مصطفى انا تعبتك معاى كتير وجزاكم الله خيراً تاظاهر مفيش حاجة بالشكل دة
حتى فى منتديات ال otn تنحو ومحدش عرف يعمل حاجة
جزاكم الله خراً مرة اخرى
واخى abdu1_far اشكرك على محاولة المساعدة

بتاريخ:

بصراحة مفيش أي نوع من أنواع التقارير تعاملت معا تعمل ما ذكرتة ، ولكنني وجدت بعض الشكوك في طلبك هذا عند البحث عن جواب عنه ، لذلك أحببت أسيب الموضوع مفتوح


علي كل حال يمكنك أستخدام الأساليب المتاحة كمبدئياً لحين إيجاد حل مناسب لك أفضل من ذلك

والموضوع مفتوح للجميع



بالتوفيق

بتاريخ:

جزاكم الله خيرا ياخ مصطفى على الايضاح
الاخ حسام ... الريبورت في الاول او في الاخر ماهو هو إلا اداة عرض ، يعني مرحلة نهائية من البرمجة ...اكرر للعرض فقط
وبالتالي ... يتم استدعاءه من الفورم
وبالتالي نستطيع اننا نعمل اللي حضرتك عايزه كله من خلال الشاشة قبل العرض أي قبل عرض الريبورت
هو اولا جزاكم الله خيراً ... على الفكرة ، بس انا عندي سؤال بسيط ، أيه اللي ممكن تطلبه من الريفكيرسور في الريبورت ما نقدرش نعمله برمجيا من الفورم قبل استدعاء الريبورت ؟
انا ممكن اتحكم في النتائج اللي راجعه من الريفكيرسور بما انها راجع بفانكشن ، ممكن ابني فانكشن تانية تحت في الداتا بيز ، تعمل اي ترانس أشكن انا عايزه بناءاص على نتائج الريف كيرسور واربط بينهم بداتا لينك فوق على الريبورت
انا رأي والله أعلم ... ان الموضوع ممكن يتحل برمجيا ، قبل مرحلة العرض النهائي في الريبورت سواء بمعالجة الموضوع تحت في دالتابيز او بالفورم

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

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

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

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

ومسئلة انى اعمل ريف كيرسور ينادى فكشنز وهكذا هيقى التعديل بردك فى حيز ضيق لانك بردك هشتتغل فى حيز السطور ال هيرجعها الريف كيروسر بنفس الشكل الرجعها

مسئلة عملها تظبيط المراد فى الشاشات الول فانا شايف ان اعمل تيبل temp احط فية حجتى وبعد ككدة اعرضها فكرة مش ظريفة

وجزاك الله خيراً

بتاريخ:
مسئلة عملها تظبيط المراد فى الشاشات الول فانا شايف ان اعمل تيبل temp احط فية حجتى وبعد ككدة اعرضها فكرة مش ظريفة


هي فكرة مش وحشة ، بس لها إستخداماتها الخاصة وليس كل شيء !!!

بمعني لو عندي جدول Emp وعايز أعرض شوية حقول منها علي أساس شرط معين ، فماذا أدرج السجلات في جدول ومن ثم أستخدم هذا الجدول ؟؟؟

ومثال آخر ، لو عندي 3 جداول أرغب في إرجاع 3 حقول منهم ، فهل يعقل أن أصنع Insert لكل جدول في جدول آخر ومن ثم أرتجع من هذا الجدول ، طيب سؤال وما فائدة الـ Union ؟؟؟؟

بالمناسبة الـ Union كويس ولكن في السجلات الضخمة بيكون ضعيف نسبياً ... بالضبط مثل علية التنظيف لجدول محدد Delete ، فبدلاً من حذف السجلات عمل له Drop ، هيكون أسرع



علي فكرة أنا رديت عليك ، ولكن دون إيجاد سبب لكل هذا ، ما فكرتك أخ حسام ، هل لا ترغب في إفادتنا :rolleyes: ؟؟؟




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

 

:rolleyes: الحمد الله على كدة كلة رضا :D

 

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

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

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

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

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

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.