目前正在做一个项目,涉及到数据上报的问题。服务器端采用C/S结构MYsql数据库,客户端用ACCESS数据库。客户端第月上报一次数据,只上报修改过的数据,客户端对修改过的数据加有标识方便导出。问题是:怎么样才能生成上报数据的文件,应该生成哪种格式的文件。用什么方法可以实现。暂时不考虑上报数据的方式。只想知道如何将要上报的数据导出来生成上报文件。高手帮忙!!

解决方案 »

  1.   

    举个例子:
        客户端使用的是Access数据库,那么首先检索出修改过的数据集,然后将该数据集保存为TXT文件(比较通用,也好处理,但是需要知道服务器端接受的文件格式,也就是协议。通常情况下可以把每一条记录在这个TXT文件中保存为一行,然后每个字段数据之间用特定的符号分割,其中常用的分隔符有“,”、“^”、“|”等等)。
        服务器端接受到这个符合自己规范的TXT文本,就按照协议的规则来解析还原这个数据集,然后更新数据。基本的道理就是这样的啦,其中的关键就是在客户端生成的文件可以被服务器端识别。实在是不清楚你的具体需求,是原理不清楚,还是不能生成代码,如果还有需求,明天晚上我会给你答复的!
      

  2.   

    详细一点的例子(比如这个记录集有3个字段,第一个是ID(整形),第二个是NAME(字符形),第三个是VALUE(浮点形),那么就生成以下的TXT文件(假设服务器可以识别)1|TOM|1234.32
    2|JACK|2363.90
    3|ROSE|30982.37
    ……那么服务器就一行一行的读取这个TXT文件,然后把“1|TOM|1234.32”分割成1、TOM、1234.32,然后就更新ID为1的数据,以此类推即可。
      

  3.   

    我想在txt中直接生成
    update
    insert
    形式的语句。
    不知道用哪种方法可以实现,你能不能给我说一下。
    用下面这种方法对吗?
    while not adoquery1.Eof do
    begin
    memo1.Lines.add('update set from partymember where bid='+adoquery1.fields[0].asstring+'');
    adoquery1.next;
    end;
    memo1.lines.savetofile('d:\gh.txt');
    end;
      

  4.   

    哦,原来你想直接生成可执行的SQL文本呀,象你的方法也是可以的,不过一般来说数据上报基本上都是只生成数据文本,没有生成SQL文本的。
    如果你仅仅想生成一个SQL文本,那么用一个TStrings类就可以了,就是一个字符串数组,它也提供了一个SaveToFile的方法的;