软件功能是定时的采集数据然后累计
最初软件存在两个问题:1.没有防止重复累计的功能,也就是说如果这个时段的数据已经累计过了,再次采集的话软件不会判断,仍然写入文件。2.顺序不能保证,假如5点的数据没有采集到,6点数据采到了,则6点数据写入文件,过后人工采集5点的数据成功,则在文件中,5点和6点的数据顺序就是错的,导致根据文件内的数据画图的时候,图曲线出现折回的现象。现在就是要解决这两个问题:一方面判断已经累计过的数据就不再累计进文件,另一方面,最大程度保证数据是按时间顺序累计的。我现在是设定了一些关于采集和累计的全局变量,程序运行的时候可以根据这些变量判断这个时段的数据是否已经采集或者累计,但是问题时软件关闭重新运行的时候,这些变量都被清空,最好能实现一种保存机制,能够一直保存这些信息。
Vb中文件的写操作只有overwrite 和append?如果要在文件某一位置插入一些数据,怎么做呢??这部分调了两天了,总觉得不满意,有好多bug,这个软件是要长时间运行的,不稳定的话会有很多问题~~~哭死

解决方案 »

  1.   

    是这样的,比如今天5点的数据放在04260500.txt文件里面,
    目的文件是比如NowDayFile这个文件把 
    Set D2 = fs.OpenTextFile(NowDayFile, 8, True, 0),open04260500.txt这个文件,然后一行一行的把数据累计到NowDayFile里面。
    所以数据不用加编号或备注的,关键在累计的过程
    如何在累计之前,判断这个文件的内容是否已经被累计过了,或者当前要累计的文件不是按照时间顺序到达的,那么有没有办法把它插入到适当的时间位置?
      

  2.   

    说详细点这个软件的话,仪器一个小时采集若干次数据,然后这些数据写成一个小时文件,传上来,我的这个软件就要采集这些小时文件
    ===========================
    留言收到。
    看看那个仪器采集到的数据是否包含时间标识。
    你的问题我觉得最好用数据库的方法来解决。简单方便。。
    但并不是说你一定要使用access或要安装sql server之类的数据库。
    只要你的数据格式统一,文本文件都可以作为数据源的
    最好可以贴出采集数据、NowDayFile、04260500.txt的样本。
      

  3.   

    我的思路是将已经累计过的文件名用一个文本文件存储起来,下次再采集数据时,去该文本文件中查找是否存在,如已存在,则不再采集数据;至于第二个问题,要先看看NowDayFile这个文件是如何设置的,如果它有一定的格式,应该可以按照数据库的方法去解决的
      

  4.   

    好吧,贴个实例吧
    这是小时文件名例:Z_NEP_51747_20060331140000可以区分项目,站点采集时间
    文件内容例:
    20060331140000 Avg   282.52  27.5   7.3  882.6  27.5
    20060331140500 Avg   274.12  27.5   7.3  882.6  27.7
    20060331141000 Avg   270.21  27.4   7.3  882.7  27.5
    第一项就能看出采集时间,五分钟一个数据
    日文件名实例:52203_P_20060417日文件也是区分站点,项目和数据属于哪一天,这是4月17号,它要把一天24小时的小时文件都累计进来
    文件内容实例:
    2006041700:5505    OK  136.40  122.80  436.60  316.20 5572.93 '这是0点55分,下面可以看出0点的数据又累计了一遍,即重复累计 
    2006041700:0005    OK  107.20  258.10  436.60  316.20 5566.19  
    2006041700:0505    OK  119.60  258.10  436.60  316.20 5566.82 '下面是2点的数据,中间缺了1点的数据 
    20060417020005    OK   57.90   92.10  121.10  315.40 5580.12  
    20060417020505    OK   41.10   92.10  121.10  315.40 5580.31  
    20060417021005    OK   38.50   92.10  121.10  315.40 5580.50  大致就是这种情况
      

  5.   

    我现在就是建立一个数组,放置前面采集过的时间,用不同标志区分该时间采集成功还是失败,然后每次采集之前先查询。这就出现另一个问题,每次软件重新运行的话,该数组被清空,前面的信息就没有鸟~~
    阿毛说的建立文件存放采集信息倒是不会被清空内容,但是存放信息条数怎么限制阿,不限制的话,时间信息越来越多,那采集之前的判断不是要进行很久阿~~
    昨天我也尝试把采集时间信息存在access里的数据表里,如何限制存放的信息条数,比如设定就存放200条,满了就清空或者循环再从头存
    皑皑,问题越想越多,脑子不够转了~~~
      

  6.   

    有时间标识久好办了
    把所有采集回来的数据都堆到一个文件里去,不用管它有没有重复。。
    把这个文件作为数据源,然后使用DISTINCT参数进行查询统计就行了
      

  7.   

    也就是说采集的数据都放到数据库中,作为数据源
    然后再用select distinct输出数据库中的内容到普通文件中,作为日文件,也就是日文件的内容是从数据库中取出来然后按时间顺序累计的。
      

  8.   

    也就是说采集的数据都放到数据库中,作为数据源
    然后再用select distinct输出数据库中的内容到普通文件中,作为日文件,也就是日文件的内容是从数据库中取出来然后按时间顺序累计的。
    =============================================
    就是这个意思。。
    还是不行吗??????