線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1420
推到 Plurk!
推到 Facebook!

利用delphi將資料表內容轉存成html檔案的相關問題

尚未結案
funging
一般會員


發表:13
回覆:41
積分:10
註冊:2002-10-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-07 19:17:45 IP:211.74.xxx.xxx 未訂閱
各位好,我最近在寫一個程式,是將資料表內容,利用sql語法(mysql)查詢出來,再轉存成html檔,但是裡面有一部分的資料,是利用迴圈跑出來的,就因為資料的不同,所以每個轉出來的檔案,都會出現不必要的html內碼,所以想請各位幫忙解決一下!謝謝!^^    以下是我的程式: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>新網頁1</title> </head> <body>
procedure TfmDbset_History.sb_TableToHtmlClick(Sender: TObject);
var
// tablename:string;//資料表名稱;
 HtmlFile :textfile;
 filename :string;
 filename1:string;
 a        : array[0..9999] of string;//存已填寫問卷之課程;
 b        : array[0..9999] of string;//存已填寫問卷之建議題;
 c        : array[0..9999] of string;//存已填寫問卷之問答題;
 n        :string;//記錄第幾個版本;
 m        :string;//取月;
 y        :string;//取年;
 y2       :string;//年度;
 y3       :string;//年度<100年則前面加0如091,為了存檔用;
 sem      :string;//學期;
 sem1     :string;
 percent  :string;
 i        :integer;
 j        :integer;// 計算有幾個課程要轉存;
 x        :integer;//共幾個檔案轉存成功;
 crs_type :string;//選課型態:選修、必修、選必;
 ql_no    :integer;//question_ql的問答題有幾題
 d        :integer;
