我用的SQL Server2000做数据库,权限问题一直困扰我这个新手,参考了几个系统,可是似乎权限也没有设置好,登录系统进去后任何级别的用户都能进行管理员一样的操作。是不是要在登录界面先设置好权限连接数据库,然后进入主界面后对个相应要设置的地方再附加权限限制?请各位高手指教。最好能给一些源代码说明下

解决方案 »

  1.   

    系统权限已经被弄的很透彻了,根据用户名、用户等级、等级所对应的功能,3层组成。表结构你知道的吧,另外还需要在系统的每一个按钮的CLICK事件中,去验证是否用户有权限使用此功能。或者你需要使用一些其他的风格设计,比如:低级别的用户无法看到高级别用户一样的界面,根据用户等级的不同进行界面的布局,则需要你在FORMLOAD中自己定义这个控件的位置和大小。基本的伪代码给你些吧。
    BTNCLICK
    BEGIN
      IF FUNC_CHECKUSER(USERNAME) THEN
      BEGIN
        ....
      END
      ELSE
      BEGIN
        SHOEMESSAGE('1111');
        EXIT;
      END;
    END;FORMLOAD
    BEGIN
      IF FUNC_CHECKUSER(USERNAME) THEN
      BEGIN
        BTN1.VISIBLE := TRUE;
        BTN1.ALIGN := RLRIGHT;
        BTN1.CAPTION := '111';
      END
      ELSE
      BEGIN
        BTN1.VISIBLE := FALSE;
        BTN.CAPTION := '';
        BTN.ENABLE := FALSE;
        EXIT;
      END;
    END;
      

  2.   

    我现在做的数据库连接都是每个Form都得做一个,我看别人的可以全部放到一个页面上,我就新建了个Data Module,可是放进去的ADOConnection和ADOQuery怎么与数据库中的表连接上,ADOConnection我已经在Connection String那里测试连接数据库成功了的,ADOQuery的Connection我也与ADOConnection连接上,为什么还是没反应,是不是少了什么步骤了?
      

  3.   

    把數據庫控件全放到 data module裡,設置好adoconnection,adoquery的屬性。
    然後在其它單元裡引用data module就好了。
    with frm_data.adoquery1 do
      begin
        close;
        sql.clear;
        sql.add(sql);
        open;
      end;
      

  4.   

    还有一种方法,也可以试试,对于数据库的可能有用.对于每一个表的操作,基本上,也就是:查看,新增,修改,删除.如果他们分别对应的权限是:1,2,4,8. 那么我们就可以设置一个权限表了,
    UserID, TableID, Power, 分别对应,用户编号,表名,权限,根据用护有对某个表的权限值(如:001,tb1,7),那么,它对tb1这个表,只能查看,新增,修改,而不能删除.
    当然,你可以做得更细一些,比如,导出数据,打印数据,对于操作流程上的权限,采用分用户组管理,可能会好一些,毕竟上面的只是针对数据表的权限管理.
      

  5.   

    非常感谢楼上各位的执教,我这些天都是刚学习Delphi,所以很多菜鸟问题