莫名其妙的错误

procedure TFormDAORU.RzButton2Click(Sender: TObject);
var
  mylist:TStringlist;
  i1,i2:integer;
  s1,s2:string;
  j1,j2,j3,j4,j5,j6,j7,j8:string;
begin

  if edt1.text<>'' then
  begin
    s2:='第';
    mylist:=TStringlist.Create;
    mylist.LoadFromFile(Trim(edt1.Text));
    i1:=mylist.Count;
    //ShowMessage(mylist[0]);
    if i1>0 then
    begin
      for i2 :=1 to i1  do
      begin
        try
          if Length(trim(mylist[i2-1]))=28 then   //初步判断正常就尝试导入
          begin
            j1:=copy(trim(mylist[i2-1]),1,7);
            j2:=copy(trim(mylist[i2-1]),9,2);
            j3:=copy(trim(mylist[i2-1]),12,2);
            j4:=copy(trim(mylist[i2-1]),15,2);
            j5:=copy(trim(mylist[i2-1]),18,2);
            j6:=copy(trim(mylist[i2-1]),21,2);
            j7:=copy(trim(mylist[i2-1]),24,2);
            j8:=copy(trim(mylist[i2-1]),27,2);
            with DBISAMQuery1 do
            begin
              close;
              SQL.Clear;
              s1:='insert into record(qihao,r1,r2,r3,r4,r5,r6,b) '+
                  'values(:A,:B,:C,:D,:E,:F,:G,:H)';
              SQL.Add(s1);
              Params.ParamByName('A').Value:=j1;
              Params.ParamByName('B').Value:=j2;
              Params.ParamByName('C').Value:=j3;
              Params.ParamByName('D').Value:=j4;
              Params.ParamByName('E').Value:=j5;
              Params.ParamByName('F').Value:=j6;
              Params.ParamByName('G').Value:=j7;
              Params.ParamByName('H').Value:=j8;
              ExecSQL;

            end;
          end
          else     //初步判断不正常就放弃导入该记录,并记载异常条数提示
            s2:=s2 + IntToStr(i2)+'条、' ;

        except
          s2:=s2 + IntToStr(i2)+'条、' ;

        end;
      end;
      if length(s2)=2 then
        ShowMessage('数据导入成功!')
      else
      begin
         copy(s2,1,length(s2)-2);
         ShowMessage('数据导入结束,'+s2+'记录导入失败!');
      end;
      DBISAMQuery1.Close;
    end
    else
      ShowMessage('无记录!');

    mylist.Free;
  end;
end;

上面是一段从txt文件向dbisam数据库导入数据的小程序。非常简单,初看没有什么毛病。但是在调试的时候,程序无法执行正常的导入操作——即使数据源没任何毛病,直接就跑到异常处理那块,报告所有记录条数导入失败。因为在这之前写过数据录入模块和数据浏览模块,若在执行导入操作前先点开录入窗口或者浏览窗口,再执行导入就没有任何问题。在单步调试的时候也发现,程序直接就在SQL.clear前的close这个断点直接就跳到了except那里去了,也即DBISAMQuery控件在执行close事件时触发了异常!我去,在更新sql语句前不关闭DBISAMQuery行吗?很郁闷。没奈何,只好在导入窗体的show事件里画蛇添足地添加了下面这段

  DBISAMQuery1.close;
  DBISAMQuery1.sql.Text:='select * from record';
  DBISAMQuery1.open;

表面上一切正常,但还是觉得这种方式很有点说不过去。请高手指点一下,是不是我的导入部分存在问题?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值