بتاريخ: 9 يونيو 200818 سنة comment_130818 declare CURSOR c_cur IS SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM emp; MyApplication OLE2.OBJ_TYPE; args OLE2.LIST_TYPE; wb OLE2.OBJ_TYPE; wss OLE2.OBJ_TYPE; wbs OLE2.OBJ_TYPE; cell OLE2.OBJ_TYPE; went ole2.obj_type; c1 number(4); c2 number(4); args1 OLE2.LIST_TYPE; nm_of_col number:=8; begin MyApplication := OLE2.CREATE_OBJ('Excel.Application'); OLE2.SET_PROPERTY(MyApplication , 'Visible',1); wbs := OLE2.GET_OBJ_PROPERTY(MyApplication ,'Workbooks'); wb := OLE2.INVOKE_OBJ(wbs,'Add'); wss := OLE2.GET_OBJ_PROPERTY(MyApplication ,'ActiveSheet'); OLE2.SET_PROPERTY(wss , 'Value','Sheet1'); OPEN c_cur; c1:=1; LOOP fetch c_cur into :global.1,:global.2,:global.3,:global.4,:global.5,:global.6,:global.7,:global.8; exit when c_cur%NOTFOUND; --c2:=1; for vv in 1..nm_of_col loop args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, c1); OLE2.ADD_ARG(args, vv); cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args); OLE2.SET_PROPERTY(cell, 'Value',name_in( 'global.'||vv)); OLE2.DESTROY_ARGLIST(args); ole2.release_obj(cell); END LOOP; c1:=c1+1; END LOOP; CLOSE c_cur; OLE2.DESTROY_ARGLIST(args); args1 := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args1, 'C:\DOCS\EXAMPLE.xls'); --OLE2.INVOKE(wb, 'SaveAs', args1); OLE2.DESTROY_ARGLIST(args1); --OLE2.INVOKE(wb,'CLOSE'); --ole2.invoke(MYApplication,'Quit'); ole2.release_obj(wb); ole2.release_obj(wbs); ole2.release_obj(wss); ole2.release_obj(wss); ole2.release_obj(wb); OLE2.RELEASE_OBJ(MyApplication); END; تقديم بلاغ
بتاريخ: 9 يونيو 200818 سنة comment_130819 اتمنى منك اخي الكريم وضع الكود في خانة الكود كي يتسنى لنا قراءة الكود بالشكل الصحيح .. الكود ان شاء الله سهل وسوف احاول في شرحه لك .. تقديم بلاغ
بتاريخ: 9 يونيو 200818 سنة كاتب الموضوع comment_130864 declare CURSOR c_cur IS SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM emp; MyApplication OLE2.OBJ_TYPE; args OLE2.LIST_TYPE; wb OLE2.OBJ_TYPE; wss OLE2.OBJ_TYPE; wbs OLE2.OBJ_TYPE; cell OLE2.OBJ_TYPE; went ole2.obj_type; c1 number(4); c2 number(4); args1 OLE2.LIST_TYPE; nm_of_col number:=8; begin MyApplication := OLE2.CREATE_OBJ('Excel.Application'); OLE2.SET_PROPERTY(MyApplication , 'Visible',1); wbs := OLE2.GET_OBJ_PROPERTY(MyApplication ,'Workbooks'); wb := OLE2.INVOKE_OBJ(wbs,'Add'); wss := OLE2.GET_OBJ_PROPERTY(MyApplication ,'ActiveSheet'); OLE2.SET_PROPERTY(wss , 'Value','Sheet1'); OPEN c_cur; c1:=1; LOOP fetch c_cur into :global.1,:global.2,:global.3,:global.4,:global.5,:global.6,:global.7,:global.8; exit when c_cur%NOTFOUND; --c2:=1; for vv in 1..nm_of_col loop args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, c1); OLE2.ADD_ARG(args, vv); cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args); OLE2.SET_PROPERTY(cell, 'Value',name_in( 'global.'||vv)); OLE2.DESTROY_ARGLIST(args); ole2.release_obj(cell); END LOOP; c1:=c1+1; END LOOP; CLOSE c_cur; OLE2.DESTROY_ARGLIST(args); args1 := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args1, 'C:\DOCS\EXAMPLE.xls'); --OLE2.INVOKE(wb, 'SaveAs', args1); OLE2.DESTROY_ARGLIST(args1); --OLE2.INVOKE(wb,'CLOSE'); --ole2.invoke(MYApplication,'Quit'); ole2.release_obj(wb); ole2.release_obj(wbs); ole2.release_obj(wss); ole2.release_obj(wss); ole2.release_obj(wb); OLE2.RELEASE_OBJ(MyApplication); END; اتمنى منك اخي الكريم وضع الكود في خانة الكود كي يتسنى لنا قراءة الكود بالشكل الصحيح .. الكود ان شاء الله سهل وسوف احاول في شرحه لك .. تقديم بلاغ
بتاريخ: 13 يونيو 200818 سنة comment_131109 سوف احاول ان اشرحلك الكود بشكل سريع وسهل .. انته تحاول ان تقوم بنقل المعلومات من اوراكل الى الاكسل -- اولا قمت باستخدام الكيرسر لكي يدخل الى قاعدة بياناتك في جدول emp الخاصية التي قمت باستخدامها في هذا تسمى ال ole وهي التي تساعدك على نقل المعلومات بحيث انك اولا تقوم بإنشاء application من ثم sheet ومن ثم تقوم بحفظه وتسميته بعد ما تفتح الكيرسر تقوم بوضع ال records في خانات الاكسل اي you put the record in excel cell بعد ذلك تحاول ان تقوم بإغلاق ال application الذي قمت بفتحه والsheet اي استفسار انا حاضره تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.