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

درسين في الأوراكل ( تعبئة القائمة وقت التشغيل ) ، ( تصدير البيانات إلى إكسيل وقت التشغيل)

بدأه IGBSpeed في 10 سبتمبر 2006 · 23 رد · 13,640 مشاهدة · في قسم Oracle Forms
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كنت جالس أنظم بعض الملفات القديمة ووجدت هذين الدرسين وحبيت أشارككم فيها .

الدرس الأول : تعبئة القائمة وقت التشغيل من جدول معين . ( خاص لمطوري التطبيقات على Oracle Developer ) .

السبب : فرضاً لديك شاشة تختار منها مثلاً الجنسيات أو تختار منها إسم الموظف ، يجب أن يكون إسم الموظف هذا أساساً في جدول معين كيف تختاره ولكن أنتظر :unsure: يجب أن تكون القيمة التي ترجعها هذه القائمة هي رقم الموظف .... حسناً لتقوم بذللك قم بعمل التالي :

إذهب إلى Object Navegator ثم قم بإنشاء Procedure جديد في الـ Program Units كالتالي :

PROCEDURE POPULATELIST(
LISTNAME VARCHAR2,
GROUPNAME VARCHAR2) 
IS
RG_ID RECORDGROUP;
ERRCODE NUMBER;
BEGIN
  RG_ID := FIND_GROUP(GROUPNAME);
  IF ID_NULL(RG_ID) THEN
	  MESSAGE('GROUP NAME IS NOT CORRECT');
  END IF;
	  CLEAR_LIST(LISTNAME);
	  ERRCODE := POPULATE_GROUP(RG_ID);
	  POPULATE_LIST(LISTNAME,RG_ID);
  EXCEPTION WHEN OTHERS THEN
	  MESSAGE('CANNOT POPULATE LIST :'||LISTNAME||'WITH GROUP:'||GROUPNAME);
END;

طيب هذا الكود اللي يعبئ القائمة ولكن لتعبئة القائمة يجب تحديد مصدر البيانات اي جملة الإستعلام وذلك يكون بإنشاء RecordGroup جديد وأكتب جملة الإستفسار التي تعجبك مثلاً :

SELECT ALL
ename ,
to_char(empno)
FROM emp
ORDER BY 1

طبعاً الحقل الأول يمثل القيمة التي تظهر للمستخدم والثاني تمثل قيمة نفس الحقل ويجب أن تكون من النوع Character .

الآن يتبقى الخطوة الأخيرة وهي إنشاء Trigger على مستوى تحميل الفورم لتعبئة القائمة .

/*
Trigger Name : PRE-FORM .
LEVEL			: FORM-LEVEL .
BY				  : Ibrahim Bakhsh . 
*/ 

POPULATELIST('EMP_DETAILS.EMP_CODE','RG_ALL_TABLES');

طبعاً :

Rg_all_tables تمثل إسم الريكورد جروب .

EMP_DETAILS تمثل إسم البلوك .

EMP_CODE تمثل إسم الحقل .

أنتهى الدرس الأول ....

نرجو من الجميع الدعوة بالتوفيق .

تم تعديل هذه المشاركة بواسطة إبراهيم بخش في 27 أبريل 2007 في 08:09

#2

الدرس الثاني : طريقة تصدير البيانات إلى إكسيل وقت التشغيل ( خاص لمطوري التطبيقات على Oracle Developer ) .

سنستخدم في هذا الدرس الباكج : TEXT_IO ونستخدم الدالة : FOPEN ونمرر لها المتغييرات التالية :

1- مسار الملف .

2- نمط فتح الملف :

O : فتح الملف للقراءة فقط .

W : فتح الملف للقراءة والكتابة بعد حذف المحتوى .

A : فتح الملف للقراءة والكتابة بعد المحتوى بدون حذف المحتوى .

لعمل ذلك دعونا نفتح موديول جديد وننشيء زر جديد ونكتب فيه الكود التالي :

DECLARE
	OUTFILE TEXT_IO.FILE_TYPE;
