unit RoomLoginForm;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, jpeg, ExtCtrls;type
  TRoomLogin = class(TForm)
    Image1: TImage;
    Label2: TLabel;
    Label3: TLabel;
    Label1: TLabel;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    ADOQuery1: TADOQuery;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    //var
      //rights: interger;
  end;var
  RoomLogin: TRoomLogin;implementation{$R *.dfm}
uses MainForm;procedure TRoomLogin.Button1Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 权限清单 where (权限='''+combobox1.Items[combobox1.ItemIndex]+''')and(员工编号='''+edit1.Text+''') and (密码='''+edit2.Text+''') ');
ADOQuery1.Open;
if ADOQuery1.Eof=false then
  begin
   if ADOquery1['权限']='员工'then
        begin
        Main.N2.Enabled:=false;
        Main.N3.Enabled:=false;
        Main.N12.Enabled:=false;
        main.Show;
        RoomLogin.hide;
        end        {if combobox1.Items[combobox1.ItemIndex]='员工' then
        begin
        //这里的代码是设计关闭"员工"用户不能使用的菜单项
        Main.N2.Enabled:=false;
        Main.N3.Enabled:=false;
        Main.N12.Enabled:=false;
        end;
  main.Show;
  RoomLogin.hide;}  else
  if ADOquery1['权限']='经理'then
        begin        Main.N12.Enabled:=false;
        main.Show;
        RoomLogin.hide;
        end
else
  showmessage('用户名称或密码不正确,请重新输入。');
  Edit1.Clear;
  Edit2.Clear;
end;
end;procedure TRoomLogin.Button2Click(Sender: TObject);
begin
close;
end;end.
这是我的代码,运行可通过,但是输入数据后会“用户名称或密码不正确,请重新输入”。无法登录主窗体,请教高手如何解?

解决方案 »

  1.   

    if ADOQuery1.Eof=false then 
      begin 
       if ADOquery1['权限']='员工'then 
            begin 
            Main.N2.Enabled:=false; 
            Main.N3.Enabled:=false; 
            Main.N12.Enabled:=false; 
            main.Show; 
            RoomLogin.hide; 
            end         {if combobox1.Items[combobox1.ItemIndex]='员工' then 
            begin 
            //这里的代码是设计关闭"员工"用户不能使用的菜单项 
            Main.N2.Enabled:=false; 
            Main.N3.Enabled:=false; 
            Main.N12.Enabled:=false; 
            end; 
      main.Show; 
      RoomLogin.hide;}   else 
      if ADOquery1['权限']='经理'then 
            begin         Main.N12.Enabled:=false; 
            main.Show; 
            RoomLogin.hide; 
            end 
    ADOQuery1.next;  //这里加上这句
      

  2.   

    不能用,加了那句后错的更多了
    Build
      [Error] RoomLoginForm.pas(63): Missing operator or semicolon
      [Error] RoomLoginForm.pas(65): ';' not allowed before 'ELSE'
      [Fatal Error] hotel.dpr(16): Could not compile used unit 'RoomLoginForm.pas'
      

  3.   

    1.ADOQuery1.SQL.Add('select * from 权限清单 where (权限='''+combobox1.Items[combobox1.ItemIndex]+''')and(员工编号='''+edit1.Text+''') and (密码='''+edit2.Text+''') '); 
      改成:ADOQuery1.SQL.Add('select * from 权限清单 where (权限='''+combobox1.Text+''') and (员工编号='''+edit1.Text+''') and (密码='''+edit2.Text+''')'); //注意空格。
    2.if ADOQuery1.Eof=false then  
      改成:if ADOQuery1.RecordCount>0 then ...
      注意:要在该条件语句的最后加上:ADOQuery1.Close;