الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مساعدة فى:التصدير الى الأكسس أو الاكسل ..

Featured Replies

بتاريخ:

السلام عليكم
أخوتي في منتدى أوراكل العرب ...
في مشروعي هناك واجهة للاستعلام...
المطلوب: بعد تنفيذ عملية الاستعلام أريد عمل تصدير للبيانات الناتجة من ( رقم هوية , اسم , عمر ,..الخ ) الى ملف أكسس أو اكسل ...
الفورم على شكل تابيولر ..
أريد تصدير ناتج عملية الاستعلام الى ملف أكسس أو أكسل ..
أرجو الافادة العاجلة ..
للضرورة القصوة ...
تحياتي
أخوكم
بريزون بريك

بتاريخ:

السلام عليكم ورحمة الله وبركاته
مرسل اليك كود يقوم بانشاء ملف اكسيل جديد وتسجيل البانات بداخله.
* ملحوظه هذا الكود يعتمد على ال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;

بتاريخ:
  • كاتب الموضوع

قمت باستخدام الكود التالي أخي من الموقع الموجود في الرابط حتى يتم حفظ البيانات على شكل ملف وورد ونجح الأمر لكن المشكلة أخي أنه يقوم بحفظ الصف الأول فقط ...
مع العلم أخي أن الفورم على شكل تابيولر ..
ولكنه يحفظ الصف الأول فقط ومع العلم أن الناتج أحيانا يفوق 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;

بتاريخ:

سؤال هل قمت بعمل cursor لاستدعاء البيانات الخاصه بك ام لا ؟

يمكنك الاستعانه بالكود المرسل فى حالة الاكسيل .

اذا احتجت الى المساعد فى الكود الرجاء ارسال بعض البيانات التى توضح بها قيم البيانات المستدعاه حتى اتمكن من توضيح الفكره اكثر.

بتاريخ:
  • كاتب الموضوع

أخي أنا أريد تصدير البيانات الناتجة عن عملية الاستعلام والموجودة في البلوك الذي على شكل تابيولر ..

بتاريخ:
  • كاتب الموضوع

الذي أريده فقط أن أقوم بتصدير أرقام الهويات الناتجة من عملية الاستعلام الى ملف وورد أو اكسل أو أكسس ...
فقط أرقام الهويات الناتجة ..

بتاريخ:

السلام عليكم

فى الحقيقه انا لا اعلم كيفية استدعاء البيانات الموجوده فى الشاشه . ولكن اعتقد ان الامر بسيط.

فاذا كنت قد قمت عمل زرار للاستعلام فانك سوف تكتب نفس الكود الموجود على هيئة cursor . اما اذا كنت تستعلم عن طريق الشاشه مباشرة فالامر سيكون اسهل بكثير

حيث ان ال cursor المطلوب سيكون select * from Table.

الموضوع هنا اشبه بتكوين الريبورت ليس اكثر . فعندما تحاول فتح التقارير لابد من وجود select statment حتى يقوم التقرير باستدعاء البيانات . كذلك فى الاكسيل لابد من وجود البيانات التى تحاول العثور عليها اولا على هيئة select statment .

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

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

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.