إبراهيم بخش

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

24 ردود في هذا الموضوع

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

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

الدرس الأول : تعبئة القائمة وقت التشغيل من جدول معين . ( خاص لمطوري التطبيقات على 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 تمثل إسم الحقل .

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

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

تم تعديل بواسطه إبراهيم بخش
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الدرس الثاني : طريقة تصدير البيانات إلى إكسيل وقت التشغيل ( خاص لمطوري التطبيقات على 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

تم تعديل بواسطه إبراهيم بخش
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

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

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

0

شارك هذا الرد


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

:huh:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

للرفع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

طيب

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
تائج RUN بفتحلك اكسل على طول

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بإمكانك تحميلها من موقع أوراكل مباشرة

Oracle Corporation

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

تم تعديل بواسطه عبد الله الشقيق
0

شارك هذا الرد


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

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

[email protected]

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

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

نورت الصفحة .

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .