jasonmale
25210
|
2006/8/2 9:06:52 |
哈哈,各位不要“打架”了,技术讨论而已。哪种技术好,自己去实验吧。我在这里只是提供我自己做的方法,至于是非对错,我不去讨论,楼主说我是对的,我确实没有用原生的ADO来做,因为我懒,我想我应该去探讨一下了。 我从事IT十几年了,我从来也不敢说高手呢,只是感觉经验多了一点罢了。 我个人的观点:天下文章可以一大抄,但得加入自己的观点和看法。了解别人的技术,能提供自己一些借鉴,但不要期望拿过来就可以用。 |
jasonmale
25209
|
2006/8/2 9:02:14 |
哈哈,大家不用争议了,技术无止境,亦无高手之分,我只是说明分页的另一种方面而已,别无他意,我做IT做了十几年,我从来不认为我是高手,我只是有点经验以及在某些部分了解一点点而已。 每个人发表自己的一点技术讨论,或看别人的技术点滴,都只能作为参考而已,我个人观点:天下文章可以抄,但要有自己的论点和看法 |
zbluecn
25208
|
2006/8/2 7:49:43 |
不要偷换概念,我没有说不许反驳,不过是措辞的问题。
细细! 本来我就是说出这一点,没有想到你的竟然这样说
说什么呢 宁可的得罪君子不可得罪小人阿。 |
vvyang
25207
|
2006/8/2 0:23:51 |
To zbluecn: 行了,别影响了您老的心脏健康,互相攻击到此打住... |
vvyang
25206
|
2006/8/2 0:21:19 |
To zbluecn: 呵呵,有人开始抓狂鸟... 貌似我自始至终没有骂人啊,仅仅说说我的看法而已,倒是您开始破口大骂了,别太现眼了... 别人说什么就是什么,这就是虚心吗?是不是在盒子里发贴不允许发贴者反驳回帖,否则就是不虚心,您规定的? |
zbluecn
25205
|
2006/8/1 23:57:40 |
最后补充一句, 搜索2个站点 不容易啊. 好了 睡觉了... 有问题的话明天再说拉.... |
zbluecn
25204
|
2006/8/1 23:53:07 |
另外 您竟然可以为了骂人 去进行搜索.... 敬业精神值得我学习...
向你学习中 |
zbluecn
25203
|
2006/8/1 23:49:09 |
我只是对你点话说了一些我的看法 没有想到你怎么回象那个什么动物一样 见人就yao那
学无止境 知道马!!!
知道什么是虚心马?
真是的 不和那个什么计较拉 |
zbluecn
25202
|
2006/8/1 23:45:59 |
那个啊 我不牛 我只是说一下我对你说的"您也不用大谈 Top 之类的SQL语句,地球人都知道了,听着都烦,不用再贴上来了。"这句话的看法
转贴控件 呵呵 不好马? |
zbluecn
25201
|
2006/8/1 23:43:06 |
呵呵 你看看是什么时候发的帖子拉 |
vvyang
25200
|
2006/8/1 23:16:14 |
To zbluecn: 另外我有一个问题搞不清楚,像您这样的高手,不必为了寻找 VssConneXion 的破解到大富翁上求助吧?第一您可以自己破解,第二实在不行可以自己写一个精简版的说,不符合您的作风啊... |
vvyang
25198
|
2006/8/1 23:00:43 |
To zbluecn: 我当然允许别人评论,但是我本人也有参与讨论的权利。 您用不用ADO跟我无关,如果您对这个很熟不必来看这个帖子;我以前的帖子里也说过,这里高手太多而我的水平很低,不过还是喜欢自己写点东西(虽然比较垃圾);这一点与喜欢转贴控件的 zbluecn 先生不太一样。 您是先会 Top 之类的SQL语句还是先会ADO我不关心,喜不喜欢 ClientDataSet 也是您自己的事情;我贴帖子是希望共同提高,如果您认为自己属于那种“很牛”的可以不看,没人请您,你自己进来的。 |
zbluecn
25196
|
2006/8/1 22:01:25 |
另外一个说明的是 我以前用ado作引擎处理的时候,业经常用到ado原生对象,不过那个时候主要是偷懒,直接对组合查询进行根新,需要控使用原生来控制单表的更新,并且作主键更新.呵呵毕竟delphi对ado的封装并不完善 |
zbluecn
25195
|
2006/8/1 21:56:51 |
怎么说楼主那 ~~ado原生对象 呵呵 看看 ADO的文档就知道了 ,我很少用ADO的分页机制,特别是一天产生数千条数据的时候,对这个的统计 用ADO处理简直是恶梦.
我不知道我的习惯好不好 在些Delphi程序的时候 数据库 一般用 数据引擎+ClientDataSet 我宁可自己处理分页机制. 如果说jasonmale 的说法地球人都知道,难么您的说法 估计是全宇宙人都知道了.
我所表达的意思是,既然你贴出自己的程序,因该容许他人评论. |
vvyang
25194
|
2006/8/1 20:35:38 |
To jasonmale: 您所谓的“分页”跟我说的ADO分页不是一回事,您也不用大谈 Top 之类的SQL语句,地球人都知道了,听着都烦,不用再贴上来了。 “当然可以设置ado对象属性,但这时recordcount或pageSize就为-1”,哪个告诉你的,不要把 Delphi 包装过的、用来兼容 VCL 的 ADOExpress 等同于 ADO 对象... |
jasonmale
25191
|
2006/8/1 17:28:10 |
这种分页并不见得实用 分页的方法其实很实用,在李维的一本书中专门有讨论过这方面的理论(书叫分布式开发.. 不记得了)。 如果一个大的数据表,使用table或者tquery来把数据全部取得前台是不现实的(当然可以设置ado对象属性,但这时recordcount或pageSize就为-1)使用楼主分页的方式就不行吧。 所以,我在做大型项目时,特别是在Internet中运行的程序,一般也需要分页显示记录(如查出大量数据,以分页显示),但确实不能确定记录数量(当然可先select count处理,但这又多了一笔开销)。一般来说,我们在发送sql语言时,限制取得数据笔数,如取20笔(SQLSERVEER中使用Top关键字,PG中使用limited)。如果取下一页怎么办。这里就需要确定这次查询的数据字符中有确定唯一性值,取下一页使用同样的SQL语句,但WHERE条件中需要key>界面上最后一笔的关键记录值, 同时又限制记录数量20个。 如SQLSERVER例子:第一次查出记录 select top 20 key field1,field2 from table key, field1 field 2 A fv1 fv2 B fv11 fv22 C ... D... 下一页 : select top 20 key,field1,field2 where key>'D' ... 上一页: select top 20 key ... where key<'A' 最后一页:select top 20 key.... order by key desc 。。。 有一个问题,如果关键是二个,并且非字符类型,怎么办。一样,先使用SQL中函数把非字符类型转换成固定格式的字符串(注意,FLOAT和INTEGER的转换需要统一长度的字符),再把多个关键字联合(+)成一个虚拟字段就OK了。 |
vvyang
25181
|
2006/8/1 1:35:43 |
To w3k: QQ:357439259 |
w3k
25178
|
2006/7/31 18:57:31 |
楼主留下你的QQ或者MSN 我们一起讨论DELPHI技术 |
vvyang
25176
|
2006/7/31 16:34:15 |
谢谢楼上两位鼓励,我一向提倡使用原生ADO对象,两位感兴趣的话可以看看我那个帖子。 分页虽然不能提高查询效率,但是它的用处还是很多的;分页的本质还是游标的移动,这从 Eof 不能判断本页结尾就可以看出来:
----set AbsolutePage = 1 ---- Bof cursor-> record 0 record 1 record 2 ----set AbsolutePage = 2 ---- cursor-> record 3 record 4 record 5 ----set AbsolutePage = 3 ---- cursor-> record 6 record 7 record 8 ----set AbsolutePage = 4 ---- cursor-> record 9 record 10 record 11 Eof ---------- |
w3k
25161
|
2006/7/31 0:50:34 |
采用ADO原生对象处理分页,非常容易! 哎,delphi的DBGRID等VCL的数据源绑定不支持ADO对象返回的记录集,可惜可惜 感谢楼主的分享…… |