怎样把用","号分割的文本导入Paradox表Table中?
如:
姓名,级别,工龄,赔缴,所得额,调增项目,调增额,扣除项目,扣除额,应税所得额,税率,速算扣除数,个人所得税
lll,科员,5-10 ,否,1450,0+0+0,0,800+102+70+0+0+0,972, 478.00,5%,0, 23.90
我的程序如下
procedure TForm1.Button1Click(Sender: TObject);
var
i,j: integer;
TextFileVar: TextFile;
FileN, temp: string;
StrLen, num: Integer;
begin
FileN := 'C:\My Documents\avglist.txt';
if FileN = '' then exit;
AssignFile(TextFileVar, FileN);
Reset(TextFileVar);
with Query1 do
begin
close;
UnPrepare;
sql.Clear;
sql.Add('select * from sj');
Prepare;
open;
end;
while not SeekEof(TextFileVar) do
begin
Readln(TextFileVar, temp);
//得到标记数
StrLen := Length(temp);
Num := 0;
for i := 1 to StrLen do
if Copy(temp, i, 1) = ',' then
Num := Num + 1; if pos(',', temp) > 0 then
begin
Query1.Append;
for j := 0 to Num - 1 do
begin
Query1.Fields[j].AsString := copy(Temp, 1, pos(',', temp) - 1); //得到字段内容
temp := copy(temp, pos(',', temp) + 1, length(temp) - pos(',', temp)); //去除上次降得到的内容
end;
Query1.Post;
end;
end;
end;
end.
但最后一个字段"个人所得税"没有读入,请帮忙看一下.
如:
姓名,级别,工龄,赔缴,所得额,调增项目,调增额,扣除项目,扣除额,应税所得额,税率,速算扣除数,个人所得税
lll,科员,5-10 ,否,1450,0+0+0,0,800+102+70+0+0+0,972, 478.00,5%,0, 23.90
我的程序如下
procedure TForm1.Button1Click(Sender: TObject);
var
i,j: integer;
TextFileVar: TextFile;
FileN, temp: string;
StrLen, num: Integer;
begin
FileN := 'C:\My Documents\avglist.txt';
if FileN = '' then exit;
AssignFile(TextFileVar, FileN);
Reset(TextFileVar);
with Query1 do
begin
close;
UnPrepare;
sql.Clear;
sql.Add('select * from sj');
Prepare;
open;
end;
while not SeekEof(TextFileVar) do
begin
Readln(TextFileVar, temp);
//得到标记数
StrLen := Length(temp);
Num := 0;
for i := 1 to StrLen do
if Copy(temp, i, 1) = ',' then
Num := Num + 1; if pos(',', temp) > 0 then
begin
Query1.Append;
for j := 0 to Num - 1 do
begin
Query1.Fields[j].AsString := copy(Temp, 1, pos(',', temp) - 1); //得到字段内容
temp := copy(temp, pos(',', temp) + 1, length(temp) - pos(',', temp)); //去除上次降得到的内容
end;
Query1.Post;
end;
end;
end;
end.
但最后一个字段"个人所得税"没有读入,请帮忙看一下.
你上面写的代码复杂,实际不需要这样嘛
var posi:integer;
..................
while temp<>'' do
begin
Query1.Append;
posi:=pos(',', temp);
if posi>0 then
begin
Query1.Fields[j].AsString := copy(Temp, 1, posi- 1);
delete(temp,1,posi);////参数顺序不知道对不对,代码现写的,没装delphi,你自己改该吧
end
else
begin
Query1.Fields[j].AsString := copy(Temp, 1, length(temp));
temp:='';
end;
end;
以上代码都是随手写的,如果有错误自己更正吧
DbText:TextFile;
.....
Begin
AssignFile(DbText,'c:\1.Text');
Reset(DbText);
Try
While Not Eof(DbText) Do
Begin
..........//楼上的内容
End;
Finally
CloseFile(DbText);
End;