الانتقال إلى المحتوى
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

بتاريخ:



السلام عليكم ......... الاخوة والاخوات الاعزاء

لدي فورمز يعمل بحث عن بيانات الطلبة ...مثل اسم الطلبة او اعمارهم او اماكن سكنهم ...الفورمز يعمل مضبوط وبدون مشاكل

اريد ان اعمل button يقوم بتحويل نتيجة البحث في الفورمز الى الاكسل وحسب البحث .

وبـــــــــانتظار ردودكم ومساهماتكم

بتاريخ:

لسلام عليكم ..

قم بتجربة هذا ال function وقم بوضعه في ال program unit

هناك two functions

FUNCTION NEXT_ITM(itm VARCHAR2) RETURN VARCHAR2 IS 
first_itm VARCHAR2(50);
BEGIN 
RETURN NVL(Get_Item_Property(itm, NEXTITEM), first_itm); 
END;



والثاني

PROCEDURE RETURN_ITM_IN_BLK(blk VARCHAR2,
col_n OUT NUMBER) IS
cur_block VARCHAR2(50);
cur_item VARCHAR2(50);
first_itm VARCHAR2(50);
last_itm VARCHAR2(50);
item_val VARCHAR2(50);
item_n NUMBER; 

BEGIN
cur_block := :System.Cursor_Block;
last_itm := Get_Block_Property( cur_block, LAST_ITEM);
first_itm := Get_Block_Property( cur_block, FIRST_ITEM);
cur_item := first_itm;
item_n := 1;
WHILE (cur_item <> last_itm) LOOP
cur_item := next_itm(cur_item);
item_n := item_n + 1;
END LOOP;
col_n := item_n;
END;



والثالث قم بوضعه في trigger when pressed button بحيث انك عندما تضغط على هذا الزر سوف يحول معلوماتك الى الأكسل

DECLARE 
-- Declare the OLE objects 
application ole2.obj_type; 
workbooks ole2.obj_type; 
workbook ole2.obj_type; 
worksheets ole2.obj_type; 
worksheet ole2.obj_type; 
cell ole2.obj_type; 
font ole2.obj_type; 
-- Declare handles to OLE argument lists 
args ole2.list_type; 
-- variables 
i NUMBER; 
j NUMBER; 
f_item VARCHAR2(100);
l_item VARCHAR2(100);
cur_block VARCHAR2(100);
cur_item VARCHAR2(100);
cur_record VARCHAR2(100);
row_n NUMBER;
col_n NUMBER; 
tot_col NUMBER;
tot_records NUMBER;
v_value VARCHAR2(100);

BEGIN 
application := ole2.create_obj ('Excel.Application'); 
ole2.set_property (application, 'Visible', TRUE); 

-- Return object handle to the Workbooks collection 
workbooks := ole2.GET_OBJ_PROPERTY (application, 'Workbooks'); 

-- Add a new Workbook object to the Workbooks collection 
workbook := ole2.invoke_obj (workbooks,'Add'); 

-- Return object handle to the Worksheets collection for the 
-- Workbook 
worksheets := ole2.GET_OBJ_PROPERTY (workbook, 'Worksheets'); 

-- Add a new Worksheet to the Worksheets collection 
worksheet := ole2.invoke_obj (worksheets,'Add'); 
ole2.set_property (worksheet,'Name','AISHA'); 
-- Return object handle to cell A1 on the new Worksheet 


/*save the worksheet under any name 
ARGS := OLE2.CREATE_ARGLIST; 
  OLE2.ADD_ARG(ARGS, 'c:\AISHA.XLS'); 
  OLE2.INVOKE(WORKSHEET, 'SaveAs', ARGS); 
  OLE2.DESTROY_ARGLIST(ARGS);

ARGS := OLE2.CREATE_ARGLIST; 
  OLE2.ADD_ARG(ARGS, 0); 
  OLE2.INVOKE(WORKBOOK, 'Close', ARGS); 
  OLE2.DESTROY_ARGLIST(ARGS); 
*/

