把一.dbf文件表导入到sqlserver表中
出现以下错误,请大虾指点
raised exception class Elisterror with message
"list index out of bounds(0)"
3ks
procedure TForm1.Button1Click(Sender: TObject);
var
hssd,hxsd,jbxs,yhbh : string;
begin
query1.close;
query1.databasename:='c:\';
query1.sql.clear;
query1.sql.add('select * from swap.dbf ');
//取表中的记录值
hssd := query1.Params[0].AsString;
hxsd := query1.Params[1].AsString;
jbxs := query1.Params[2].AsString;
yhbh := query1.Params[3].AsString; query1.open;
while not query1.eof do
begin adoquery1.Close;
adoquery1.sql.clear;
//追加到swap表中
adoquery1.sql.add('insert into swap(HSSD,HXSD,JBXS,YHBH) values(:hssd,:hxsd,:jbxs,:yhbh) ');
adoquery1.Parameters.ParamValues['hssd'] := strtofloat(hssd);
adoquery1.Parameters.ParamValues['hxsd'] := strtofloat(hxsd);
adoquery1.Parameters.ParamValues['jbxs'] := strtofloat(jbxs);
adoquery1.Parameters.ParamValues['yhbh'] := strtofloat(yhbh); adoquery1.Open;
//........................
adoquery1.next;//转到下一条记录
end;
出现以下错误,请大虾指点
raised exception class Elisterror with message
"list index out of bounds(0)"
3ks
procedure TForm1.Button1Click(Sender: TObject);
var
hssd,hxsd,jbxs,yhbh : string;
begin
query1.close;
query1.databasename:='c:\';
query1.sql.clear;
query1.sql.add('select * from swap.dbf ');
//取表中的记录值
hssd := query1.Params[0].AsString;
hxsd := query1.Params[1].AsString;
jbxs := query1.Params[2].AsString;
yhbh := query1.Params[3].AsString; query1.open;
while not query1.eof do
begin adoquery1.Close;
adoquery1.sql.clear;
//追加到swap表中
adoquery1.sql.add('insert into swap(HSSD,HXSD,JBXS,YHBH) values(:hssd,:hxsd,:jbxs,:yhbh) ');
adoquery1.Parameters.ParamValues['hssd'] := strtofloat(hssd);
adoquery1.Parameters.ParamValues['hxsd'] := strtofloat(hxsd);
adoquery1.Parameters.ParamValues['jbxs'] := strtofloat(jbxs);
adoquery1.Parameters.ParamValues['yhbh'] := strtofloat(yhbh); adoquery1.Open;
//........................
adoquery1.next;//转到下一条记录
end;
query1.sql.clear;
query1.sql.add('select * from swap ');改成以上两句。
然后把swap.dbf文件放到你的程序.exe文件同一目录下。再试试看.
可以F7单步跟踪一下。
//取表中的记录值
hssd := query1.Params[0].AsString;
hxsd := query1.Params[1].AsString;
jbxs := query1.Params[2].AsString;
yhbh := query1.Params[3].AsString;
当然会出现越界。
-->
query1.next;//转到下一条记录
hssd := query1.fields[0].AsString;
hxsd := query1.fields[1].AsString;
jbxs := query1.fields[2].AsString;
yhbh := query1.fields[3].AsString;