如何取得当前记录的下一条记录?

vingo1983 2004-12-21 08:13:01
数据库test表中只有一个字段id,varchar类型,里面有9条记录1,2,3,4,5,6,7,8,9。按顺序排列。如果取得当前记录为4,如何取得下一条记录?也就是5。

我用select * from test where id in (select min(id) from test where id>'4')能取得下一条记录5,但是把里面的'4'换成参数,就报错,错误为‘不能比较或排序text,ntext,image数据类型,除非使用is null或like运算符。’

代码为
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from test where id in (select max(id) from test where id<:pid)');
ADOQuery1.Parameters.ParamByName('pid').value :=dbedit1.text;//dbedit1.text为上一次取出的记录4
ADOQuery1.Open;

请问大侠,如何改正这个错误?
...全文
54 点赞 收藏 3
写回复
3 条回复
vingo1983 2004年12月21日
我另加了一个edit1,把dbedit1.text改成edit1.text又可以了。
我原来是把第一次查询的结果'4',显示在dbedit1.text,然后第二次查询调用dbedit1.text中的数据,结果也显示在dbedit1.text中,可是显示出来却是空白,这是怎么回事啊。
回复 点赞
vingo1983 2004年12月21日
to soundbug(兼职乞丐)
你给的方法只适合程序内给定参数。
我把tmpid := '4'; 这句换成了tmpid := dbedit1.text;
错误是不报了,可是结果是空的,没有显示。
我怀疑是不是比较时类型不一致的缘故。
回复 点赞
soundbug 2004年12月21日
var
tmpid: string;// 参数
-----
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
tmpid := '4';
ADOQuery1.SQL.Add('select * from test where id in (select max(id) from test where id<'''+tmpid+''')');
ADOQuery1.Open;
回复 点赞
发动态
发帖子
数据库相关
创建于2007-08-02

1209

社区成员

8.8w+

社区内容

Delphi 数据库相关
社区公告
暂无公告