查询最后几条记录,望高手指点(50分)

  • 主题发起人 主题发起人 tianlove
  • 开始时间 开始时间
T

tianlove

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.BitBtn3Click(Sender: TObject);
var
N:integer;
begin
N:=strtoint(Edit3.Text);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select top N * from tj order by bian desc');
ADOQuery1.open;
end;
这样写有问题么?把N换成数字就没有错误,如果改成如上所示就报错:SELECT子句中包含一个保留字、拼写错误或丢失参数、或标点符号不正确!
为什么会出现这种问题?我想自己输入查询的行数,怎么写?
 
var
N:string;
...
ADOQuery1.SQL.Add('select top ' + N + ' * from tj order by bian desc');
 
哈哈,大哥,你的这个sql语句里面的n还是字母N啊,这样写
var
sql:string;


sql := 'select top '+inttostr(N)+' * from tj order by bian desc';

adoquery1.sql.text := sql;
 
procedure TForm1.BitBtn3Click(Sender: TObject);
var
N:integer;
begin
N:=strtoint(Edit3.Text);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select top :N * from tj order by bian desc');
ADOQuery1.Parameters.ParamByName('N').asinteger:=n;
ADOQuery1.open;
end;
 
简单点:
改成
ADOQuery1.SQL.Add('select top '+Edit3.Text+' * from tj order by bian desc');
 
谢谢 各位!!问题解决了
 
top 后就是跟数字的,你跟个N当然要出错。
如果你想用参数的话可以参照socid的方法,也可以直接用@N
 
后退
顶部