بتاريخ: 12 ديسمبر 200718 سنة comment_118453 السلام عليكمهناك مشاركة مميزة جدا شاهدتها اليوم بإسم الاخ القدير zaeenعن التحويل من اوراكل لإكسلوفي هذة المشاركة بروسجر يقوم بتحويل عمودين فقط وهذا هو رابط المشاركةhttp://www.araboug.org/ib/index.php?showtopic=20018وقد حاولت تعديلها الى اكثر من عموودوإليكم التعديل 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; إنسخ الكود إلى زر واعمل ربط على المستخدمscott/tigerمع العلم يمكنك تغيير عدد الأعمدة في المتغيرnm_of_colوإضافة :global.1,:global.2,:global.3,:global.4,:global.5,:global.6,:global.7,:global.8. .9..10....:global.n بحسب عدد الأعمدةوقد أضفت هذة المشاركة لكي نتعاون في تحسين الفكرةفمن لديه اي تعديل ارجو ان لا يبخل علينا بهاكرر شكري للأخ zaeenدعواتكمبالتوفيقالجنتل تقديم بلاغ
بتاريخ: 12 ديسمبر 200718 سنة comment_118461 السلام عليكم؟؟أخي جنتل والأخ zaeen لكم الشكر والتقدير بصراااحة كنت أدور على هذا الكود.و شكر و أولا للأخ zaeen ثم الشكر يتجدد للأخ جنتل على الإضافة ....ولاكن عند سؤال وهو:إذا أريد أن أصدر البيانات إلى الإكسل وأريد إذا أضفت بيانات جديدة في الأوراكل تنضاف أو تتصدر إلى الإكسل تلقائيا .يعني إذا صدرت البيانات وكانت عدد السجلات 100 ثم أضفت بيانات جديدة في الفورم أريد أن تنضاف تلقائيا في ملف الأكسل .؟؟ فهل هذا يمكنني أو إنها لا توجد علاقة لعمل ذلك !!!!ولكم مني اجمل تحية... تقديم بلاغ
بتاريخ: 14 ديسمبر 200718 سنة كاتب الموضوع comment_118639 السلام عليكمفكرة جيدةواعتقد انها تكون بنفس الطريقة مع اضافة فكرة جديدةوهي عمل مسلسل لعدد الريكوردسوبتالي عند الاضافة في الفورم اخذ اخر ريكورد واضافته في اخر سطر في ملف الاكسل حسب المسلسلفكر فيها وانا متاكد بتوجد الحل بسهوله بالتوفيق الجنتل تقديم بلاغ
بتاريخ: 15 ديسمبر 200718 سنة comment_118683 السلام عليكمانا مشكور جدا للاخوه zaeen, gentleانا من سنوات وانا بدور على هذا الكودبارك الله فيكم تقديم بلاغ
بتاريخ: 16 ديسمبر 200718 سنة comment_118747 مشكورين على المجهود الرائع ولكن كيف يمكن ان اضيف عنوان العمود بحيث يكون الاسم في الاعلى والبيانات تحته مباشرة بدون التعديل على الاكسيل تقديم بلاغ
بتاريخ: 16 ديسمبر 200718 سنة كاتب الموضوع comment_118791 السلام عليكمالتحويل لإكسل مع أسماء الأعمدة 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'); --------------------------------------------------------------------------------------------أسماء الأعمدة :global.nm1:='EmpNo'; :global.nm2:='EmpName'; :global.nm3:='Job'; :global.nm4:='Mgr'; :global.nm5:='Date'; :global.nm6:='Sal'; :global.nm7:='Comm'; :global.nm8:='DeptNo'; for gg in 1..8 loop args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, 1); OLE2.ADD_ARG(args, gg); cell := OLE2.GET_OBJ_PROPERTY(wss,'Cells', args); OLE2.SET_PROPERTY(cell, 'Value',name_in( 'global.nm'||gg)); OLE2.DESTROY_ARGLIST(args); ole2.release_obj(cell); end loop; ----------------------------------------------------------------------------------------------- OPEN c_cur; c1:=2; 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; --end if; 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; بالتوفيق الجنتل تقديم بلاغ
بتاريخ: 2 أبريل 200917 سنة comment_152738 السلام عليكم ورحمة الله وبركاته الأخ جنتل الأخوه الاعزاء الشغل ده جميل جدا بس في مشكلة عندي لما بشغل البرنامج بتاعي علي أجهزة الكلينت الكود ده مش بيشتغل وبيديني رساله علما باني مصمم البرنامج ب اوراكل 10gمع انه علي جهازي الخاص بيشتغل كويس ارجو مساعدتكم تقديم بلاغ
بتاريخ: 4 أبريل 200917 سنة comment_152881 معقولة مفيش حد عارف الحل اعتقد انها مشكلة ممكن تكون مرت علي كل المحترفين واصحاب الخبرة ساعدوني ياجماعة انا شغال في البرنامج ليه 7 شهور مش واقف ال علي التحويل الي اكسيل تقديم بلاغ
بتاريخ: 4 أبريل 200917 سنة comment_152884 السلام عليكم علي أجهزة الكلينت الكود ده مش بيشتغل وبيديني رساله ما هى هذه الرسالة ؟ او اعمل print screen للرسالة ... واعرضها حتى يمكن المساعدةC:\DOCS\EXAMPLE.xls هل المشكلة فى عدم التعرف على الفولدر ومكانه ؟جرب التعامل مع الملف باعتباره موجود على drive a الفلوبي دريف مثلاa:\filename.xls تقديم بلاغ
بتاريخ: 5 أبريل 200917 سنة comment_152906 الحل في هذا الملف هي الفكره كلها في تحديد المكان الذي هينزل في البيانات في ملف الاكسل بتحدد الصف والعمود مثال OLE2.ADD_ARG(args, c1);OLE2.ADD_ARG(args, 8); وفي الملف المرفق توضيح أكثر oracle_2_excel.txt تقديم بلاغ
بتاريخ: 5 أبريل 200917 سنة comment_152953 اشكركم اخواني علي اهتمامك جاريالتحميل وهجرب وارد عليكم تقديم بلاغ
بتاريخ: 5 أبريل 200917 سنة comment_152960 الاخت الكريمةشكرا لك على المشاركة الجميلةجربت الكود وقد عمل معي 100%ولكن هناك ملاحظةيتم تنفيذ وعمل ملف الاكسل على السيرفر فقطكيف يمكن عمل ملف الاكسل على نفس جهاز الكلينت الذي يريد عمل الملف على الاكسل؟؟؟أرجو الرد وشكرا تقديم بلاغ
بتاريخ: 13 أبريل 200917 سنة comment_153659 الله يعطيك الف عافية اخوي الجنتل وبقية الأخوة مشاركة اكثر من رائعة تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.