读取TXT文档数据至table中的问题 |
尚未結案
|
liangzai
初階會員 發表:77 回覆:91 積分:33 註冊:2004-08-13 發送簡訊給我 |
我现在是这样写入数据的:
ST3:=TStringList.Create;
ST4:=TStringList.Create;
if(opendialog2.Execute) and (copy(opendialog2.FileName,2,2)=':\') then
begin
fname:=opendialog2.FileName;
ST3.LoadFromFile(fname);
end;
for M:= 0 to ST3.Count-1 do
begin
ST4.Delimiter := #9; // TAB 鍵
ST4.DelimitedText := ST3[M];
for N:=0 to ST4.Count-1 do
begin
self.SQLStoredProc4.Params[N].AsString:=ST4[N];
end;
self.SQLStoredProc4.ExecProc;
end;
ST4.Free;
ST3.Free; 请教一下各位前辈,假如说我的Txt文档中的数据出现错误,例如说某field中的某些内容长度超过了指定长度等情况,程序怎样处理这种情况比较好?谢谢!
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
liangzai
初階會員 發表:77 回覆:91 積分:33 註冊:2004-08-13 發送簡訊給我 |
|
liangzai
初階會員 發表:77 回覆:91 積分:33 註冊:2004-08-13 發送簡訊給我 |
请教前辈,谁能帮我一下:
我的storeprocedure是这样写的,我在想,在storeprocedure里面应该可以来判断数据的正确与否,要怎么实现呢?
( h_empno in varchar2, ----限定6个字长
h_lastname in varchar2, ----限定10个字长
h_givenname in varchar2, ----限定8个字长
h_chinesename in varchar2, ----限定8个字长
h_deptsect in varchar2, ----限定20个字长
h_descrp in varchar2) ----限定30个字长
IS
BEGIN
if h_empno
insert into hr_master (empno,lastname,givenname,chinesename,deptsect,descrp)
values(h_empno,h_lastname,h_givenname,h_chinesename,h_deptsect,h_descrp);
END wbs_hr_upload;
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
首先,這种判斷衹能是一种簡單性的內容分析,更多的還要靠人的約定(即對程序來講,提供的文件可以認為是滿足程序需要的)。 判斷也衹能做以下步驟:
1、文件是否存在?
2、文件是否有內容?
3、文件中每一行是否有內容?
4、每一行是否包含6個字段內容?
5、每個字段內容是否滿足長度限定? 如果不滿足1、2,直接退出處理;如果不滿足3-5,則直接跳到下一行處理。 在哪里判斷都是可以的,
是放在程序中判斷還是放在存儲過程中判斷,主要是看性能需求,以及實現起來的方便性。顯然,這种判斷用程序實現更簡單。 ----------------------------
於Delphi K.Top之上
博采眾家之長, 奉獻綿薄之力
---------------------------
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
liangzai
初階會員 發表:77 回覆:91 積分:33 註冊:2004-08-13 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog2.Execute then ExecStoredProc(OpenDialog2.FileName); end; procedure TForm1.ExecStoredProc(FileName: string); var ST3, ST4: TStrings; M, N: integer; begin if not FileExists(FileName) then begin Application.MessageBox(PChar('指定的文件''' FileName '''不存在'), '錯誤', 16); Exit; end; ST3 := TStringList.Create; ST4 := TStringList.Create; try ST3.LoadFromFile(FileName); if Trim(ST3.Text) = '' then Application.MessageBox('指定的文件沒有內容', '錯誤', 16) else for M := 0 to ST3.Count - 1 do begin if Trim(ST3.Strings[M]) = '' then Continue; ST4.Delimiter := #9; // TAB 鍵 ST4.DelimitedText := ST3.Strings[M]; if ST4.Count <> 6 then Continue; if Length(ST4.Strings[0]) > 6 then Continue; if Length(ST4.Strings[1]) > 10 then Continue; if Length(ST4.Strings[2]) > 8 then Continue; if Length(ST4.Strings[3]) > 8 then Continue; if Length(ST4.Strings[4]) > 20 then Continue; if Length(ST4.Strings[5]) > 30 then Continue; for N := 0 to 5 do SQLStoredProc4.Params[N].AsString := ST4[N]; SQLStoredProc4.ExecProc; end; finally ST3.Free; ST4.Free; end; end;---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 ---------------------------
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |