一个关于midas很苦恼的问题!(50分)

  • 主题发起人 主题发起人 jackl
  • 开始时间 开始时间
J

jackl

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道各位大虾注意到了没有,在用midas的组件的时候,当进行关联数据源操作的时候,
数据更新到数据库中会出现问题!
我的做法是:
//打开数据源
Clientdataset.close;
Clientdataset.commandtext := 'select a.*,b.* from a left join b on a.Field1 = b.fields1';
ClientDataSet.open
//动作二:删除
Clientdataset.Delete;
//动作三 :更新,保存数据
Clientdataset.applyupdates(0) // ===注意:这里出现异常!
不知道各位对这种midas的写法有何高见!我的应用服务端是封装成了com+的形式,而不是
Dcom的形式!
还是各位有更好的想法,必将有高分相赠!!
 
用update语句呢
 
你用的是ADO还是BDE
如果是BDE肯定会报错因为你select 是两个表中的数据
 
to 52Free:
我用的是ADO,应用服务端做成的是com+的形式!
 
这样提交不出错才怪呢?
看看SQL的跟踪结果就知道如何错了。不能提交视图!!!(Insert,Update,Delete都不行!)
如果要提交视图需要改写控件Provider或ClientDataSet,自己改去吧!
 
to 郭玉梁:
兄弟,能提供一点好的建议吗?
 
我们项目组修改了Provider,使他可以提交视图,
工作成果,不能给你抱歉。你可以看看Provider的Source code,自己修改
用不到100行即可搞定。
 
是吗,能否给点提示呢,我必定给高粉,你有qq吗?
我的qq是83058409,做个朋友!
 
你作的应该是商业应用吧。
你只要用Provider进行数据提交,都有这个问题,不关什么ado,bde
 
to 郭玉梁,:
是呀,很奇怪怎么回出现这个视图提交的问题,所以想请教以下大虾这个问题呀!
我回追加分的,决不失言!
 
我给你讲讲吧(工作成果,源程序不会拿来换人情的)
Provider会认为你Select的字段是一个表的(不要怨它),所以提交时将所有字段都提交到
一个数据表,从而组织了一个提交语句Select/Update/Delete .... Where,你需要在
Provider形成Select/Update/Delete/Where语句时将不是该表的字段删去。看看源程序,不
太难。我用的ADO,所以通过ADO我可以得到该表拥有的字段和主键,写Where时只用主键
提交即可。
 
如果只是将某几个字段从更新中删除,只需要在提交时改变数据包(DELTA)的标志
ProviderFlags,将pfInUpdate去除,则此字段不会更新。
但是楼主的问题显然不是这个,而是多表更新问题,这方面的讨论应该有不少了,但
最终如何方便地解决,估计还是个老大难题,没有统一结果,你还是得自力更生。
如果要自已生成SQL,你可以参考下贴:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1198355
问题:midas结构,在服务器端,怎样截获并修改provider自动生成的SQL语句?
 
这个问题我已经解决了!
主要是字段的属性设置问题!
我的方案正在实施
 
后退
顶部