بتاريخ: 14 مارس 200620 سنة comment_62991 السلام عليكم و رحمة الله و بركاته كنت اسأل عن كيفية ان اضع button بالضغط عليه يخرجى البيانات الموجوده داخل ال form الى ملف excel ارجو الافاده من الاخوه الافاضل و عما اذا كان من الممكن عمل نفس الموضوع على report ام لا.. و جزاكم الله خيرا .. و اعانكم على منفعة الاخرين تقديم بلاغ
بتاريخ: 14 مارس 200620 سنة comment_63040 يوجد مشاركات كثيره فى هذا الموضوع بالمنتدى .. استخدم خاصية البحث لتجد اكثر مما تريد اليك احدى هذه المشاركات سوف أعرض لك مثال معمول ال forms كيفية نقل البيانات من ORACLE إلى Excel استعلام DECLARE OUTFILE TEXT_IO.FILE_TYPE; BEGIN OUTFILE := TEXT_IO.FOPEN('C:\TEST.CSV','W'); FOR R IN (SELECT EMP_NO, EMP_A_NAME, EMP_ID FROM EMP "أنت تحدد الجدول الذي تريده" LOOP TEXT_IO.PUT_LINE(OUTFILE,R.EMP_NO||';'||R.EMP_A_NAME||';'||R.EMP_ID); END LOOP; TEXT_IO.FCLOSE(OUTFILE); END; طبعا يمكنك عمل العكس ولكن أولا عليك حفظ الملف بامتداد .csv (حيث يكون الفاصل بين حقل وآخر فاصلة منقوطه) ومن ثم تنفيذ الكود التالي : كود DECLARE LINEBUF VARCHAR2(1000); OUT_FILE TEXT_IO.FILE_TYPE; V_COLOUMN_1 NUMBER(9); --طبعا بحسب عدد الحقول في جدولك ونوعها V_COLOUMN_2 NUMBER(3); V_COLOUMN_3 NUMBER(3); V_COLOUMN_4 VARCHAR2(3); BEGIN begin OUT_file := TEXT_IO.FOpen('C:\TEST.CSV','R'); Exception when Others then Message('Error in Reading from file C:\TEST.CSV'); RETURN; end; --********** LOOP BEGIN TEXT_IO.GET_LINE(OUT_FILE,LINEBUF); EXCEPTION WHEN NO_DATA_FOUND THEN EXIT; END; LINEBUF := LTRIM(LINEBUF); V_COLOUMN_1 := SUBSTR(LINEBUF,1,9); V_COLOUMN_2 := SUBSTR(LINEBUF,INSTR(LINEBUF,';',1,1)+1, INSTR(LINEBUF,';',1,2)-INSTR(LINEBUF,';',1,1)-1 ); V_COLOUMN_3 := SUBSTR(LINEBUF,INSTR(LINEBUF,';',1,2)+1, INSTR(LINEBUF,';',1,3)-INSTR(LINEBUF,';',1,2)-1 ); V_COLOUMN_4 := SUBSTR(LINEBUF,INSTR(LINEBUF,';',1,3)+1); --********************** INSERT INTO TEST(COLOUMN_1,COLOUMN_2,COLOUMN_3,COLOUMN_4) VALUES(V_COLOUMN_1,V_COLOUMN_2,V_COLOUMN_3,V_COLOUMN_4); --********************** END LOOP; COMMIT; TEXT_IO.FClose(out_file); SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'DEFAULT'); EXCEPTION WHEN OTHERS THEN MESSAGE(SQLERRM); SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'DEFAULT'); TEXT_IO.FClose(out_file); END; فيما يخص التقرير يمكنك استخراج التقرير على شكل html وعرضه فى المتصفحثم افتح برنامج ال excel واعمل استيراد لهذا الملف وتوجد طرق اخرى تم عرضها بالمنتدىواليك ايضا form من مشاركة سابقه ora_exl.zip تم تعديل 14 مارس 200620 سنة بواسطة Amgad تقديم بلاغ
بتاريخ: 15 مارس 200620 سنة كاتب الموضوع comment_63072 صراحه يا اخ amgad انا مش عارف اقولك ايه.. جزاك الله عنى خير الجزاء.. و افاد بك كل المسلمينجزاك الله خيرا لاستجابتك و للافاده العظيمه التى وجدتها منك...وفقك الله و الجميع ..... تقديم بلاغ
بتاريخ: 19 مارس 200619 سنة كاتب الموضوع comment_63514 اخى انا استخدمت هذا الكود لاظهار عمودين من الجدول و بالفعل اضهرهما و لكن لم يهر الا اول صف فيهما بس..... اخى هذا الكو الذى استعملته على زرار كما نصحتنى و ارجو ان نعرف اين الخلل [/code]DECLARE oo varchar(20); ll varchar(20); appid pls_integer; convid pls_integer; nm number := 1; fm number := 1; rowcol varchar(20); rowcol2 varchar(20); cursor mm is select job_id, job_title from jobs; BEGIN appid := dde.app_begin('C:\Program Files\Microsoft Office\Office10\excel c:\abc.xls', dde.app_mode_maximized); convid := dde.initiate('EXCEL', 'c:\abc.xls'); open mm; loop fetch mm into oo, ll; exit when mm%notfound; rowcol := 'R' || nm || 'C1'; rowcol2 := 'R' || fm || 'C2'; dde.poke(convid, rowcol, oo, dde.cf_text, 1000); dde.poke(convid, rowcol2, ll, dde.cf_text, 1000); nm := nm + 1; fm := fm + 1; end loop; DDE.EXECUTE(convid, '[sAVE]', 99999);end; تقديم بلاغ
بتاريخ: 19 مارس 200619 سنة كاتب الموضوع comment_63515 DECLARE oo varchar(20); ll varchar(20); appid pls_integer; convid pls_integer; nm number := 1; fm number := 1; rowcol varchar(20); rowcol2 varchar(20); cursor mm is select job_id, job_title from jobs; BEGIN appid := dde.app_begin('C:\Program Files\Microsoft Office\Office10\excel c:\abc.xls', dde.app_mode_maximized); convid := dde.initiate('EXCEL', 'c:\abc.xls'); open mm; loop fetch mm into oo, ll; exit when mm%notfound; rowcol := 'R' || nm || 'C1'; rowcol2 := 'R' || fm || 'C2'; dde.poke(convid, rowcol, oo, dde.cf_text, 1000); dde.poke(convid, rowcol2, ll, dde.cf_text, 1000); nm := nm + 1; fm := fm + 1; end loop; DDE.EXECUTE(convid, '[sAVE]', 99999);end; تقديم بلاغ
بتاريخ: 19 مارس 200619 سنة comment_63539 بارك الله فيك و جعلك عونا لكل الأوراكلجية ..Oracle ITself تقديم بلاغ
بتاريخ: 19 مارس 200619 سنة كاتب الموضوع comment_63541 هذا الكود كامل و يظهر كل الاعمده و الصفوف انا جربته DECLARE j_id varchar(200); j_title varchar(200); j_minsal varchar(200); j_maxsal varchar(200); j_minsal_s varchar(200); j_maxsal_s varchar(200); appid pls_integer; convid pls_integer; j1 number := 1; j2 number := 1; j3 number := 1; j4 number := 1; j5 number := 1; j6 number := 1; rowcol varchar(200); rowcol2 varchar(200); rowcol3 varchar(200); rowcol4 varchar(200); rowcol5 varchar(200); rowcol6 varchar(200); cursor mm is select job_id ,job_title, min_salary, max_salary, sum(min_salary) , sum(max_salary) from jobs; BEGIN appid := dde.app_begin('C:\Program Files\Microsoft Office\Office10\excel c:\abc.xls', dde.app_mode_maximized); convid := dde.initiate('EXCEL', 'c:\abc.xls'); open mm; loop fetch mm into j_id, j_title , j_minsal, j_maxsal, j_minsal_s,j_maxsal_s; exit when mm%notfound; rowcol := 'R' || j1 || 'C1'; rowcol2 := 'R' || j2 || 'C2'; rowcol3 := 'R' || j3 || 'C3'; rowcol4 := 'R' || j4 || 'C4'; rowcol5 := 'R' || j5 || 'C5'; rowcol5 := 'R' || j6 || 'C6'; dde.poke(convid, rowcol, j_id, dde.cf_text, 1000); dde.poke(convid, rowcol2, j_title , dde.cf_text, 1000); dde.poke(convid, rowcol3, j_minsal , dde.cf_text, 1000); dde.poke(convid, rowcol4, j_maxsal , dde.cf_text, 1000); dde.poke(convid, rowcol5, j_minsal_s , dde.cf_text, 1000); dde.poke(convid, rowcol6, j_maxsal_s , dde.cf_text, 1000); j1 := j1 + 1; j2 := j2 + 1; j3 := j3 + 1; j4 := j4 + 1; j5 := j5 + 1; j6 := j6 + 1; end loop; j5 := j5 + 1; j6 := j6 + 1; DDE.EXECUTE(convid, '[sAVE]', 99999); end; تقديم بلاغ
بتاريخ: 7 مايو 200619 سنة comment_68498 هنالك بكج خاص من الاوراكل يدعى DDEومن خلاله يمكن التعامل مع الاكسل مباشرة وسأرفق ملف يتضمن مثال على SCOTT CONVERT_TO_EXCEL.txt تقديم بلاغ
بتاريخ: 7 مايو 200619 سنة comment_68532 الأخ / gentleجزاك الله خيرا تم تعديل 7 مايو 200619 سنة بواسطة Amgad تقديم بلاغ
بتاريخ: 8 مايو 200619 سنة comment_68561 جزاكم الله جميعاً خيرأعتقد ان ايضا ممكن ان نعمل هذا BUTTON فى REPORT. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.