不好意思,我刚学delphi,向各位请教一个简单的问题,我做一个登录窗口,用了adoquery组件,它的sql属性我写了select * from users 
确定按钮代码如下
implementation
uses unit2;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var strid,strpwd:string;
begin
strid:=edit1.Text;
strpwd:=edit2.text;
begin
with adoquery1 do
ADOQuery1.close; 
ADOQuery1.sql.clear; 
ADOQuery1.sql.add( 'select * from users where id=:strid and pwd=:strpwd');
ADOQuery1.open;
if   ADOQuery1.recordcount=0  then
begin   
showmessage('密码错误');
end 
else
begin
  form2.show; 
  self.hide; 
end; 
end;
 end;
end.
老是提示密码错误,我猜想应该是sql语句那里有问题,所以我把where语句删掉试了一下,就可以了,请教一下各位是哪里出问题呀,adoquery组件的sql语句有没有问题呀,希望大家帮帮我这个新手

解决方案 »

  1.   

    with   adoquery1   do
    ADOQuery1.close;  
    ADOQuery1.sql.clear;  
    ADOQuery1.sql.add(   'select   *   from   users   where   id=:strid   and   pwd=:strpwd');
    ADOQuery1.open;
    if       ADOQuery1.recordcount=0     then
    //既然用了with adoquery1 do,到下面end之前的代码里就不用再写adoquery1.close;直接close;就可以了;
      

  2.   

    看看with的用法,在end之前的adoquery1.都不要写,直接用他的事件函数
      

  3.   

    ADOQuery1.sql.add(   'select   *   from   users   where   id=:strid   and   pwd=:strpwd'); 
    //此处strid和strpwd被当作参数,需要在执行语句前赋值;可以用下面的方法赋值;
    adoquery1.ParamByName('strid').asString := edit1.Text;
    adoquery1.ParamByName('strpwd').AsString := edit2.text; 
      

  4.   

    luxuewei5214 的正确,你定义了参数,但没有赋值,给参数赋完值你再open
      

  5.   

    四楼的正解
    要不改成
    ADOQuery1.sql.add('select * from   users   where   id=:strid   and   pwd= '''+strpwd+''' '); 
      

  6.   

    按四楼的也不行呀,有错误,它说
    undeclared identifier:'parambyname'
    missing operator semicolon
    都是在adoquery1.ParamByName('strid').asString   :=   edit1.Text; 
    adoquery1.ParamByName('strpwd').AsString   :=   edit2.text; 错的,是不是要在哪里先定义参数呀,各位莫怪,我实在是初学,书上又找不到答案,只能求助各位
      

  7.   

    我把这个self.hide;改成form1.close一打开主窗口后就立刻关闭了,应该就是一关闭登录窗口就会把整个程序关掉,这个怎么回事呀
      

  8.   

    Form1.hide;
    form2.show;
    Form1.close;   
          
      

  9.   

    adoquery1.parameters.ParamByName('strid').value := edit1.text
    ado控件应该这样,四楼的少写了parameters呵