我在设计一个系统时,要将文本文件导入到ACCESS数据库中已存在的表
格式文本如:
256332,2005,二轮摩托,100,2005-10-28 下午 07:59:28
K25896,2005,正三轮摩托,500,2005-10-28 下午 07:45:32
相关的表字段为:
ch,yyyy,cx,jfje,czrq但是我的设计时,对取文本的操作还存在一点问题,以至数据不能insert 表中,望指点一下:
procedure Tfrm_view.BitBtn4Click(Sender: TObject);
var 
     f:textfile;
     s,ok:string;
     i:integer;
begin
  if textname.Text='' then
       begin
         showmessage('请选择文件的路径!');
         exit;
       end;
     assignfile(f,opendialog1.filename);
     reset(f);
  //   readln(f,s);
  //   ok:='';
  //   i:=0;
       while not eof(f) do
        begin
            ok:='';
            readln(f,s);
            for i:=1 to 5 do                   //分五次给前四个文本加引号
              begin
               ok:=ok+#39+copy(s,1,pos(',',s)-1) + #39 + ',';
               s:=copy(s,pos(',',s)+1,1000);
              end;
               ok:=ok + s ;
            try
              with ADOQuery_tmp do               //插入明细
                begin
                 close;
                 sql.Clear;
                 sql.add('insert into car_ls_fee(ch,yyyy,cx,jfje,czrq)  ');
                 sql.add('values('+ ok + ')');
                 execsql;
                 end;
             except
                 begin
                  showmessage('数据导入失败可能是由于有重复的数据。');
                  exit;
                 end;
             end;
        end;
     closefile(f);
     renamefile(textname.text,textname.text+'.bak');
     textname.Text:='';end;  

解决方案 »

  1.   

    忒罗嗦1、既然是格式文本,那就以TXT数据库的模式,用ADO把TXT文件打开,想怎么操作都行
    2、你的日期不要使用那么罗索的日期,否则会死的很难看
      

  2.   

    如果是格式文本直接用 IN 子句就可以了,用COM调用原生 ADO ,直接执行 INSERT INTO .... IN 子句即可关于此主题请参考:
        《查询》如何查询其他数据库内的表(IN子句实例)?
        http://access911.net/index.asp?u1=a&u2=71FAB21E17DC