關於迴圈問題 |
答題得分者是:老大仔
|
sssp116
一般會員 發表:23 回覆:27 積分:10 註冊:2008-12-05 發送簡訊給我 |
各位大大好,小弟目前有分文字檔資料想轉進Excel及資料庫
他有一個規則如下: =============================== 編號:123 名稱:456 使用者:789 單位:321 價格:654 經銷價:987 庫存:231 圖表:564 達成率:897 =============================== 他就是每三行所有資料這樣子,總資料大概有不下上千筆 想請問的是如果判斷讓他進入迴圈每三行三行的擷取資料並放入資料庫的欄位中呢?! 因為我的欄位就是一行而已,希望他變成下面這樣 =========================================== 編號 名稱 使用者 單位 價格 經銷價 庫存 圖表 達成率 123 456 789 321 654 987 231 564 897 =========================================== 編輯記錄
sssp116 重新編輯於 2010-07-05 11:25:13, 註解 無‧
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
可以在先載入TMemo
然後在每行讀取時 再判斷該行是不是可以被三整除 假如可以的話 就代表往下一筆資料是第二筆資料~ ===================引 用 sssp116 文 章=================== 各位大大好,小弟目前有分文字檔資料想轉進Excel及資料庫 他有一個規則如下: =============================== 編號:123 名稱:456 使用者:789 單位:321 價格:654 經銷價:987 庫存:231 圖表:564 達成率:897 =============================== 他就是每三行所有資料這樣子,總資料大概有不下上千筆 想請問的是如果判斷讓他進入迴圈每三行三行的擷取資料並放入資料庫的欄位中呢?! 因為我的欄位就是一行而已,希望他變成下面這樣 =========================================== 編號? 名稱? 使用者? 單位? 價格? 經銷價? 庫存? 圖表? 達成率 123?? 456?? 789 ?? 321?? 654?? 987 ?? 231?? 564?? 897 =========================================== |
sssp116
一般會員 發表:23 回覆:27 積分:10 註冊:2008-12-05 發送簡訊給我 |
不好意思小弟愚昧,以下是我真實的程式碼
真正的資料應該是五行為一筆才對 我的判斷式應該是要寫在一開始if copy(str,1,8,):='物料代號'; 之後這邊吧?! [code delphi] procedure TForm1.Bit_t5Click(Sender: TObject); var TF10:TEXTFILE; str,sum,model,st,shape,wd:STRING; i,j:integer; begin bit_t5.Enabled:=false; bit_s5.Enabled:=true; s2.Enabled:= true; adoquery5.Open; cds5.Open; memo5.Lines.Clear; assignFile(TF10,'C:\TF9.txt'); reset(TF10); while not eof(TF10) do begin cds5.Append; cds5.Edit; readln(TF10,str); if trim(str) <> '' then begin Memo5.Lines.Add(str); if copy(str,1,8)='物料代號' then begin sum:=copy(str,11,10); model:=copy(str,43,40); end; if copy(str,1,8)='品名規格' then begin st:=copy(str,11,20); shape:=copy(str,43,5); wd:=copy(str,68,9); if copy(wd,4,1)=',' then begin wd:=copy(wd,1,3) copy(wd,5,5); end; cds5['pqc_sell']:=strtofloat(trim(wd)); end; if copy(str,1,8)='單 位' then begin cds5['pqc_unit']:=copy(str,11,4); cds5['pqc_cate']:=copy(str,43,5); wd:=copy(str,68,9); if copy(wd,4,1)=',' then begin wd:=copy(wd,1,3) copy(wd,5,5); end; cds5['pqc_pri']:=strtofloat(trim(wd)); end; if copy(str,1,8)='工程圖號' then begin cds5['pqc_pnm']:=copy(str,11,4); wd:=copy(str,43,9); if copy(wd,4,1)=',' then begin wd:=copy(wd,1,3) copy(wd,5,5); end; cds5['pqc_safe']:=strtofloat(trim(wd)); wd:=copy(str,68,9); if copy(wd,4,1)=',' then begin wd:=copy(wd,1,3) copy(wd,5,5); end; cds5['pqc_fact']:=strtofloat(trim(wd)); end; if copy(str,1,8)='備 註' then begin cds5['pqc_rem']:=copy(str,11,20); wd:=copy(str,43,9); if copy(wd,4,1)=',' then begin wd:=copy(wd,1,3) copy(wd,5,5); end; cds5['pqc_high']:=strtofloat(trim(wd)); wd:=copy(str,68,9); if copy(wd,4,1)=',' then begin wd:=copy(wd,1,3) copy(wd,5,5); end; cds5['pqc_nat']:=strtofloat(trim(wd)); end; end; cds5['pqc_sum']:=sum; cds5['pqc_model']:=model; cds5['pqc_st']:=st; cds5['pqc_shape']:=shape; end; closefile(TF10); end;請在此區域輸入程式碼 [/code] ===================引 用 老大仔 文 章=================== 可以在先載入TMemo 然後在每行讀取時 再判斷該行是不是可以被三整除 假如可以的話 就代表往下一筆資料是第二筆資料~ ===================引 用 sssp116 文 章=================== 各位大大好,小弟目前有分文字檔資料想轉進Excel及資料庫 他有一個規則如下: =============================== 編號:123 名稱:456 使用者:789 單位:321 價格:654 經銷價:987 庫存:231 圖表:564 達成率:897 =============================== 他就是每三行所有資料這樣子,總資料大概有不下上千筆 想請問的是如果判斷讓他進入迴圈每三行三行的擷取資料並放入資料庫的欄位中呢?! 因為我的欄位就是一行而已,希望他變成下面這樣 =========================================== 編號? 名稱? 使用者? 單位? 價格? 經銷價? 庫存? 圖表? 達成率 123?? 456?? 789 ?? 321?? 654?? 987 ?? 231?? 564?? 897 =========================================== |
sssp116
一般會員 發表:23 回覆:27 積分:10 註冊:2008-12-05 發送簡訊給我 |
|
sssp116
一般會員 發表:23 回覆:27 積分:10 註冊:2008-12-05 發送簡訊給我 |
不好意思小弟試出來了,這裡貼上程式碼給大家參考一下囉
也非常感謝您不吝賜教。 [code delphi] procedure TForm1.Bit_t5Click(Sender: TObject); var TF10:TEXTFILE; str,sum,model,st,shape,unin,cate,pnm,rem:STRING; s,q,w,e,r,t:STRING; i:integer; begin i:=0; bit_t5.Enabled:=false; bit_s5.Enabled:=true; s2.Enabled:= true; adoquery5.Open; cds5.Open; memo5.Lines.Clear; assignFile(TF10,'C:\TF9.txt'); reset(TF10); while not eof(TF10) do begin i:=i 1; cds5.Append; cds5.Edit; readln(TF10,str); if trim(str) <> '' then begin Memo5.Lines.Add(str); if copy(str,1,8)='物料代號' then begin sum:=copy(str,11,10); model:=copy(str,43,40); end; if copy(str,1,8)='品名規格' then begin st:=copy(str,11,20); shape:=copy(str,43,5); s:=copy(str,68,9); if copy(s,4,1)=',' then begin s:=copy(s,1,3) copy(s,5,5); end; end; if copy(str,1,8)='單 位' then begin unin:=copy(str,11,4); cate:=copy(str,43,5); q:=copy(str,68,9); if copy(q,4,1)=',' then begin q:=copy(q,1,3) copy(q,5,5); end; end; if copy(str,1,8)='工程圖號' then begin pnm:=copy(str,11,20); w:=copy(str,43,9); if copy(w,4,1)=',' then begin w:=copy(w,1,3) copy(w,5,5); end; e:=copy(str,68,9); if copy(e,4,1)=',' then begin e:=copy(e,1,3) copy(e,5,5); end; end; if copy(str,1,8)='備 註' then begin rem:=copy(str,11,20); r:=copy(str,43,9); if copy(r,4,1)=',' then begin r:=copy(r,1,3) copy(r,5,5); end; t:=copy(str,68,9); if copy(t,4,1)=',' then begin t:=copy(t,1,3) copy(t,5,5); end; end; end; if i=5 then begin cds5['pqc_sum']:=sum; cds5['pqc_model']:=model; cds5['pqc_st']:=st; cds5['pqc_shape']:=shape; cds5['pqc_unit']:=unin; cds5['pqc_cate']:=cate; cds5['pqc_pnm']:=trim(pnm); cds5['pqc_rem']:=rem; cds5['pqc_sell']:=strtofloat(trim(s)); cds5['pqc_pri']:=strtofloat(trim(q)); cds5['pqc_safe']:=strtofloat(trim(w)); cds5['pqc_fact']:=strtofloat(trim(e)); cds5['pqc_high']:=strtofloat(trim(r)); cds5['pqc_nat']:=strtofloat(trim(t)); i:=0; end; end; closefile(TF10); end; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |