起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 140|回复: 8

【结】数据不正确

[复制链接]
发表于 2009-11-27 12:33:46 | 显示全部楼层 |阅读模式
做个分页时
  Sqls:='select top '+IntToStr(pagesize)+' '+SelectStr+' from '+FromStr+'where '+FdName+' not in(select top '+IntToStr(pagesize*PageCurrent)+' '+FdName+' from '+FromStr+'where '+WhereStr+OrderByStr+')'+'and '+WhereStr+OrderByStr;
  TSQLDataSet(DataSetBroker1.DataSet).Close;
  TSQLDataSet(DataSetBroker1.DataSet).SQL.Text :=Sqls;
  TSQLDataSet(DataSetBroker1.DataSet).Open;

当select top 100 * from BZZLXX where ZLBS not in(select top 72200 ZLBS from BZZLXX where  1=1 order by djh )and  1=1 order by djh
这句在查询分析器与数据集查出来的是93条记录(正确)
可是在DataGRID上表现的这么会是100条记录呢
回复

使用道具 举报

发表于 2009-11-27 12:39:14 | 显示全部楼层
1、“做个分页时”怎么理解这句话,是数据集定义了分步取数据吗?如果是,取消分步取数据,正常吗?如果不是,那是啥意思呢?
2、 select top 100 * from BZZLXX where ZLBS   这句话取出来是多少条呢?
3、select top 72200 ZLBS from BZZLXX   这句话取出来又是多少条呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-27 12:42:22 | 显示全部楼层
1. 是用SQL top N做分页
2.单独的 select top 100 * from BZZLXX  肯定是100条记录啊
3. 取出来的是72200条记录
数据库总记录数是72293条
回复 支持 反对

使用道具 举报

发表于 2009-11-27 13:10:55 | 显示全部楼层
尴尬,那你用Query发这个SQL结果是多少?是93还是100呢?你对比一下看一下哪些不该出来的出来了,应该能找到原因的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-27 13:15:57 | 显示全部楼层
Query也出现同样的情况
同样的语句这么会不同的结果呢
回复 支持 反对

使用道具 举报

发表于 2009-11-27 13:35:39 | 显示全部楼层
楼主,你再检查一下吧。
如果数据集取出来是多少,那么datagrid表现时就是多少。不会出现你1楼的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-30 19:50:30 | 显示全部楼层
现在检查数据又正确了......
请问我用TSQLDataSet(DataSetBroker1.DataSet).SQL.Text :=Sqls;这句来执行个返回数据的存储过程应该没什么问题吧?
回复 支持 反对

使用道具 举报

发表于 2009-11-30 20:54:46 | 显示全部楼层
存储过程返回数据集的请使用平台的存储过程数据集或者TQuery。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-3 11:09:43 | 显示全部楼层
结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 03:02 , Processed in 0.047103 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表