例如:一个订单中,它表结构里面肯定只存储客户编号,
不会有客户名称等,但是,界面显示时肯定得把客户名称等带出来显示,
所以用到left join,
这时修改订单数据后,提交数据不能直接ApplyUpdates吧???******* 你们是怎么处理???ado又没有UpdateSQL,有也麻烦!?难道只能在DataSetProvider的BeforeUpdateRecord仿照UpdateSQL的实现方法!??

解决方案 »

  1.   

    如果是ADO下仿照UpdateSQL.ModifySQL等的做法,
    岂不是每一个需要提交left join数据的地方都要构造SQL:
    update ...  
    set ... = :xxx , ... = :xxx , ... = :xxx 
    where ... =:OLD_xxx这样就会有些问题:
    1、这个sql写死在中间层:如果有一天,我们需要增加一个字段,
         那我们的client层界面要改、中间层sql也得改、数据库结构也改。赫赫2、如果这个sql在DataSetProvider的BeforeUpdateRecord中根据数据库结构动态产生:
         这里又多一次数据库数据检索操作,速度、稳定性也值得考虑!?
    (不过我会取后者,如果没有其他办法的话)
      

  2.   

    自己写一个类,这个类继承至TDataSetProvider,这样就可以解决了
      

  3.   

    谢谢qiume !!!那干脆我就把动态构造sql的动作放在设计期去做好了,
    不需要我手工写sql,也不需要在运行期再构造sql;
    当数据库结构有所改动,设计期更新一下就好了!