BREAK; 
-- if the cursor is on the button navigates to the next block
-- in our case there are only two blocks 
IF get_block_property(:SYSTEM.current_block, NEXTBLOCK) IS NULL THEN
go_block(get_block_property(:SYSTEM.current_block, NEXT_NAVIGATION_BLOCK));
END IF;
-- initialize all cur data
cur_block := :SYSTEM.current_block;
cur_item := :SYSTEM.current_item;
cur_record := :SYSTEM.cursor_record;

-- finds the number of records fetched
IF cur_record = 1 THEN
last_record;
tot_records := :SYSTEM.cursor_record;
first_record;
END IF;

-- initialize first and last item
f_item := get_block_property(cur_block, first_item);
l_item := get_block_property(cur_block, last_item);

-- gets the total fields in the block
return_itm_in_blk(cur_block, tot_col);
col_n := 1;
go_item(f_item);
-- First loop to set the headings
FOR i IN 1..tot_col LOOP
args := ole2.create_arglist; 
ole2.add_arg(args, 1); 
ole2.add_arg(args, col_n); 
cell := ole2.GET_OBJ_PROPERTY (worksheet, 'Cells', args); 
ole2.set_property (cell, 'Value', cur_item); 
ole2.set_property (cell, 'ColumnWidth', '20'); 
font := ole2.GET_OBJ_PROPERTY (cell, 'Font'); 
ole2.set_property (cell, 'FontStyle', 'Courier'); 
ole2.set_property (font, 'Size', '10'); 
ole2.set_property (font, 'Bold', True); 
ole2.set_property (font, 'colorindex','1');
ole2.destroy_arglist (args); 
FIRST_RECORD;
row_n := 2;
-- Second loop for data under heading
FOR j IN 0..tot_records LOOP
v_value := NAME_IN(cur_block || '.' ||cur_item);
args := ole2.create_arglist; 
ole2.add_arg(args, row_n); 
ole2.add_arg(args, col_n); 
cell := ole2.GET_OBJ_PROPERTY (worksheet, 'Cells', args); 
ole2.set_property (cell, 'Value', v_value); 
ole2.destroy_arglist (args); 
IF :SYSTEM.LAST_RECORD = 'FALSE' THEN
NEXT_RECORD;
row_n := row_n + 1;
END IF;
END LOOP;
cur_item := next_itm(cur_item);
col_n := col_n + 1;
END LOOP;
-- Release the OLE objects 
ole2.release_obj (cell); 
ole2.release_obj (worksheet); 
ole2.release_obj (worksheets); 
ole2.release_obj (workbook); 
ole2.release_obj (workbooks); 
ole2.release_obj (application); 

EXCEPTION WHEN OTHERS THEN 
message('Error ' ||SQLERRM||' code '||TO_CHAR(SQLCODE));Message(' '); 
END;



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

اخبرنا بالنتائج :D

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



شكرا لك اخي العزيز على الرد ويا ريت لو يوجد فورم يعمل على اوراكل 9i وديفلوبر 6i

بتاريخ:

السلام عليكم اخ السعدي ..

اخ السعدي فقط قم بعمل ما اخبرتك به .. العملية ليست صعبة .. قم بعمل فورم عادي جدا وفي الفورم قم بوضع زر وفي داخل الزر قم بوضع when button pressed قم بوضع اخر كود .. اما في ال program unit قم بوضع الكودين الذين فالبداية وسوف يعمل ..

اخبرني اذا لم تضبط وسوف احاول عمل الفورم لانه ليس لدي الآن ..

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




شـــــــــــــــــــــــــكرا لك اخي العزيز aisha83 على الرد والتفاعل .......الطريقة نجحت بارك الله فيك

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



عـــــــــفوا ايها الاخوة يوجد خطا يظهر لي وهو

Error ora – 06502 pl/sql: numeric or value error code - 6502

عند الضغط على الزر في المرة الاولى لايعمل ولكن في الثانية بعمل وتظهر لي الرسالة السابقة

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



اين الردود ايها الاعزاء ؟؟؟؟؟؟؟؟؟؟؟

المشكلة بسيطة ولا صعبة

تم تعديل بواسطة alsaedi

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

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

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

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

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

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.