begin     x:=0;
 j:=0;
 //i:=0;
 sem:='';
 sem1:='';
 y:='';
 y2:='';
 y3:='';
 percent:='';
 crs_type:='';    if MessageDlg('請確定是否要轉存成歷史檔?',mtInformation, [mbYes, mbNo],0)=mrYes then
 begin     pb_History.Position:=pb_History.min;     if rb_crs.Checked=true then
 begin                 //編輯檔名;
  with qr_NTIS do
   begin
   close;
   sql.Clear;
   //sql.Add('select C.CRS_ID from CLASS_QUES Q ,COURSE C WHERE Q.CRS_ID=C.CRS_ID AND Q.QUES_STATE=''1'' GROUP BY C.CRS_ID');
   SQL.ADD('SELECT A.CRS_ID FROM QUES_CRS_STA A,QUESTION Q WHERE A.QUES_ID = Q.QUES_ID AND Q.QUES_TYPE=''S'' GROUP BY A.CRS_ID');
   Prepare;
   open
   end;       //將已填寫的課程名稱放入a[i];            j:=qr_NTIS.RecordCount;
        i:=0;
        with qr_NTIS do
                 begin
                 first;
                  while not eof do
                   begin
                   a[i]:= qr_NTIS.Fields[0].AsString;
               //    showmessage(qr_NTIS.Fields[0].AsString);
                   next;
                   i:=i 1;
                   end;
                 end;      pb_History.Position:=pb_History.min;    for i:=0 to j-1 do   //有幾個課程就產生幾個檔案;    
 begin              with qr_NTIS do
      begin
        close;
        sql.clear;
       sql.add('select efcrs.CRS_ID,efcrs.TEA_ID,efcrs.QUES_ID,efcrs.RESULT,');
        sql.add('efcrs.ANS_RATE,efcrs.ANS_SUM,efcrs.STU_SUM,crssta.QS_NO,crssta.RESULT,crssta.QS_SUM1,crssta.QS_SUM2,');
        sql.add('crssta.QS_SUM3,crssta.QS_SUM4,crssta.QS_SUM5,quqs.QS_SEL1,quqs.QS_SEL2,quqs.QS_SEL3,quqs.QS_SEL4,');
        sql.add('quqs.QS_SEL5,quql.QL_TEXT,crsde.SUB_CODE,course.CRS_TYPE,course.CRS_NAME,quqs.QS_WT1, quqs.QS_WT2, quqs.QS_WT3,');
        sql.add('quqs.QS_WT4, quqs.QS_WT5,teacher.TEA_CNAME,depar.DEP_LCNAME,qu.QUES_NAME');
        sql.add('from QUES_CRS_STA crssta, QUESTION qu,QUESTION_QS quqs,QUESTION_QL quql, TEACHER teacher, ');
        sql.add('COURSE course, COURSE_DEP crsde,DEPARTMENT depar, EFFECT_CRS efcrs');
        sql.add('where crssta.QUES_ID = qu.QUES_ID and qu.QUES_TYPE = ''S'' and crssta.QUES_ID = quqs.QUES_ID ');
        sql.add('and crssta.QUES_ID=quql.QUES_ID and quql.QL_TYPE=''0'' and quql.QL_NO= crssta.QS_NO and');
        sql.add('crssta.TEA_ID = teacher.TEA_ID and crssta.CRS_ID = course.CRS_ID and crssta.CRS_ID = crsde.CRS_ID and ');
        sql.add('crsde.MDEP = ''1'' and crsde.DEP_ID = depar.DEP_ID and crssta.CRS_ID = efcrs.CRS_ID ');
        sql.add('and crssta.TEA_ID = efcrs.TEA_ID and crssta.QUES_ID = efcrs.QUES_ID and crssta.CRS_ID=''1404''');            Prepare;
      Open;
      end;         //計算學年度與學期;
     try
           m:= copy(qr_NTIS.Fields[2].AsString,12,2);
           y:= copy(qr_NTIS.Fields[2].AsString,8,4);
            if ((strtoint(m)>2) and (strtoint(m)<7)) then
                begin
                y2:=inttostr(strtoint(y)-1911);
                sem:='二';
                sem1:='b';
                end
            else
                    begin
                 y2:=inttostr(strtoint(y)-1912);
                     sem:='一';
                 sem1:='a';
            end;//else                  if strtoint(y2)<100 then
                 begin
                 y3:='0' y2;
                 end
                 else
                 y3:=y2;
     except
          showmessage('無法取得學年度與學期');
     end;                percent:=inttostr(qr_NTIS.fields[4].Value * 1000/10);
           //@091av01_1402_2002002_cyut20020107_
           filename:='@' y3 sem1 'v01_' qr_NTIS.Fields[0].AsString '_' qr_NTIS.Fields[1].AsString '_' qr_NTIS.Fields[2].AsString;
           filename1:=path_History '@' y3 sem1 'v01_' qr_NTIS.Fields[0].AsString '_' qr_NTIS.Fields[1].AsString '_' qr_NTIS.Fields[2].AsString '.html';
           while  FileExists(filename1) do begin
              n:='0' inttostr(strtoint(copy(filename,7,2)) 1);
              if strtoint(n)>9 then begin
                n:=inttostr(strtoint(copy(filename,7,2)) 1);
              end;
              filename:='@' y3 sem1 'v' n '_' qr_NTIS.Fields[0].AsString '_' qr_NTIS.Fields[1].AsString '_' qr_NTIS.Fields[2].AsString;
              filename1:=path_History '@' y3 sem1 'v' n '_' qr_NTIS.Fields[0].AsString '_' qr_NTIS.Fields[1].AsString '_' qr_NTIS.Fields[2].AsString '.html';
           end;               IF qr_NTIS.Fields[24].TEXT='1' THEN crs_type:='必修'
           ELSE IF qr_NTIS.Fields[24].TEXT='2' THEN crs_type:='選修'
           ELSE crs_type :='選擇必修';               //用%               AssignFile(HtmlFile,filename1);
            Rewrite(HtmlFile);
            Writeln(HtmlFile,'<html>');
            Writeln(HtmlFile,'<head>');
            Writeln(HtmlFile,'<title> 大 學 教 學 意 見 課 程 問 卷 彙 總 表</title>');
            Writeln(HtmlFile,'</head>');
            Writeln(HtmlFile,'<body>');
            Writeln(HtmlFile,'');
            Writeln(HtmlFile,'');
            Writeln(HtmlFile,'');
            Writeln(HtmlFile,'');
            Writeln(HtmlFile,'
'); Writeln(HtmlFile,'



'); Writeln(HtmlFile,' 大 學 教 學 意 見__課 程 問 卷 彙 總 表
'); Writeln(HtmlFile,'

'); Writeln(HtmlFile,'
' y2 '學年度 第' sem '學期
'); Writeln(HtmlFile,'
'); // Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); //center //42 526 79 38 57 57 95 59 合953 Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); with qr_NTIS do begin first; while not eof do begin Writeln(HtmlFile,'');//align="center" Writeln(HtmlFile,''); //

Writeln(HtmlFile,''); Writeln(HtmlFile,''); Writeln(HtmlFile,''); Writeln(HtmlFile,''); Writeln(HtmlFile,''); Writeln(HtmlFile,''); Next; end; end; Writeln(HtmlFile,'
'); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,' '); Writeln(HtmlFile,'
問卷名稱: ' qr_NTIS.fields[30].asstring '課程名稱:' qr_NTIS.fields[22].asstring '開課系級:' qr_NTIS.fields[29].asstring '
教師姓名:' qr_NTIS.fields[28].asstring ' 課程代碼: ' qr_NTIS.Fields[0].AsString ' 應填人數: ' qr_NTIS.fields[6].asstring '
開課別:' crs_type ' 實填人數: ' qr_NTIS.fields[5].asstring '
'); Writeln(HtmlFile,'
題號 題目內容' qr_NTIS.fields[14].asstring '' qr_NTIS.fields[15].asstring '' qr_NTIS.fields[16].asstring '' qr_NTIS.fields[17].asstring '' qr_NTIS.fields[18].asstring '平均值
' qr_NTIS.fields[7].asstring '' qr_NTIS.fields[19].asstring '

' qr_NTIS.fields[9].asstring '' qr_NTIS.fields[10].asstring '' qr_NTIS.fields[11].asstring '' qr_NTIS.fields[12].asstring '' qr_NTIS.fields[13].asstring '' copy(qr_NTIS.fields[8].asstring,1,4) '
'); Writeln(HtmlFile,'
'); Writeln(HtmlFile,''); Writeln(HtmlFile,''); Writeln(HtmlFile,'
填答率:' percent '%總平均:' copy(qr_NTIS.Fields[3].asstring,1,4) '
</body></html>'); x:=x 1; pb_History.Position:=pb_History.Position 1; end; //if pb_History.Position:=pb_History.max; flbHistoryFile.update; showmessage('轉存成功,共' inttostr(x) '個檔案!'); pb_History.Position:=pb_History.min; end //rb_crs
</body> </html>
funging
一般會員


發表:13
回覆:41
積分:10
註冊:2002-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-07 19:33:08 IP:211.74.xxx.xxx 未訂閱
不好意思,不曉得為何,我把轉存html的語法po上來,會變成上面的情況!^^||
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-07 21:07:19 IP:192.168.xxx.xxx 未訂閱
引言: 不好意思,不曉得為何,我把轉存html的語法po上來,會變成上面的情況!^^||
請將您的程式原始檔上傳至網友問題檔案上傳區 我來幫您看看 PS:多位版主要我來回答此問題的,不是站長見色忘友喔! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-07 21:10:18 IP:211.74.xxx.xxx 未訂閱
引言: 不好意思,不曉得為何,我把轉存html的語法po上來,會變成上面的情況!^^||
你有貼在[code][code]區段嗎?
------
星期一,二...無窮迴圈@@
funging
一般會員


發表:13
回覆:41
積分:10
註冊:2002-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-07 21:43:35 IP:211.74.xxx.xxx 未訂閱
不好意思,我想將我的程式存成.txt上傳,但是系統說error ,不曉得是怎麼會事?呵~不好意思,怎麼覺得自已有點笨呢!^^|| ps.我有用 [code]但是裡面的html語法就是不會出現!^^||
funging
一般會員


發表:13
回覆:41
積分:10
註冊:2002-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-07 21:50:03 IP:211.74.xxx.xxx 未訂閱
抱歉,原來有成功!只是不曉得系統說我錯,以為沒傳成功!真不好意思,造成大家的困擾! 嗯~~因為我的後端程式有13mb之大,所以僅能把程式碼copy成文字檔上傳。假如還有什麼我需要提供的資料,請盡量說!謝謝!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-07 22:20:02 IP:218.16.xxx.xxx 未訂閱
不用這麼客氣啦,站長大哥一定會盡力幫你的。    不過記住,他不是見色忘友喔!
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-07 22:28:33 IP:192.168.xxx.xxx 未訂閱
看到程式了, 可否再將網頁的結果原始碼(HTML結果) 檔案壓縮後上傳? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
funging
一般會員


發表:13
回覆:41
積分:10
註冊:2002-10-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-07 23:03:56 IP:211.74.xxx.xxx 未訂閱
  with qr_NTIS do
      begin
        close;
        sql.clear;
       sql.add('select efcrs.CRS_ID,efcrs.TEA_ID,efcrs.QUES_ID,efcrs.RESULT,');
        sql.add('efcrs.ANS_RATE,efcrs.ANS_SUM,efcrs.STU_SUM,crssta.QS_NO,crssta.RESULT,crssta.QS_SUM1,crssta.QS_SUM2,');
        sql.add('crssta.QS_SUM3,crssta.QS_SUM4,crssta.QS_SUM5,quqs.QS_SEL1,quqs.QS_SEL2,quqs.QS_SEL3,quqs.QS_SEL4,');
        sql.add('quqs.QS_SEL5,quql.QL_TEXT,crsde.SUB_CODE,course.CRS_TYPE,course.CRS_NAME,quqs.QS_WT1, quqs.QS_WT2, quqs.QS_WT3,');
        sql.add('quqs.QS_WT4, quqs.QS_WT5,teacher.TEA_CNAME,depar.DEP_LCNAME,qu.QUES_NAME');
        sql.add('from QUES_CRS_STA crssta, QUESTION qu,QUESTION_QS quqs,QUESTION_QL quql, TEACHER teacher, ');
        sql.add('COURSE course, COURSE_DEP crsde,DEPARTMENT depar, EFFECT_CRS efcrs');
        sql.add('where crssta.QUES_ID = qu.QUES_ID and qu.QUES_TYPE = ''S'' and crssta.QUES_ID = quqs.QUES_ID ');
        sql.add('and crssta.QUES_ID=quql.QUES_ID and quql.QL_TYPE=''0'' and quql.QL_NO= crssta.QS_NO and');
        sql.add('crssta.TEA_ID = teacher.TEA_ID and crssta.CRS_ID = course.CRS_ID and crssta.CRS_ID = crsde.CRS_ID and ');
        sql.add('crsde.MDEP = ''1'' and crsde.DEP_ID = depar.DEP_ID and crssta.CRS_ID = efcrs.CRS_ID ');
        sql.add('and crssta.TEA_ID = efcrs.TEA_ID and crssta.QUES_ID = efcrs.QUES_ID and crssta.CRS_ID=''1402''');            Prepare;
      Open;
      end;
不好意思哦!程式中的1402需改為''' 加 a[i] 加 ''' 才對!^^|| 這段sql是由我先前sql 語法select出來的課號,再利用此課號找出我需要的資料!^^ ps.我已將資料上傳!請您看一下!謝謝!
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-08 08:06:22 IP:192.168.xxx.xxx 未訂閱
可能找到您的原因了, 您忘了加CloseFile(HtmlFile), 所以造成最後Buffer上的幾個Byte無法輸出至Html檔中, <font s 後面就不見了 若您縮小字體後的HTML則存檔至 <font size="2">總平均:4.5 </font> 後面就不見,但IE還可以顯示出來 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
funging
一般會員


發表:13
回覆:41
積分:10
註冊:2002-10-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-08 11:47:45 IP:211.74.xxx.xxx 未訂閱
站長大人,真是謝謝你!目前內碼不會出現了! 嗯~~小妹太粗心了,竟然錯在這種錯誤上!真素對不住, 也很感謝你的幫忙!幫小妹一個大忙,真的太謝謝你了! 有相關問題的話!再請你多多指教囉!謝謝!
系統時間:2024-05-20 9:44:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!