执行之后从表记录中的KeyField字段里面的数据都是错的。怎么回事呢

解决方案 »

  1.   

    Uniqueindentifier类型不能作为string类型处理
    可以将:
      b.FiledByName('KeyField').asString:=a.FiledByName('KeyField').asString;
      b.FiledByName('Info').asString:=a.FiledByName('KeyField').asString改为
    b.FieldByName('KeyField').AsVariant:=a.FieldByName('KeyField').AsVariant;

    b.FieldValues['id']:=a.FieldValues['id'];----------------
    有二点要提醒你:
    1。KeyField是not null的话,你的此句将报错:
        b.append;  
    2。a.FieldValues['id'];是从a 表取数丫,而a表当前纪录也没有变化
      

  2.   

    a表中该字段是使用newid()函数自动计算的
    当表被post的时候应该已经计算出来了吧
      

  3.   

    计算?你是指默认值吧?
    ooo....好象和你的题意不大符合,不明白你要干什么不过如果你有默认值的话它就会产生新的GUID,只不过客户端不能立即体现出来,除非你是用server-cursor
      

  4.   

    是这样的。
    我得A表里面添加了记录之后,从表要对此记录生成相应的数据
    从表要更主表关联,当然需要把此记录的Keyfield里面的数据
    加到自己的Key Column里面咯。但是好像这个时候都没有生成的。
    而主表keyfield里面的值为uniqueidentifier类型,设置缺省值为
    newid()来当添加数据时候自动计算。现在好像没有及时计算出来。
      

  5.   

    老实说,我不这么处理,这种问题最好用存储过程来实现你可以写一个存储过程,将你要在a表添加的数据作为参数传递给它,
    它在执行完insert语句后可以立即得到'KeyField'的值,在存储过程中直接将它插入到b表中,全部完成后利用变量将'KeyField'值返回
      

  6.   


    老实说,我不这么处理,这种问题最好用存储过程来实现你可以写一个存储过程,将你要在a表添加的数据作为参数传递给它,
    它在执行完insert语句后可以立即得到'KeyField'的值,在存储过程中直接将它插入到b表中,全部完成后利用变量将'KeyField'值返回(如果你需要的话)