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

بتاريخ:

ودة انا عايزة عشان فى تقررير البار كود وال هيحدد فية اليوزر عدد البار كود ال عايز يطبعها لنفس الصنف :)

بتاريخ:

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

أو فية طريقة أخري ، تستخدم الجدول DUAL في هذه العملية ، بمعني أنك تعمل Parameter من نوع نصي زات حجم كبيرة ، ومن ثم تصنع Group في التقرير ومن ثم تكتب بداخلة الكود التالي :

Select DUMMY From DUAL Where RowNum = 0  &



بحيث أنه ميرتجعش أي سجلات ، بعد كدة في الفورم تعمل Loop علي أساس العدد المعين وتبني الجملة التالي :

DECLARE
ID_SQL  VARCHAR2(8000);
BEGIN
FOR I IN 1 .. :TXT1
LOOP
	 ID_SQL := ID_SQL || ' UNION SELECT DUMMY FROM DUAL';
END LOOP;
-- بعد كدة ترسل جملة السيكوال الي الباراميتر المدرج بالتقرير --
END;



بس في رأيي إستخدام جدول الـ TEMP ، لأن المتغير ID_SQL مش هيشيل مساحة كبيرة أكثر من 32767 حرف

المهم

بكدة صنعنا عدد سجلات علي أساس عدد تكراري محدد ، ممكن بعد كدة الربط مع هذه الجملة كما يلي :

مثال

تكرار الموظف "Youser" :

SELECT EMP_NAME 
FROM EMP, (SELECT DUMMY FROM DUAL WHERE ROWNUM = 1 &IN_SQL)
WHERE EMP_ID = 111





بالتوفيق

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

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

select * from emp ,  (SELECT 1 FROM DUAL CONNECT BY ROWNUM <=3)
order by empno

بتاريخ:

شكرا أخي حسام لكن ماالمقصود ب connect by

بتاريخ:

الأخ حسام ، معلش ممكن سؤال ؟؟؟؟

أنا بستخدم CONNECT BY لتصميم Tree ، ولما جربت الجملة بتاعتك فوجأت بأنها لا تعمل وتعرض ليا الرسالة التالية :


select * from emp , (SELECT 1 FROM DUAL CONNECT BY ROWNUM <=3) T order by empno
		  *
يوجد خطأ عند سطر 1:
ORA-01436: توجد حلقة CONNECT BY  في بيانات المستخدم



مع العلم أنني أتعامل مع Oracle 9i الإصدار 9.0.1.0.0 !!!!


طيب هفترض أنك عايز تعمل التالي :

SELECT * 
FROM EMP ,(SELECT 1 FROM DUAL WHERE ROWNUM <=3) T 
WHERE EMPNO = 7369
ORDER BY EMPNO;



كدة كدة سيتم إرتجاع سجل واحد ، لأن الجدول DUAL لا يحتوي سوي علي حقل واحد أسمة DUMMY ونوعة VARCHAR2 وطولة حرف واحد ، وكمان قيمتة NULL .... فإزاي تستخدم الجملة RowNum <= 3 وكدة كدة مفيش غير سجل واحد ؟؟؟؟؟


من الواضح أن فية تغيرات كثيرة بين أوراكل 9 و 10 ، وإظاهر أنك بتتعامل مع 10 ، فهل تفكيري صحيح ؟؟؟
يا إما الكود فية حاجة غلط ؟؟؟



ممكن توضيح أكثر ؟؟




شكراً

بتاريخ:

أعتقد إن أخي حسام استفاد من ال cartesian product باستخدام SELECT 1 FROM DUAL CONNECT BY ROWNUM <=3; واعتبارها كجدول أخر


connect by بالفعل شغالة ومستحدثة في ال 10جي أخي مصطفى

connect_by_root
connect_by_root is a new operator that comes with Oracle 10g and enhances the ability to perform hierarchical queries. I have yet to dig into this subject and will write about it when things become clearer.



وهذا هو مصدر المعلومة مع الشرح الكامل لها

http://www.adp-gmbh.ch/ora/sql/connect_by.html

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

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

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

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

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

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.