MIDAS高手请进!!!!!!(急急急)(100分)

  • 主题发起人 主题发起人 kinn_liu
  • 开始时间 开始时间
请大家多多讨论
 
to lzhuan:
我修改了query的Sql,起作用了,不过数据集好像变成只读了,不能更新。就是说我在Client
端修改了数据,然后ApplyUpdate,再刷新,数据没有改变。[:)]
 
你是修改了datasetprovider的resolveTOdataSET:=true吗?
如果不是请把修改后的代码贴出来吧。
我这几天不上班,所以没法一直在线。[在网吧上的网:)]
你查查看clientdataset的delta内的数据能否传到服务器端
按理应该可以的阿,对了你的服务器对象应该是无状态的。
 
to lzhuan:
我把datasetprovider的resolveTOdataSET设为true了,又出现了新情况,呵呵。
我先把我做的东东说明一下:
这个项目是这样的,要求用浏览器在客户端登录,然后可以操作数据库中的数据。
Win2000 + sqlserver2000 + delphi5.0。
我用的是Borland的WebBroker和Midas技术。现在其他的部分都完成了,就是动态改变数据
表后,无法更新到后台数据库中。
所以我做了一个EXE的Client端进行测试,听了你的意见,我把把datasetprovider的
resolveTOdataSET设为true后,Exe的Client端可以更新了,可是基于CGI的WebBroker模块
还是无法更新,我想两者的原理应该是一样的,不知道问题出在哪里?
两者区别在:
EXE的Client端用的是DCOMCONNECTION,ClientDataSet连接MIDAS SERVER
WEBbroker用DCOMCONNECTION,XMLBROKER连接MIDAS SERVER
请大虾们给以帮助。
 
to:kinn_liu
道理在于:
客户A:setquery->客户B:setquery->
客户A:ClientDataSet1.Active := true->客户B:ClientDataSet1.Active := true
这样怎么能保证执行结果正确呢?
另外你说调通过一部分,我怀疑你中间层是否使用了singlemode,如果是的话请不要使用。
那不是三层结构。
还有:clientdataset缺省设置是有状态的。必须设威无状态的。FetchOnDemand=false.
还有ResolveToDataSet=true效率不高,建议不要使用。
 
其实你可以在web client中加个clientdataset用它的commandtext传递sql语句给
服务器的.

 
to lzhuan:
我试过了,我现在的问题是不能更新数据,而不是动态改变Server端query的sql。
to 李衍智:
你说三层是无状态的,这个我同意,不过可以把状态参数传给server,不就可以了吗?
我的Web Client只用到Dcomconnetion,XMLBroker,和Internet Express组件,没有使用
ClientDataSet,我现在的想法是在XMLBroker的OnRequestUpdate中改变Server端的属性
然后调用ApplyxmlUpdate,不知道是否可行?
强烈请做过类似东东的大虾指路!!!
 
你上面的程序不是用clientdataset吗?怎么又用xml了?不过没关系,除非必要,
我也不喜欢用clientdataset,麻烦你再把新代码贴一下。
在onrequestupdate改变server参数不可以,因为更新的delta数据包与提供着参数不符。
应该在onrequestrecord设置参数,provider的beforegetrecords接受参数,修改
sql,这样所有操作都是一条线,不会产生冲突。
(利用OWNERDATA传递SQL语句.)
 
to 李衍智:
说来说去,好像谈的是取数的问题,可是取数已经没有问题了,事实证明通过
Iappserver接口调用服务器方法修改query是可以的。现在的问题是取数后我修改了部分数据
在IE端提交,却没有更新到数据库中。
 
谢谢大家的讨论,小弟的问题解决了。
主要还是要考虑MIDAS对象的无状态问题,李衍智的讨论给我很大提示,谢谢你,也谢谢
大家这么热心的帮助我。
 
多人接受答案了。
 
后退
顶部