我有一个用户表,里面有用户名,密码,权限,每个用户对应不同的权限,我的登录的时候已经把权限定义成全局变量了
就是我在登录的时候写了一句代码userpower:=DataModule1.adoquerylogin.fieldbyname('power').value;
我想在单击一个菜单的时候,判断这个用户的权限,在菜单的click事件中执行如下代码:
if userpower='管理员' then
userform.show
else
application.messagebox('对不起,您没有权限','提示',mb_ok);
end;
但是不管登录用户是不是管理员都能出来userform,但是换成下面的
if userpower='管理员' then
application.messagebox('对不起,您没有权限','提示',mb_ok)
else
userform.show;
end;
就不管是不是管理员都会弹出没有权限的提示框,总是执行第一句的,怎么回事

解决方案 »

  1.   

    描述能力不错,很清晰。赞一个我想你困惑的不是解决问题的方法,而是找到“问题所在”的方法把下面这句,加到if语句前面,看一下userpower是不是正确获得了。Showmessage(UserPower);
      

  2.   

    另外,application.messagebox('对不起,您没有权限','提示',mb_ok);这句最后的;似乎有问题。但应该不是因为它。
      

  3.   

    2楼说错了,是end;有问题(多余)。应该不是因为它。
      

  4.   

    userpower:=DataModule1.adoquerylogin.fieldbyname('power').value
    顯示一下userpower的值,看看是否等於‘管理員’,要注意裡面是否包涵了空格的。
      

  5.   

    你数据库相应字段是什么类型的?用的是SQL库么?如果是SQL库而且数据类型是char型的,可能的问题如下:
    你的字段长度是否设置的大于“管理员”,也就是8位。如果大于8位,打个比方来说你设了10位,那么在你输入一个不足10位的
    字符串时系统将用空格自动补位。也就是说“管理员”后面会多出两个空格。
    着这样说来你判断if   userpower='管理员'   then 当然不行。你可以用trim函数(清除字符串两边的空格)来决绝。
    或者将数据类型改成varchat型,这种类型的数据在遇到不足规定长度的字符串时不会用空格补位。不知道我说的请不清楚,祝你能解决问题。