form1上放置了dblookupcombobox1,edit1,adodataset1,以及datasource1组件,dblookupcombobox放置数据库users表中user_name字段的字,按登陆按钮后,如edit1输入的内容等于user_name字段值对应的password字段值时则登陆成功,下面语句不知错在哪里?请帮助!!多谢
代码:procedure Tfrm_login.FormCreate(Sender: TObject);
begin
      ADODataSet1.Close;
   ADODataSet1.CommandText:='select * from users';
   ADODataSet1.Active:=true;
   // DBComboBox1.DataField:='user_name';
     DBLookupComboBox1.KeyField:='user_name';
     dblookupcombobox1.ListField:='user_name';procedure Tfrm_login.Button1Click(Sender: TObject);
 begin
  if edit2.Text='' then
     showmessage('please input username')
  else
    begin
      ADODataSet1.CommandText:='select * from users where (user_name= DBLookupComboBox1.keyfield) and (password=:edit2)';
    if adodataset1.eof    then
      showmessage('admin or password wrong!')    
    else
        form1.Visible:=False;
        form2.ShowModal;
    end;
  end;
end;敬请改正!多谢

解决方案 »

  1.   

    ADODataSet1.CommandText:='select * from users where (user_name= DBLookupComboBox1.keyfield) and (password=:edit2)';
      if adodataset1.eof then
      showmessage('admin or password wrong!')   
      else
      form1.Visible:=False;
    改成
    ADODataSet1.CommandText:='select * from users where (user_name=:user_name) and (password=:edit2)';
    ADODataSet1.Parameters.ParamByName('user_name').Valuse := DBLookupComboBox1.keyfield;
    ADODataSet1.Parameters.ParamByName('password').Valuse := edit2.Text;
    ADODataSet1.Open  if adodataset1.eof then
      showmessage('admin or password wrong!')   
      else
      form1.Visible:=False;你好几句语法都错了