ADOQUEYR如何根据条件显示部分结果???(50分)

  • 主题发起人 主题发起人 细数落花
  • 开始时间 开始时间

细数落花

Unregistered / Unconfirmed
GUEST, unregistred user!
使用ADOQUERY+ACCESS,用DBGRID显示查询结果,但不需要全部显示,在查询前由用户指定起始记录,作为查询的一个条件,如:
单位:A
记录号:10
即查询数据库中单位为A的记录,并且从结果的第十条记录起开始显示,
请教,这样如何实现??
 
假设
1、你有一个索引字段B(这样的查询需要索引字段,而且需要是不重复的值)
2、你的表名称是DD
下面的语句返回单位是A的第10条记录
select top 1 * from DD where (单位='A')and( B not in (select top 9 B from DD where 单位='A'))
 
SELECT * FROM 表名 WHERE 单位 LIKE 'A%' AND ROWNUM<10;
 
select * from ( select * from 表名 where 单位="A")a where a.记录号 >= 10
 
可能我表述的有误,解释如下:
1、我不是要显示第十条记录,而是要显示从第十条开始以后的所有记录。
2、从第几条开始显示,是作为一个输入条件的(用edit2输入),只要大小在查询结果的记录数以内就行。
3、我的库里并没有“记录号”这个字段,记录号是对动态查询结果排列的顺序号(流水号),要动态产生的。
单位用edit1输入,按Johnny_du的指教,代码如下:
procedure TfindForm.Button1Click(Sender: TObject);
var
cx1:string;
cx2:integer;
begin
cx1:=trim(edit1.Text);
cx2:=strtoint(edit2.Text);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM kyaj WHERE 单位=:bb AND ROWNUM>=:aa');
ADOQuery1.Parameters.ParamByName('bb').Value:=cx1;
ADOQuery1.Parameters.ParamByName('AA').Value:=cx;
ADOQuery1.open;
end;
执行出错:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message '至少一个参数没有被指定值。'. Process stopped. Use Step or Run to continue.
---------------------------
请大家帮忙查错,是不是rownum不是这样用的?
 
access数据库不能使用rownum ,你可能只有使用我那样。
 
to zywcd:
“编号”为惟一索引字段,用你的方法成功显示第六条以后的所有记录;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from table where (编号 not in (select top 5 编号 from table where 单位=''162'')) and 单位=''162'' ');
ADOQuery1.open;
但我不知道该如何加入变量,将单位‘162‘改成变量edit1.text,就是空记录了,请指教!!
edit1输入单位号,edit2输入想显示的起始顺序号。
 
ADOQuery1.SQL.Add('select * from table where (编号 not in (select top '+ edit2.text+ ' 编号 from table where 单位='''+edit1.text +''')) and 单位='''+ edit1.text+''' ');
 
to zywcd:
搞定了,谢谢,只是初学,还不明白为什么edit2要加一对引号,而edit1加三对引号?
真晕,加错分了,加到别人上面了,怎么办??怎么再把分拿回来加给你呢?
 
to Johnny_du大富翁:
本想你俩一人分一点,可不小心点错了。zywcd帮我解决了大部分的问题,不能不给分的。俺这里可是赤贫啊,就剩下一点点分来问问题了,能不能把分还给我啊?Johnny_du大富翁?
 
编号是数字类型,单位是文本类型,这个就是差异,
分没关系,问题处理了就好。我也不缺。
 

Similar threads

回复
0
查看
832
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
941
DelphiTeacher的专栏
D
D
回复
0
查看
850
DelphiTeacher的专栏
D
后退
顶部