有TXT格式的文件,里面有多条记录,格式如下,
CRTACC=******* ;CRTBNK=工商银行 ;CRTCTY=深圳市 ;CRTNAM=*** ;CRTPVC=广东省 ;CRTSQN=53 ;C_CCYNBR=人民币 ;C_DBTBBK=深圳 ;C_STLCHN=普通 ;DBTACC=******* ;EPTDAT=20090604 ;EPTTIM=000000 ;NUSAGE=***** ;TRSAMT=34393.32 ;YURREF=20090604000053
如果里面的多条记录的某几个字段相同,如:CRTACC,CRTNAM值相等,就合并两条记录,并且 TRSAMT 的值为两条记录值总和,请问怎么实现? 

解决方案 »

  1.   

    方法一,把txt文件当作数据源,使用SQL语句进行过滤.
    方法二,逐行读入txt文件,每读一行就判断一下,如果该行已存在,则忽略,否则,则另存该行到新的txt文件里,同时把该行放到进行比较的字符串中.
      

  2.   

    举个简单的例子吧:txt文件有如下两条记录:
    a=1;c=3;d=3
    a=1;c=3;d=7
     两条记录中a和c的值相等,则合并两条记录,返回txt的记录为  a=1;c=3;d=10
    最好不用建数据库表就实现
      

  3.   

    我又要提dictionary了...
    一行行读入dictionary,key就是你要对比的值,item是你要相加的值...
    key存在,item相加,key不存在,add方法添加item...
      

  4.   

    方法2就是数据库了,既然在这个板块提问...
    建一个临时表,一行insert into数据, 完 一个sql查询就行了...
      

  5.   

    如果里面的多条记录的某几个字段相同,如:CRTACC,CRTNAM值相等,就合并两条记录,并且 TRSAMT 的值为两条记录值总和,请问怎么实现? 
    就你格式来看  真看不出来到那里为一条记录  如果多条记录某字段相同  就合并记录  如果有几个字段相同  TRSAMT=多少  
         
      CRTACC=51   这两值相等     你所讲的合并 是什么意思  是否这样CRTACC=51CRTNAM=51 
      CRTNAM=51   TRSAMT =102    合并后的格式又是如何     不懂...
        
     
      

  6.   


    我估计楼主没有表述完整。大概是需要除 TRSAMT 以外都相等,此合并两条记录。就这个问题来说,实际上需要生成一个处理过的新文件。逐行读入文本记录,用 Spilit 函数分割,保存到几个记录结构中。这个结构可以是数组,也可以是数据库记录集或表。保存前先检查是否有相同记录。如果有相同记录,则累加 TRSAMT,否则增加一条新纪录。最后,将处理所得的记录写入一个新文件。原有文件是否被覆盖,要看应用需求。
    ================================================================再说具体实现。如果我来做,就是逐行读入,直接写入数据库表。然后做一个含 Sum() 函数和 Group By 子句的查询。将得到的记录集写入新文件。