我在做一个系统的登录框。窗口上包含如下控件:cmbusername(选择表adminuser中的name)
edtpassWord(用户输入密码)
btnOK(确定)在用户输入用户名和密码后要点击"确定"按钮,确定按钮的目的是在表adminuser中搜索用户名为cmbUserName.text的密码是多少。然后与edtpassword.text中用户输入的密码相比较判断对不对。便写了如下的代码:procedure TfrmLogin.btnOkClick(Sender: TObject);
var
strsql:string;
strPassWord:string;
begin
   if edtPassWord.Text='' then
   MessageBox(handle,'请输入密码','提示',MB_ICONEXCLAMATION)
   else   begin
     strsql:='select  password from adminuser where username=''%s''';
     Query_Login.SQL.Clear;
     Query_Login.SQL.Add(format(strsql,[cmbUserName.text]));
     Query_Login.ExecSQL;
   endend;
我的意思是我怎样才能把sql执行的结果赋值给strPassWord呢???

解决方案 »

  1.   

    begin
         strsql:='select  password from adminuser where username=''%s''';
         Query_Login.close;
         Query_Login.SQL.Clear;
         Query_Login.SQL.Add(format(strsql,[cmbUserName.text]));
         Query_Login.open;//这里必须是open,才会返回值
       end;strPassWord:=Query_Login.fieldbyname('password').asstring;
    这样就可以了
      

  2.   

    呵呵,首先你用的数据库是什么!~~~
    数据库如果用sql 的话呢!~~~
    那么在下面的这段代码中有 需要修改一些地方!~~~
    其实你在登陆的时候最好不要用query,如果用table 那就最好,
    用table 的lookup方法
    代码如下:
    var   key_values :variant ;
     With  Table1 do  
      begin 
            close ;
            TableName :='login';//你的数据库表
            active :=true;
            
            key_values :=Lookup('pass_name',cmbusername.text,'pass-wd');//根据用户
                         //名来查找对应的密码
            if  (key_values =strPassWord.text)
            then showmessage('登陆成功')
            else showmessage('密码错误') 
      end;
      

  3.   

    其实对于这个登陆的问题,我再给你点思路:
    首先 :你应该判断该用户名是否存在 ;用locate 方法
    然后 :你 在用lookup 方法来判断密码是否正确;当然,正如我上面说的那样,如果你的数据库是sql ,
    在数据库中,你定义的密码字段长是多少,那么在 比较返回lookup 返回的密码与输入的密码
    的时候就存在这样一个问题:位数不一致,这样也会提示你密码错误,
    所以这个时候你需要给strPassWord.text中输入的补足不足的位数或删除多余的位数;呵呵,以上就是我做登陆时候的一点心得!~~~记得给我分哦!~~~
      

  4.   

    接cattleman的代码:
         ................
    ......................
         Query_Login.open;
       if not (query1.isempty)  then
             strPassWord:=Query1.fieldbyname('edtpassWord').asstring
       else
             exit;
      

  5.   

    用这种方法最好
         Query_Login.open;
          if not (query1.isempty)  then
        strPassWord:=Query1.fieldvalue['edtpassWord'];//这个是变体类型,能够自动转换
          else
             showmessage('没有找到记录,密码输入错误');