+ -
当前位置:首页 → 问答吧 → I/O error 32 错?

I/O error 32 错?

时间:2011-08-26

来源:互联网

以下是数据导出到TXT文件的代码,要导出的数据有200个文件左右,1万多条记录,导出中途出错,大概能导出60多个文件。Delphi(Pascal) code
   
if CheckBox2.Checked  then
    begin
    //
    fcProgressBar2.Min:=0;
    fcProgressBar2.Max:= DataM.ADOQuery1.RecordCount;
    fcProgressBar2.Step:=1;

 {   if not DirectoryExists(FilePath+'\'+DataM.ADOQuery1.Fields[0].AsString) then
     try
       CreateDir(FilePath+'\'+DataM.ADOQuery1.Fields[0].AsString);
     except
       showmessage('创建目录<' + FilePath + '>失败!');
       Exit;
     end; }
    //
      with  DataM.ADOQuery1 do
       begin
        first;
        while not eof do
         begin
          if DWTFBM=trim(fieldbyname('单位编码).asstring) then
           begin


            for  i:=0 to DataM.ADOQuery1.Fields.Count-1 do
             begin
              if (DataM.ADOQuery1.Fields[i].DataType=ftBCD) OR (I=18) OR (I=19) OR (I=20) OR (I=21) OR (I=22) then
               begin
                //try
                 ln:=DataM.ADOQuery1.Fields[i].AsCurrency;
                 write(tf,Format('%.2f',[LN]));
               end
             else
               begin
                lns:=DataM.ADOQuery1.Fields[i].AsString;
                write(tf,lns);
               end;
              if (i<>DBGridEh1.FieldCount -1) then Write(tf,',') else     //加入TAB
               Write(tf,'')
            end;
              Write(tf,#13#10);   //加入回车换行

           end //end if DWTFBM= ......
          else
           begin
            if Fields[0].AsString<>'' then
               filename:='salary'+DMUnit.DataM.ADOQuery1.Fields[0].AsString+trim(ComboBox1.Text)+trim(ComboBox2.Text)
            else
               filename:='salary'+inttostr(isnullsign)+trim(ComboBox1.Text)+trim(ComboBox2.Text);
              FilePath:=edit2.Text+'\'+filename+'.txt';
              assignfile(tf,FilePath);
              rewrite(tf);

            for i:=0 to DBGridEh1.FieldCount -1 do
              begin
                write(tf,DBGridEh1.Columns.Items[i].FieldName);
                if (i<>DBGridEh1.FieldCount -1) then Write(tf,',') else    //加入TAB
                  Write(tf,'')
               end;
                Write(tf,#13#10);   //加入回车换行

           end; //end if DWTFBM= ......else

           DWTFBM:=trim(fieldbyname('单位编码).asstring);
           inc(isnullsign);
           fcProgressBar2.Progress:=DataM.ADOQuery1.RecNo;
          next;
         end;//end while

       end; //end with
       
    end;  //end if
    closefile(tf);
   //

   
  showmessage('操作完成!')

作者: thisisxutao   发布时间: 2011-08-26

http://topic.csdn.net/u/20070802/15/2ad1c5da-eb6e-4bec-b78a-66a3e6e944e7.html

作者: m617105   发布时间: 2011-08-26

你的文件是不是有同时读写的操作?设成共享模式试试看!

作者: xfxlylove   发布时间: 2011-08-26

热门下载

更多