Subject:
cnpark的忠实用户的求助!!
[Print This Page]
Author:
daizhicun
Time:
2006-6-9 18:30
Subject:
cnpark的忠实用户的求助!!
我是去年5月份,一个偶然的机会发现了cnpark,用了之后大大的提高了开发效率,
排版比以前方便多了。而且可以通过Shift+F9实现脱离环境运行。而且可以自动的物理文件找出来。自定义过程的注释。。。
一直用到现在,不过我目前还时使用delphi7.
这几年来,有个关于AdoQuery的问题,一直困扰着我,
我知道在这里发这个问题,不太合适,这里高手如云。我非常想专家们帮我看看这个问题:
==========================================
付费请求解决AdoQuery在C/S下的多表现实,单表更新的问题[300~500元]:
如果把
AdoQuery.LockType 设置成 ltBatchOptimistic;
那么可以通过AdoQuery.UpdateBatch 更新数据;
比如:我们可以在DbGrid上任意做添加修改删除动作,一口气处理很多条记录,
最后,用一句AdoQuery.UpdateBatch提交给数据库;
非常非常方便;
我们不用自己判断哪些记录作了修改,那些纪录是刚添加的,删除了那些纪录,
也不要手工写任何更新的Sql语句;
但是AdoQuery.UpdateBatch 只能处理单表;
在多个表关联时,如果我们只想更新其中的一个表,其他表的字段不跟着更新,
那该怎么办?
有人提供这样的方法:
AdoQuery.Recordset.Properties.Item['Unique Table'].Value := '主表';
但是这个只对删除有用。
也有朋友提供:
把不需要更新的字段,修改其属性是ProviderFlags,把不需要提交的列pfInUpdate置为false就可以了;
我尝试了,这个好像只对三层架构有用,在B/S架构下不行;
我一直在网上寻求这个问题的处理方法,可是没有找到答案;
我也尝试着改写AdoQuey,让它和BDE的Query一样,也有UpdateObject属性,
可以通过设置UpdateSql的方法来灵活的控制更新;
但是没有办法实现类似Query.ApplyUpdates 这样的功能;
目前我研究的Ehlib4.0下面有AdoDataDriverEh控件,它能够实现类似BDE下的Query那种方式;
但是它要通过MemTableEh,而且数据量大的时候,数据集打开非常慢;我不想采用。
其实我最简单的想法就是:
1、 能够通过一个属性,把不需要更新的字段不参与更新就可以了;
2、 上面这个方法如果不行,如果能实现BDE下的Query那种方式也行;
如果哪位朋友,帮我解决这个问题,我愿付费请求解决方法;
解决方法,可以改写或继承AdoQuery,或者写一个新的Ado控件等等;
费用我考虑在300~500元之间,如果不够,可以再商量,我现在急切的想解决该问题。
联系方法:
msn:
sy_dzc@hotmail.com
如果觉得我这个问题描述不够详细,
可以参阅
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3277229
Author:
jAmEs_
Time:
2006-6-10 10:11
有沒有那麼誇張,這樣的東西竟然說:算了,以后也要转入到do net 下了,Ado的这个致命bug,就将就着浪费几万倍的开发效率吧。
說實在,這個批量提交功能是不錯,也有用的,但是也不是全部能用,而且我也很少用。而且,這個算是bug嗎?致命?
Author:
daizhicun
Time:
2006-6-12 13:38
用 AdoDataSet 已经没有办法处理 这个问题了,
据说,ClinetDataSet 的功能很强,于是我就尝试做个假三层,
通过ClinetDataSet+DataProvider+AdoDataSet 作为数据集。
但是设置了这个也没有用:
ClientDataSet.FieldByName('不需要更新的字段').ProviderFlags:=[];
郁闷死了!
详细参考了
http://itschool.rjdown.com/artic ... 6030818135480.shtml
这篇文章,甚至直接使用它的代码都不管用。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0