بتاريخ: 17 يناير 201016 سنة comment_182493 السلام عليكمأخوتي في منتدى أوراكل العرب ...في مشروعي هناك واجهة للاستعلام...المطلوب: بعد تنفيذ عملية الاستعلام أريد عمل تصدير للبيانات الناتجة من ( رقم هوية , اسم , عمر ,..الخ ) الى ملف أكسس أو اكسل ...الفورم على شكل تابيولر ..أريد تصدير ناتج عملية الاستعلام الى ملف أكسس أو أكسل ..أرجو الافادة العاجلة ..للضرورة القصوة ...تحياتيأخوكمبريزون بريك تقديم بلاغ
بتاريخ: 17 يناير 201016 سنة comment_182584 السلام عليكم ورحمة الله وبركاته مرسل اليك كود يقوم بانشاء ملف اكسيل جديد وتسجيل البانات بداخله.* ملحوظه هذا الكود يعتمد على الwebutil لكى تستطيع فتح الملفات على اجهزة ال client وليس السيرفر . يمكنك ان تستبد الكود الخاص ب client_ole2 ,وتحولها الى ole2 للتجربه على جهازك الشخصى او لفتح الملف على ال application server يمكنك الذهاب الى هذا الرابط http://www.oracle.com/technology/products/.../howto_ole.htmlوفيه كود الاكسل مبسط نوعا ما.ولو فى اى مشاكل باذن الله احاول احلها معاك. declare -- myexcelcontent CLOB; --l_xml_body CLOB; arg number :=1; lev VARCHAR2(100);--number; old_lev VARCHAR2(100);--number; x number :=1; old_x number:=1; temp number:=1; cost_cent varchar2(100); bank number; old_bank number; hParagraphFormat client_ole2.OBJ_TYPE; i_reporttitle VARCHAR2(200) := 'My excel'; COL1 VARCHAR2(2); COL2 VARCHAR2(8); r number := 2; c number := 1; max_prl_code1 number; i_orientation VARCHAR2(200) := '1'; i number :=1; V_LEV_NAME VARCHAR2(100); lev_noo number; /* definiton for commonly used variables and constants and exceptions */ ExcelID client_ole2.obj_type; ExcelWorkBooksID client_ole2.obj_type; ExcelWorkBookID client_ole2.obj_type; ExcelWorkSheetsID client_ole2.obj_type; ExcelWorkSheetID client_ole2.obj_type; ExcelCellID client_ole2.obj_type; SHEET client_ole2.obj_type; ExcelFontID client_ole2.obj_type; ExcelPageSetupID client_ole2.obj_type; ExcelArgs client_ole2.list_type; args1 client_ole2.LIST_TYPE; z number := 9; y number :=1; range client_ole2.OBJ_TYPE; range_col client_ole2.OBJ_TYPE; -- Define th ecolors if they are to be used colour client_ole2.obj_type; myBlue CONSTANT number(8) := 16711680; --FF0000 myGreen CONSTANT number(8) := 65280; --00FF00 myRed CONSTANT number(8) := 255; --0000FF myDkGreen CONSTANT number(8) := 32768; --008000 myBlack CONSTANT number(8) := 0; --000000 --client_ole2.set_property(ExcelFontId, 'Color', myred); cursor f is --- select to_number(rownum+2) d,prl_code p,mf_name sp,mf_loc_nod_id from prl_mf where mf_loc_nod_id=_1 order by 1; SELECT PRL_COSTCENTER.COSTCENTER_ID, PRL_DEPT_NODES.NODE_ID, BANK.BANKID, BANK.BANKARNAME, PRL_SAL_MST.COMPID, PRL_MF.PRL_CODE, PRL_SAL_MST.SAL_NET_AMT, PRL_MF.MF_NAME, PRL_SAL_MST.SAL_TOT_SAL, PRL_MF.MF_ACCOUNT_NO, PRL_MF.MF_LOC_NOD_ID, PRL_SAL_MST.SAL_ACT_BSC, PRL_SAL_MST.SAL_DAILY, PRL_SAL_MST.SAL_MST_SRL FROM GENERAL.BANK, PRL_SAL_MST,PRL_DEPT_NODES, PRL_MF, PRL_COSTCENTER, PRL_COSTCENTER_DT WHERE PRL_COSTCENTER_DT.COMPID = PRL_COSTCENTER.COMPID AND PRL_COSTCENTER_DT.COSTCENTER_ID = PRL_COSTCENTER.COSTCENTER_ID AND PRL_COSTCENTER_DT.COMPID = PRL_DEPT_NODES.NODE_COMPID AND PRL_COSTCENTER_DT.DEPT_ID = PRL_DEPT_NODES.NODE_ID AND GENERAL.BANK.COMPID = :GLOBAL.COMPID AND PRL_MF.MF_BANK_ID = BANK.BANKID AND PRL_DEPT_NODES.NODE_COMPID = GENERAL.BANK.COMPID AND PRL_SAL_MST.COMPID = GENERAL.BANK.COMPID AND PRL_MF.COMPID = GENERAL.BANK.COMPID AND PRL_MF.PRL_CODE = PRL_SAL_MST.PRL_CODE AND PRL_MF.MF_LOC_NOD_ID IN( SELECT T1.NODE_ID FROM PRL_DEPT_NODES T1 WHERE T1.NODE_COMPID = 1 CONNECT BY PRIOR(NODE_ID)=NODE_PARENT START WITH NODE_ID IN( SELECT T2.NODE_ID FROM PRL_DEPT_NODES T2 WHERE T2.NODE_PARENT = PRL_DEPT_NODES.NODE_ID ) ) AND PRL_MF.MF_BANK_ID = BANK.BANKID AND (PRL_DEPT_NODES.NODE_ID >= :FROM1 OR :FROM1 IS NULL) AND (PRL_DEPT_NODES.NODE_ID <= :TO1 OR :TO1 IS NULL) AND (PRL_MF.MF_BANK_ID >= :DOM OR :DOM IS NULL) AND (PRL_MF.MF_BANK_ID <= :FROM OR :FROM IS NULL) AND (PRL_COSTCENTER.COSTCENTER_ID >= :FROM2 OR :FROM2 IS NULL) AND (PRL_COSTCENTER.COSTCENTER_ID <= :TO2 OR :TO2 IS NULL) AND (TO_NUMBER(TO_CHAR(PRL_SAL_MST.SAL_MON, 'MM')) = _MONTH OR _MONTH IS NULL) AND (TO_NUMBER(TO_CHAR(PRL_SAL_MST.SAL_MON, 'RRRR')) = _YEAR ) AND PRL_DEPT_NODES.NODE_PARENT IS NULL --AND PRL_MF.MF_ACCOUNT_NO IS NOT NULL --AND NVL(PRL_SAL_MST.SAL_NET_AMT,0) != 0 AND PRL_MF.PRL_CODE IN (SELECT PRL_CODE FROM PRL_SAL_MST WHERE (TO_NUMBER(TO_CHAR(PRL_SAL_MST.SAL_MON, 'MM')) = _MONTH OR _MONTH IS NULL) AND (TO_NUMBER(TO_CHAR(PRL_SAL_MST.SAL_MON, 'RRRR')) = _YEAR ) ) AND PRL_MF.PRL_CODE NOT IN (SELECT PRL_CODE FROM PRL_MF WHERE MF_EOS_DT <= TO_DATE('01-'||TO_CHAR(PRL_SAL_MST.SAL_MON,'MM-YYYY'),'DD-MM-YYYY') AND (MF_APRV_EOS_DT <= LAST_DAY(PRL_SAL_MST.SAL_MON))) ORDER BY --PRL_COSTCENTER.COSTCENTER_ID, BANK.BANKID, PRL_DEPT_NODES.NODE_ID, PRL_MF.PRL_CODE ; PRL_COSTCENTER.COSTCENTER_ID, PRL_DEPT_NODES.NODE_ID,BANK.BANKID, PRL_MF.PRL_CODE; BEGIN --message(11111111111);message(11111111111); -- OPEN EXCEL SHEET "APPLICATION SERVISE" --max_prl_code (max_prl_code1); ExcelID := client_ole2.create_obj('Excel.Application'); --message(3333333333);message(333333333333); ExcelWorkBooksID := client_ole2.get_obj_property(ExcelID, 'Workbooks'); ExcelWorkBookID := client_ole2.invoke_obj(ExcelWorkBooksID, 'Add'); ExcelWorkSheetsID := client_ole2.get_obj_property(ExcelWorkBookID, 'Worksheets'); --ExcelWorkSheetsID := client_ole2.get_obj_property(ExcelWorkBookID, 'vvvv'); --++**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+ --start in the first sheet ExcelArgs:=client_ole2.CREATE_ARGLIST; client_ole2.ADD_ARG(ExcelArgs, 1); ExcelWorkSheetID :=client_ole2.GET_OBJ_PROPERTY(ExcelWorkSheetsID,'Item',ExcelArgs); client_ole2.DESTROY_ARGLIST(ExcelArgs); --++**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+ for v_pat in f loop --________________el dayera ____________ --************************************ old_lev :=V_LEV_NAME; SELECT LEV_NAME , LEV_NO INTO V_LEV_NAME , lev_noo FROM PRL_LEVEL WHERE LEV_NO IN (SELECT NODE_LEV_NO FROM PRL_DEPT_NODES WHERE NODE_ID IN(SELECT NODE_PARENT FROM PRL_DEPT_NODES WHERE NODE_ID = v_pat.MF_LOC_NOD_ID)); ----------------------------------------------------------------------------------- --message(22222222222);message(2222222222222); --Add new sheet ExcelWorkSheetID := client_ole2.invoke_obj(ExcelWorkSheetsID, 'Add'); ExcelPageSetupID := client_ole2.get_obj_property(ExcelWorkSheetID, 'PageSetup'); client_ole2.set_property(ExcelPageSetupID, 'Orientation',i_orientation); client_ole2.release_obj(ExcelPageSetupID); --*********************************Titles**************************************** ----------------- end of header and photer old_bank := bank; bank := v_pat.BANKID; ExcelArgs := client_ole2.create_arglist; client_ole2.add_arg(ExcelArgs,1); --row postion | client_ole2.add_arg(ExcelArgs,5); --Column postion - ExcelCellId := client_ole2.get_obj_property(ExcelWorkSheetId,'cells',ExcelArgs); client_ole2.destroy_arglist(ExcelArgs); client_ole2.set_property(ExcelCellId, 'Value', 'ÍßæãÉ ÑÇÓ ÇáÎíãÉ'); --value client_ole2.SET_PROPERTY ( ExcelCellId, 'Merge', 'center' ); ExcelFontId := client_ole2.get_obj_property(ExcelCellId, 'Font'); client_ole2.set_property(ExcelFontId, 'Bold', 'True'); --client_ole2.set_property(ExcelFontId, 'Color', 'Red'); --client_ole2.set_property(ExcelFontId, 'Color', myred); --____________code_________________________ ExcelArgs := client_ole2.create_arglist; client_ole2.add_arg(ExcelArgs,z); --row postion client_ole2.add_arg(ExcelArgs,2); --Column postion ExcelCellId := client_ole2.get_obj_property(ExcelWorkSheetId,'cells',ExcelArgs); client_ole2.destroy_arglist(ExcelArgs); client_ole2.set_property(ExcelCellId, 'Value', v_pat.PRL_CODE); ExcelFontId := client_ole2.get_obj_property(ExcelCellId, 'Font'); client_ole2.set_property(ExcelFontId, 'Bold', 'True'); client_ole2.set_property(ExcelFontId, 'Size', '10'); client_ole2.release_obj(ExcelFontId); client_ole2.release_obj(ExcelCellId); --____________name ________________ -- Autofit columns --------- auto fit coulumns range := client_ole2.GET_OBJ_PROPERTY( ExcelWorkSheetId,'UsedRange'); range_col := client_ole2.GET_OBJ_PROPERTY( range,'Columns'); client_ole2.INVOKE( range_col,'AutoFit' ); client_ole2.RELEASE_OBJ( range ); client_ole2.RELEASE_OBJ( range_col ); --if max_prl_code1 = v_pat.PRL_CODE then client_ole2.set_property(ExcelID, 'Visible','TRUE'); end loop; --client_ole2.set_property(ExcelID, 'Visible','TRUE'); -- ... and release the allocated resources because they are no longer used by forms client_ole2.release_obj(ExcelWorkSheetID); client_ole2.release_obj(ExcelWorkSheetsID); client_ole2.release_obj(ExcelWorkBookID); client_ole2.release_obj(ExcelWorkBooksID); client_ole2.release_obj(ExcelID); END; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; تقديم بلاغ
بتاريخ: 18 يناير 201016 سنة كاتب الموضوع comment_182630 قمت باستخدام الكود التالي أخي من الموقع الموجود في الرابط حتى يتم حفظ البيانات على شكل ملف وورد ونجح الأمر لكن المشكلة أخي أنه يقوم بحفظ الصف الأول فقط ...مع العلم أخي أن الفورم على شكل تابيولر ..ولكنه يحفظ الصف الأول فقط ومع العلم أن الناتج أحيانا يفوق 1000 صف ..كيف أحفظ جميع الصفوف ..؟وهل ينجح هذا الكود عندما أستخدم البرنامج من على أجهزة العملاء .. DECLARE app OLE2.OBJ_TYPE; docs OLE2.OBJ_TYPE; doc OLE2.OBJ_TYPE; selection OLE2.OBJ_TYPE; args OLE2.LIST_TYPE; BEGIN -- create a new document app := OLE2.CREATE_OBJ('Word.Application'); OLE2.SET_PROPERTY(app,'Visible',1); docs := OLE2.GET_OBJ_PROPERTY(app,'Documents'); doc := OLE2.INVOKE_OBJ(docs, 'add'); selection := OLE2.GET_OBJ_PROPERTY(app,'Selection'); -- insert data into new document from long item OLE2.SET_PROPERTY(selection,'Text',:IDC); -- save document as example.doc args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, 'c:\temp\example.doc'); OLE2.INVOKE(doc, 'SaveAs', args); OLE2.DESTROY_ARGLIST(args); -- close example.doc args := OLE2.CREATE_ARGLIST; OLE2.ADD_ARG(args, 0); OLE2.INVOKE(doc, 'Close', args); OLE2.DESTROY_ARGLIST(args); OLE2.RELEASE_OBJ(selection); OLE2.RELEASE_OBJ(doc); OLE2.RELEASE_OBJ(docs); -- exit MSWord OLE2.INVOKE(app,'Quit'); END; تقديم بلاغ
بتاريخ: 18 يناير 201016 سنة comment_182673 سؤال هل قمت بعمل cursor لاستدعاء البيانات الخاصه بك ام لا ؟يمكنك الاستعانه بالكود المرسل فى حالة الاكسيل .اذا احتجت الى المساعد فى الكود الرجاء ارسال بعض البيانات التى توضح بها قيم البيانات المستدعاه حتى اتمكن من توضيح الفكره اكثر. تقديم بلاغ
بتاريخ: 19 يناير 201016 سنة كاتب الموضوع comment_182716 أخي أنا أريد تصدير البيانات الناتجة عن عملية الاستعلام والموجودة في البلوك الذي على شكل تابيولر .. تقديم بلاغ
بتاريخ: 19 يناير 201016 سنة كاتب الموضوع comment_182717 الذي أريده فقط أن أقوم بتصدير أرقام الهويات الناتجة من عملية الاستعلام الى ملف وورد أو اكسل أو أكسس ...فقط أرقام الهويات الناتجة .. تقديم بلاغ
بتاريخ: 19 يناير 201016 سنة comment_182760 السلام عليكم فى الحقيقه انا لا اعلم كيفية استدعاء البيانات الموجوده فى الشاشه . ولكن اعتقد ان الامر بسيط.فاذا كنت قد قمت عمل زرار للاستعلام فانك سوف تكتب نفس الكود الموجود على هيئة cursor . اما اذا كنت تستعلم عن طريق الشاشه مباشرة فالامر سيكون اسهل بكثير حيث ان ال cursor المطلوب سيكون select * from Table.الموضوع هنا اشبه بتكوين الريبورت ليس اكثر . فعندما تحاول فتح التقارير لابد من وجود select statment حتى يقوم التقرير باستدعاء البيانات . كذلك فى الاكسيل لابد من وجود البيانات التى تحاول العثور عليها اولا على هيئة select statment .مع العلم انه فى حالتك اذا قمت بمحاولة الاستعلام عن البيانات الموجوده فى الشاشه سوف يفتح سجل وحيد نظرا لوجود سجل واحد نشط فقط.اذا احتجت الى المساعده الرجاء ارفاق الفورم الخاصه بك وسوف احاول باذن الله معالجة الامر معك. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.