用的是ADO连接SQL,连接没问题.login为登陆窗口,manage为调用窗口.在login中有3个edit,一个button.  manage有两个button. 问题出现在,设置了权限,在login登陆只允许打开其中之一,怎么进入manage后两个按钮都能用了???  login的Button1Click代码如下,请高手指点错误.implementation
uses Formmanage;
{$R *.dfm}procedure Tlogin.Edit1Exit(Sender: TObject);
begin
 adoquery1.Close;
 adoquery1.SQL.Clear;
 adoquery1.SQL.Add('select 姓名 from 用户清单 where 用户编号 ='''+edit1.text+'''');
 adoquery1.Open;
 edit2.Text:=adoquery1.fieldbyname('姓名').AsString;
end;procedure Tlogin.Button1Click(Sender: TObject);
var
 user,pass,temp:string;
begin
 user:=edit2.Text;
 pass:=edit3.Text;
 adoquery1.Close;
 adoquery1.SQL.Text:='select 用户编号 from 用户清单 where 姓名='''+user+'''and 密码='''+pass+'''';
 adoquery1.Open;
 temp:=adoquery1.FieldByName('用户编号').AsString;
 if temp<>'' then
 begin
  manage.Button1.Enabled:=false;
  manage.Button2.Enabled:=false;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''进货单''';
  adoquery1.Open;
  if adoquery1.FieldByName('权限序号').AsString<>'' then
  manage.Show;
  manage.Button1.Enabled:=true;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Text:='select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''销售单''';
  adoquery1.Open;
  if adoquery1.FieldByName('权限序号').AsString<>'' then
  manage.Show;
  manage.Button2.Enabled:=true; end;
end;end.
谢谢~~

解决方案 »

  1.   

    if adoquery1.FieldByName('权限序号').AsString<>'' then
      manage.Show;
      manage.Button1.Enabled:=true;
      manage.Button2.Enabled:=false;
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Text:='select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''销售单''';
      adoquery1.Open;
      if adoquery1.FieldByName('权限序号').AsString<>'' then
      manage.Show;
      manage.Button2.Enabled:=true;
      manage.Button1.Enabled:=false;
      

  2.   

    倘若我的manage窗口中设置了5个button,一个用户有打开三个button的权限,像这样的设置,在每句验证'权限序号'的子句中,只设置一个button可用,几句这样的子句加在一起,那岂不是矛盾了? 我想知道的是在程序中
     ————if temp<>'' then
             begin
              manage.Button1.Enabled:=false;
              manage.Button2.Enabled:=false;
              adoquery1.Close;
              adoquery1.SQL.Clear;
              adoquery1.SQL.Text:='select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''进货单''';————两句manage.Button1.Enabled:=false;manage.Button2.Enabled:=false;——为何不起作用??  
      

  3.   

    以字段值是否为空作为逻辑判断的条件,不保险。
    建议改用“是否存在该条记录”来作为判断条件procedure Tlogin.Button1Click(Sender: TObject);
    var
     user,pass,temp:string;
     count:integer;
    begin
      manage.Button1.Enabled:=false;
      manage.Button2.Enabled:=false;
     user:=edit2.Text;
     pass:=edit3.Text;
     adoquery1.Close;
     adoquery1.SQL.Text:='select count(*),用户编号 as count from 用户清单 where 姓名='''+user+'''and 密码='''+pass+'''';
     adoquery1.Open; if adoquery1['count']=0 then begin showmessage('无此用户!');exit;end;
     
      temp:=adoquery1.FieldByName('用户编号').AsString; 
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Text:='select count(*) as count from 权限清单 where 用户编号='''+temp+'''and 权限名称=''进货单''';
      adoquery1.Open;
      if adoquery1['count']>0 then
      manage.Button1.Enabled:=true;
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Text:='select count(*) as count from 权限清单 where 用户编号='''+temp+'''and 权限名称=''销售单''';
      adoquery1.Open;
      if adoquery1['count']>0 then
      manage.Button2.Enabled:=true;  manage.Show;
    end;