بتاريخ: 3 يونيو 200818 سنة comment_130421 السلام عليكم ......... الاخوة والاخوات الاعزاءلدي فورمز يعمل بحث عن بيانات الطلبة ...مثل اسم الطلبة او اعمارهم او اماكن سكنهم ...الفورمز يعمل مضبوط وبدون مشاكل اريد ان اعمل button يقوم بتحويل نتيجة البحث في الفورمز الى الاكسل وحسب البحث .وبـــــــــانتظار ردودكم ومساهماتكم تقديم بلاغ
بتاريخ: 4 يونيو 200818 سنة comment_130440 لسلام عليكم ..قم بتجربة هذا ال 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; وسوف يحفظ هذا الاكسل باسم ان تقوم باعطائه وفي المكان الذي انت تختاره اقرا الكود وسوف تراه سهل .. انا استخدمته وهو جدا سريع في تحويل معلومات الفورم الى اكسل .. اخبرنا بالنتائج تقديم بلاغ
بتاريخ: 4 يونيو 200818 سنة كاتب الموضوع comment_130497 شكرا لك اخي العزيز على الرد ويا ريت لو يوجد فورم يعمل على اوراكل 9i وديفلوبر 6i تقديم بلاغ
بتاريخ: 6 يونيو 200818 سنة comment_130631 السلام عليكم اخ السعدي .. اخ السعدي فقط قم بعمل ما اخبرتك به .. العملية ليست صعبة .. قم بعمل فورم عادي جدا وفي الفورم قم بوضع زر وفي داخل الزر قم بوضع when button pressed قم بوضع اخر كود .. اما في ال program unit قم بوضع الكودين الذين فالبداية وسوف يعمل ..اخبرني اذا لم تضبط وسوف احاول عمل الفورم لانه ليس لدي الآن .. تقديم بلاغ
بتاريخ: 6 يونيو 200818 سنة كاتب الموضوع comment_130634 شـــــــــــــــــــــــــكرا لك اخي العزيز aisha83 على الرد والتفاعل .......الطريقة نجحت بارك الله فيك تقديم بلاغ
بتاريخ: 7 يونيو 200818 سنة كاتب الموضوع comment_130711 عـــــــــفوا ايها الاخوة يوجد خطا يظهر لي وهو Error ora – 06502 pl/sql: numeric or value error code - 6502عند الضغط على الزر في المرة الاولى لايعمل ولكن في الثانية بعمل وتظهر لي الرسالة السابقة تقديم بلاغ
بتاريخ: 8 يونيو 200818 سنة كاتب الموضوع comment_130793 اين الردود ايها الاعزاء ؟؟؟؟؟؟؟؟؟؟؟المشكلة بسيطة ولا صعبة تم تعديل 8 يونيو 200818 سنة بواسطة alsaedi تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.