path:='E:\新建文件夹\';
Table1.DatabaseName:='E:\新建文件夹;
Table2.DatabaseName:='E:\新建文件夹1;
Table2.TableName:='0.dbf';
Table2.Active:=true;
FindFirst(path+'*.dbf',faDirectory,FS);
while FindNext(FS)=0 do
begin
if FS.Name<>'0.dbf' then
begin
Table1.TableName:=FS.Name;
Table1.Active:=true;
Table1.First;
Table2.Last;
while not Table1.Eof do
begin
with Table2 do
begin
Insert;
FieldByName('a').Value:=Table1.Fields[0].Value;
FieldByName('b').Value:=Table1.Fields[1].Value;
FieldByName('c').Value:=Table1.Fields[2].Value;
FieldByName('d').Value:=Table1.Fields[3].Value;
Post;
Table1.Next;
Table2.Next;
end;
end;
Table1.Free;
end;
end;
Table2.Free;
DeleteFile(FS.Name);
FindClose(FS);提示“access violation at address………………”。
怎么回事?谢谢了!
Table1.DatabaseName:='E:\新建文件夹;
Table2.DatabaseName:='E:\新建文件夹1;
Table2.TableName:='0.dbf';
Table2.Active:=true;
FindFirst(path+'*.dbf',faDirectory,FS);
while FindNext(FS)=0 do
begin
if FS.Name<>'0.dbf' then
begin
Table1.TableName:=FS.Name;
Table1.Active:=true;
Table1.First;
Table2.Last;
while not Table1.Eof do
begin
with Table2 do
begin
Insert;
FieldByName('a').Value:=Table1.Fields[0].Value;
FieldByName('b').Value:=Table1.Fields[1].Value;
FieldByName('c').Value:=Table1.Fields[2].Value;
FieldByName('d').Value:=Table1.Fields[3].Value;
Post;
Table1.Next;
Table2.Next;
end;
end;
Table1.Free;
end;
end;
Table2.Free;
DeleteFile(FS.Name);
FindClose(FS);提示“access violation at address………………”。
怎么回事?谢谢了!
Table1.Next;
Table2.Next; //應該不用Next; Table1.TableName:=FS.Name;
Table1.Active:=true; //這句要加上 try...except 檢查會否出錯如你的的題意,
不用 Insert , 用 Table2.Append 更好!!!
1、访问了空值字段。
Table1.Fields[0].Value你里面0-4字段内可能有空值,或者你的表内根本没有4个字段
2、你的Table1、Table2是否是动态生成的,如果不是的话请不要free它。
3、如果以上都不是,你可以设置一下断点并跟踪运行,看代码出错的位置!再把出错位置告诉我们!
“2”我改了;
问题出现在循环中Table1.TableName:=FS.Name;提示“can not perform this operation on an open dataset."
改为:Table1.close;
Table1.TableName:=Fs.Name;
如果我在程序后面加下面的语句,
table2.close;
table2.databasename:='ssss';
table2.tablename:='aaaa';
提示“can not perform this operation on an open dataset."怎么回事。