delphi5下用SQL查询paradox表,符合条件的记录太多,什么SQL语句能只显示一部分符合条件的记录(100分)

  • 主题发起人 主题发起人 mrzj
  • 开始时间 开始时间
M

mrzj

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi5下用SQL查询paradox表
select * from XX.DB
将把XX.DB表中的所有记录都列出来了,

但是如果XX.DB中的记录有上万条,而我只
想列出第10条至第21条的记录,怎么办呢?

我想在paradox表里做查询,这个表很大,做完查询后符合条件的记录
可能有几百条,我想每次只让客户看10条,怎么办呢?

是不是只有生成一个临时表才能解决。
 
在SQL中用"Select Top n"或"Select Top n Percent"行不行?
在SQL Server 7中能行
 
procedure TForm13.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=(Table1.RecNo >=10) and (Table1.RecNo <=21);
end;
 
我刚解决这个问题:
先建立一个表的索引值ID
当前页面上放一个text或是别的什么控件,用它记录当前的页面的页数。
当显示下一页时可获取这个值用于确定下一页要显示的一个索引值。
如每页显示20条。而当前页的该值为n则下一页要显示的记录为
select * from table where id>=20*n and id<=20*(n+1)
具体n由你来定当然n 是一个变量。
我是用在CGI中不知你是用在什么方面的程序?
不明白的我可再给你说。
 
1. 几百条记录的表不算多,可以用 select * from xx 即可
2. 如果要查的表很少修改,可以用 爱情鸟的方法,增加字段,表明该记录的位置
3. 对于真正很大的表(几万条记录),可以用 TClientDataSet ,每次只从 Server
端返回用户所需要看到的记录, 但这只是对 c/s 开发来说
4. Paradox 数据表不支持只返回 "top 10"这样的查询语句
 
谢谢chimney、爱情鸟帮我解答问题

我是用过滤的方法解决的问题。没有用SQL查询语句。

回爱情鸟:
如用你的方法会遇过这样一个问题,如果有100个用户,
它们的ID号从1-100按顺序排列,但是如果日后因某种需
要删除了其中的一些用户,这样ID序号就不连续,用你的
方法就做不到每页固定显示N个了。

我想过怎么解决,按我想法应该也能实现上面的功能,
但是没编程实现。
就是动态生成一个临时表,这个表保存select的查询结
果,每页显示固定N个的信息从这个临时表里取。但这个
临时表的删除是个问题,得需在软件里编过功能删除它。
 
后退
顶部