如何将下列文本文件中会计科目:0002的"客户名称","贷款帐号","合同号"数据读入数据库,字段名分别为khzh,dkzh,hth?  会计科目:  0001                                                   
  ===================================================================
            客户名称              贷款帐号          合同号           
  -------------------------------------------------------------------
  华小二                      103035500100000079  019905500001600    
  何瑟                        103035500100000078  019905500000500  
                      ...................  
  曹夹英                      103035500100000176  019905500000900    
  -------------------------------------------------------------------
    本页笔数:  45      本页金额:        2,950,033.15               
  -------------------------------------------------------------------
  
  
  
  会计科目:  0002                                                   
  ===================================================================
            客户名称              贷款帐号          合同号           
  -------------------------------------------------------------------
  贺晓                        103035500100000021  019905500001901    
  倪任尧                      103035500100000004  019905500000101 
                     ..................   
  郑何方                      103035500100000068  019905500000201    
  -------------------------------------------------------------------
    本页笔数:  38      本页金额:       22,504,728.81               
  -------------------------------------------------------------------
  
  
  
  会计科目:  0002                                                   
  ===================================================================
            客户名称              贷款帐号          合同号           
  -------------------------------------------------------------------
  李茜                        103035500100000123  019905500001100   
                     ................... 
  万森林                      103035500100000254  019905500001200    
  林国美                      103035500100000085  019905500001300    
  -------------------------------------------------------------------
    本页笔数:  27      本页金额:       22,504,728.81               
  -------------------------------------------------------------------
  
  
  
  会计科目:  0003                                                   
  ===================================================================
            客户名称              贷款帐号          合同号           
  -------------------------------------------------------------------
  张望人                      103035500100000023  019905500002800    
  何其一                      103035500100000034  019905500004500 
                      ...................   
  赵达标                      103035500100000045  019905500003500    
  -------------------------------------------------------------------
    本页笔数:  46      本页金额:       22,504,728.81               
  -------------------------------------------------------------------

解决方案 »

  1.   

    网上这种资料很多
    到http://www.codelphi.com技术囊中去找吧,并且带例子的。或则自己写函数也可以
      

  2.   

    我正在做这方面的工作,我给你一段例子,我做的是先打包(.TXT)然后再解包,在解包完成以后写入数据库:
    procedure TcResponsor.ShangchTHSQJB;
    var
      adoq:TADOQuery;
      fFile: textfile;
      sStr, sTablename, sFilename, sParentFilename, sSql: String;
      tMem: TMemoryStream;
      t: Tlist;
      p: PTableHandle;
      i: Integer;
      fields: TStringList;
    begin
     //解包
      t := Tlist.Create;//存.TXT文件名(即表名)的
      sParentFilename := ExtractFileName(FRequest^.Filename);
      sParentFilename := Copy(sParentFilename, 1, Pos(ExtractFileExt(sParentFilename), sParentFilename) - 1);
      AssignFile(fFile, FRequest^.Filename);
      Reset(fFile);
      While Not Eof(fFile) do
      begin
        Readln(fFile, sStr);
        sStr := Trim(sStr);
        if sStr = '' then
          Continue;
        if Copy(sStr, 1, 3) = '---' then
        begin
          //开始一个表
          sTablename := Copy(sStr, 4, Length(sStr) - 6);
          sFilename := getAppPath + C_TmpFileDir + '\' +
                       sParentFilename + '.' + sTablename +
                       C_ComTempFileExtName;
          New(p);
          With p^ do
          begin
            Tablename := sTablename;
            Filename := sFilename;
          end;
          t.Add(p);
          tMem := TMemoryStream.Create;
          repeat
            Readln(fFile, sStr);
            sStr := Trim(sStr);
            if sStr = '' then
              Continue;
            if Copy(sStr, 1, 3) = '!!!' then
            else begin
              //读取记录
              WritelnToMem(tMem, sStr);
            end;
          until Eof(fFile) or (Copy(sStr, 1, 3) = '!!!');
          tMem.SaveToFile(sFilename);
          tMem.Free;
        end;
      end;
      CloseFile(fFile);
      //写数据库
      adoq := TADOQuery.Create(Nil);
      adoq.Connection := Form_dm.g_adocn_gongyzh;
      for i := 0 to t.Count - 1 do
      begin
        AssignFile(fFile, PTableHandle(t.Items[i])^.Filename);
        reset(fFile);
        while Not Eof(fFile) do
        begin
          readln(fFile, sStr);
          fields := AnalyseFields(sStr);//存读出的某一字段值
          if PTableHandle(t.Items[i])^.Tablename = 't_shenqth' then
          begin
              {sSql := 'update  t_tuihdzb '+
                    '     set  s_sqdwdm='''+fields.Strings[1]+''','+
                    '          d_sqrq='''+fields.Strings[2]+''','+
                    '          b_bs='+'0'+','+
                    '          s_fhckdm='''+fields.Strings[4]+''','+
                    '          s_dbdh='''+fields.Strings[5]+''','+
                    '          b_thyy='+fields.Strings[6]+''+
                    '    where s_sqdh='''+fields.Strings[0]+''''; }
              sSql := 'insert t_tuihdzb(s_thdh,s_sqdwdm,d_sqrq,i_bs,s_fhckdm,s_dbdh,m_thyy)'+
                      '          values('+
                      '                 '''+fields.Strings[0]+''','+
                      '                 '''+fields.Strings[1]+''','+
                      '                 '''+fields.Strings[2]+''','+
                      '                 ''0'','+
                      '                 '''+fields.Strings[4]+''','+
                      '                 '''+fields.Strings[5]+''','+
                      '                 '''+fields.Strings[6]+''')';      end;
          if PTableHandle(t.Items[i])^.Tablename = 't_shenqthmx' then
          begin
           { sSql := '  update  t_tuihmx '+
                    '     set  f_ths='+fields.Strings[2]+','+
                    '          c_danj='+fields.Strings[3]+''+
                    '  where s_sqdh='''+fields.Strings[0]+''''+'and'+
                    '        s_qcbm='''+fields.Strings[1]+''''; }
            sSql := ' insert t_tuihmx(s_thdh,s_qcbm,f_ths,c_dj)'+
                    '          values('+
                    '                 '''+fields.Strings[0]+''','+
                    '                 '''+fields.Strings[1]+''','+
                    '                 '''+fields.Strings[2]+''','+
                    '                 '+fields.Strings[3]+')';
         end;
          try
            ExecQuery(adoq, sSql);
          except
            Continue;
          end;
        end;
        CloseFile(fFile);
        DeleteFile(PChar(PTableHandle(t.Items[i])^.Filename));
      end;
      

  3.   

    这样有规律的文本文件没问题,先打开要读的文件用readln把整行读到字符串中,然后用copy把这个字符串分解成相应的字段,写入数据库保存,最后别忘了关闭刚才的文本文件。
      

  4.   

    这样有规律的文本文件完全可读到数据库中,先打开文本用readln把整行读到字符串中,然后,用copy命令对这个字符串操作,再写入数据库。