捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:分页显示技术 (StringGrid)
whilechina 39074 2009/11/20 17:03:57
多少年之后的现在,看看以前你们发表的言论,感觉你们当时是那么的幼稚,心智不成熟的表现。
tellgkkg 19790 2005/12/6 21:14:12
呵呵,无论怎么说,在这边都学了不少东西,大家一起讨论技术,有问题可以一起研究,不过不要伤了和气,呵呵!
samool 18268 2005/10/7 12:28:00
nihaoqiang 说的好:只要发贴都是好同志! 
大家相互学习,呵呵,有问题大家可以讨论嘛。
最主要不要伤了和气了。
yeeler 17891 2005/9/16 13:48:56
本人言辞过激 一时气愤 还请原谅   发出的评论无法删除.
yeeler 17768 2005/9/12 16:22:36
to 各位
   本人是初学者,endo的StringGrid示例给我帮助很大,非常感谢他的帮助。delphi盒子本身就是delphi新手成长,高手交流的地方。而“开黄枪”“所谓的”那种攻击性的言辞令人愤慨!如果您觉得endo的代码漏洞百出,你可以上传自己的代码,让大家来评说。
   这种水落石出的演说还是少点为妙。
   最后送楼上的mjian320一句歇后语: 断了腿的蛤蟆-光会叫不会动
ajian320 16896 2005/8/10 9:26:38
"endo",看来你只是不过是Delphi才入门而已呀,但从你的发言来看,你又真的不会,不懂
Delphi,对SQL也只是闻其声而已,故你老是在开黄枪,那只是你所谓的"执行效率"吧!!!!!
conch 16869 2005/8/8 14:28:30
这种方法是太笨。如果用过ADO的话(不是Dephi的TADO×××控件)有空看看ADOQ×××.Recordset的属性,你会有其它方法的。
endo 16860 2005/8/8 9:57:44
此问题到此为止吧?
大家都不要把时间花在这里了!
毕竟是学习的地方!:)
nihaoqiang 16846 2005/8/6 15:36:02
不过还是要支持一下,只要发贴都是好同志!
nihaoqiang 16845 2005/8/6 15:34:53
这个就不要称为“xx技术”了吧,就是SQL语句的用法嘛。
yunyesyes 16833 2005/8/5 15:19:18
程序是拿来用的,不管如何,觉得自己实用就好。
yunyesyes 16832 2005/8/5 15:17:56
获取指定页的数据
CREATE PROCEDURE pagination3
@tblName   varchar(255),       -- 表名
@strGetFields varchar(1000) = '*',  -- 需要返回的列 
@fldName varchar(255)=',      -- 排序的字段名
@PageSize   int = 10,          -- 页尺寸
@PageIndex  int = 1,          -- 页码
@doCount  bit = 0,   -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0,  -- 设置排序类型, 非 0 值则降序
@strWhere  varchar(1500) = '  -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL   varchar(5000)       -- 主语句
declare @strTmp   varchar(110)        -- 临时变量
declare @strOrder varchar(400)        -- 排序类型
if @doCount != 0
  begin
    if @strWhere !='
    set @strSQL = "select count(*) as Total from [" + @tblName + "] where "+@strWhere
    else
    set @strSQL = "select count(*) as Total from [" + @tblName + "]"
end  
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType != 0
begin
    set @strTmp = "<(select min"
set @strOrder = " order by [" + @fldName +"] desc"
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
    set @strTmp = ">(select max"
    set @strOrder = " order by [" + @fldName +"] asc"
end
if @PageIndex = 1
begin
    if @strWhere != '  
    set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "  from [" + @tblName + "] where " + @strWhere + " " + @strOrder
     else
     set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "  from ["+ @tblName + "] "+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "  from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder
if @strWhere != '
    set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ "  from ["
        + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
        + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " [" + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
        + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder
end 
end   
exec (@strSQL)
GO
endo 16830 2005/8/5 14:29:09
To ajian320:
    跟你谈谈什么叫SQL的执行效率!!!
    按照你的方法:
    1、不用感知控件显示数据情况下:
       取上限执行一次SQL!取下限执行一次SQL!取数据执行一次SQL!
       总共执行3次SQL,而我只要一次!
       执行效率是你的3倍(不考虑执行时间差)!!!
    
    2、用感知控件显示数据情况下:
       执行效率同情况1!
       最严重的问题:你必须先取数据才能取上下限!感知控件的数据是跟着SQL语句执行而变化的!这时你就要另外添加一个数据集来取上下限了!加大程序体积,加重服务器的负担!

    3、你的这种“笨”方法我以前也试过,真的是够TMD的“笨”的!
       而且你去试试,看看上下限好不好控制???
       等你写出程序的时候再说吧!不要老是说空话!!!!!!

    不考虑这些问题的程序员是当不了一个好的程序员的!

    我虽然很笨,但我也懂得什么叫做执行效率!
    我一个应用程序,调用几十张表,只用一个数据集!

    我不敢说我SQL很厉害!但也写过几个存储过程、触发器!

    还有,我一直认为我很笨!真的很笨!很笨!但我之下,必有其人啊!
ajian320 16828 2005/8/5 13:19:08
看来你对SQL一点都不熟,还敢在这里大叫大闹,“如何控制上限和下限???”这也太简单不过呀,你为什么不去想一下呢,其实原理都和你原理差不多,只不过你把“如何控制上限和下限???”放到程序中用了非常“笨”的方法去实现,而在SQL中只需在where语句后处理就行了呀!哎!真丢人呀!!
endo 16762 2005/8/3 13:32:22
To ajian320:
    代码我写的我当然明白!
    【你说你用SQL语句就可以完了的!】
    我想知道你只用SQL语句如何控制上限和下限???
    你自己只用SQL语句写一个分页程序我看看??????
    做得出来我佩服你,做不出来,我会BS你说大话的!
ajian320 16761 2005/8/3 13:27:19
我看过你的代码,你的原理实际上就是用SQL语句从表中选出一定数量的数据并显示,只不过在确定上限和下限时方法不同而已,不知你明白没有?
endo 16743 2005/8/2 10:55:40
To ajian320:
    请赐教,愿闻其详!!!!!!
ajian320 16741 2005/8/2 10:14:09
你这个确实太麻烦了,没有必要这么做,就用SQL语句就可以完了的!
endo 16727 2005/8/1 8:45:08
To shangshang:
    有机会咱好好聊聊!:)

To:kinneng
    如果你懒得看代码,如果你懒得看所有的评论,请请请直接下载!!! 
    DBGrid分页技术源码下载:
    官方下载地址:http://www.uu987.com/MySoft/DBGridDivPage.rar
kinneng 16717 2005/7/31 10:36:30
为什么不用DBGrid
第一页 上一页 下一页 最后页 有 29 条纪录 共2页 1 - 20
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表