BEGIN
	OUTFILE := TEXT_IO.FOPEN('C:\TEST.CSV','W');
	FOR R IN (
	SELECT EMPNO,ENAME,DEPTNO 
	FROM EMP )
	LOOP
		TEXT_IO.PUT_LINE (OUTFILE,R.EMPNO||','||R.ENAME||','||R.DEPTNO);
	END LOOP;
	TEXT_IO.FCLOSE(OUTFILE);
END;

بالتوفيق للجميع وسأرفق الملف الذي يحتوي على الدرسين مطبقاً على Oracle Developer Forms 6i .

;)

أنتهى الدرس الثاني .

نرجو من الجميع الدعوة بالتوفيق .

آسف هذا المثال :

وبالتوفيق .

أرجو أن لا تكون دروسي مكررة . .

ORACLE_TO_EXCEL2.zip

تم تعديل هذه المشاركة بواسطة إبراهيم بخش في 27 أبريل 2007 في 08:10

#3

8 مشاهدات للموظوع ولا رد واحد ،،

أي مشاركات أو ردود ... . :wacko: :s :P

#4

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

فقط للمشاركة :

يجب على الجميع أن يتذكر وضع قيمة للبارامتر utl_file_dir قبل أن يقومموا بتنفيذ الكود الخاص بإكسل (يتولى هذه المهمة في العادة مدير القاعدة ) :

connect sys/oracle as sysdba
alter system set utl_file_dir='*'  scope=spfile; 
shutdown immediate; 
startup ;

فقط للتذكير ...

#5
اقتباس
مشكور على مجهودك أخي إبراهيم .. و لكن عليك أن تنتظر بعض الوقت لنقل سنتين أو ثلاث لتشاهد تفاعلاً فالصبر ثم الصبر .......

:huh:

#6

شكرا على الدروس وننتظر المزيد

#7

بارك الله فيك وكثر من أمثالك

#9

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

طيب

ممكن ان يكون بطريقه مباشره

يعني قصدي نتائج RUN بفتحلك اكسل على طول

#10

Thanks My Friend for ur Hardworking

plz still like that forever

#11
اقتباس
تائج RUN بفتحلك اكسل على طول

ممكن بسيطة تستخدم امر الـ Host لذلك .

#12

بارك الله فيك يا اخى وزادك من علمة

هل تعلم يا اخى كيفية الحصول على البرنامج oracle حتى يمكننى متابعة دروسك القيمة

لو تعرف طريقة احصل بيها على البرنامج يا ربت تقولى

وجزاك الله عنى وعن المسلمين كل الخير

#14

مجهود رائع اخى

#15

رائع أخى جزاك الله ألف خير

#16

مشكوور على الدروووس

#17

أخي IGBSpeed مكن لو سمحت تضيفني على admin@dnyty.net للأهمية وشكراً

#18

مشكور اخي الكريم رغم انني زميل فى المكتب

#19

اخي الكريم IGBSpeed ،ممكن تعطيني طريقه للإتصال بك ضروري لو سمحت

تم تعديل هذه المشاركة بواسطة عبد الله الشقيق في 24 مايو 2008 في 12:17

#20
عبد الله الشقيق كتب:
اخي الكريم IGBSpeed ،ممكن تعطيني طريقه للإتصال بك ضروري لو سمحت

ممكن تتواصل معي على البريد الخاص :

igb_igsb@hotmail.com

khalid eed كتب:
مشكور اخي الكريم رغم انني زميل فى المكتب

هلا خالد باشا،،

نورت الصفحة .

ربنا يجعل أيامك وأيامنا كلها سعادة بعونه الكريم إن شاء الله . :D

#21

شكرا اخي IGBSpeed و بعثت لك مايل على igb_igsb@hotmail.com

اتمنى ان تقرأه و تجاوبني للأهميه و شكرا

#22

جزاك الله الخير أستاذ ابراهيم :S

والى الأمام دائما


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#23

مشكور يا باشا وجزاك الله خيراص على الموضوع المميز

#24

شكراااااااااااااااااااااااااااااااااااااااااااااااااااااااااا

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