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

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;

请问大侠,如何改正这个错误?
...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