高手们求教呀!!!
  我用delphi7做了一个登入界面,基本逻辑是,将输入的ID与密码跟SQL数据表中的ID和密码比对,若与SQL中的相等即可登入,否则不能登入。大妈如下,运行结果直接跳过了if,执行else ,代码是没有问题的。请高手们指点一下。感谢!!procedure TForm1.Button1Click(Sender: TObject);
var
i:String;beginadoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select password from user_table');
adoquery1.SQL.Add('where ID='''+edit1.text+'''');
adoquery1.Open;
Showmessage(adoQuery1.FieldByName('password').AsString);i:=adoQuery1.FieldByName('password').AsString;showmessage(i);
if(edit2.Text = i) then
form2.showelse showmessage('你的密码有误!');
end;
  

解决方案 »

  1.   

    加上Trim(edit2.Text),或许是有空格引起的。今天真头疼。
      

  2.   

    代码没问题能不正确执行吗?
    你弄的这个登录代码很乱,一般书上不是这样弄的。
    应该是这样:
    select * from user_table
    where (id=:id) and (mm=:mm)
    参数id:=edit1.text;
    参数mm:=edit2.text;
    open;
    if adoquery1的总记录数=1 then
    form2.show
    else
      密码有误码;
    (因没打开delphi,所以有些东西不会写。另外还应该判断edit1是否为空等情况。)
      

  3.   

    這樣些雖然不是最好的,但也沒錯
    showmessage(edit2.Text);仔細對比看,肯定與i不同
      

  4.   


    正确。你可两个都加上trim().
      

  5.   


    多谢多谢!!都加上Trim()后。问题解决了!!!再请教一下,Trim()是起什么作用的??
      

  6.   

    将这行代码
    if(edit2.Text = i) 
    修改成如下试试
    if(trim(edit2.Text) = trim(i)) 
      

  7.   

    trim为去掉字符串两边的空格
    比如:
    s := ' abc ' //注意前面有空格,后面没有
    用trim(s)后s的值等于'abc'