procedure Tform7.Button1Click(Sender: TObject);
begin
  if(edit1.Text='') then
     showmessage('请输入用户名!')
  else                                
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from hyuser where uname=:a,hypwd=:d');
    query1.Params[0].Value:=edit1.Text;
    query1.Params[1].Value:=edit2.Text;
    query1.Open;    if query1.RecordCount<>0 then
       fm_main.Show
    else
        messagedlg('用户名或密码错误!',mterror,[mbOK],0)end;
uname,hypwd 都为字符型,编译通过,可运行是提示:invalid use of keyword,token:,hypws=?

解决方案 »

  1.   

    如果hypws为空就会出现这个错误,改正的办法是
        query1.Close;
        query1.SQL.Clear;
        query1.SQL.Add('select * from hyuser where uname=:a,hypwd=:d');
        query1.Params[0].Value:=edit1.Text;
        if edit2.Text<>'' then 
          query1.Params[1].Value:=edit2.Text
        else
          query1.Params[1].Value:=''''+'''';//否则应该是两个引号  
        query1.Open;
      

  2.   

    query1.SQL.Add('select * from hyuser where uname=:a,hypwd=:d');uname=:a,hypwd=:d'条件之间不用and吗?
    一个小小的建议:if(edit1.Text='') then
      begin
       showmessage('请输入用户名!');
        edit1.setfocus;
     end;  
    呵呵~~
      

  3.   

    Sql语句问题:
    query1.SQL.Add('select * from hyuser where uname=:a,hypwd=:d');
    改为:
    query1.SQL.Add('select * from hyuser where uname=:a and hypwd=:d');
    即可.
      

  4.   

    query1.Close;
        query1.SQL.Clear;
        query1.SQL.Add('select * from hyuser where uname=:a,hypwd=:d');
        query1.open;
        query1.edit;
        query1.Params[0].Value:=edit1.Text;
        query1.Params[1].Value:=edit2.Text;
        query1.post;
      

  5.   

    樓上的這是什麼搞法呀。
    query1.SQL.Add('select * from hyuser where uname=:a,hypwd=:d');//這句錯
    query1.SQL.Add('select * from hyuser where uname=:a and hypwd=:d');//改為