我用ADO+Access做了个图书管理系统,实现了图书馆的部分功能。现在我想做个对他进行用户登陆管理的的页面。是管理员的话可以做用户管理和查询,图书管理和查询,借书管理和查询。是查询员的话只能对他进行查询。数据库我是这样设计的,建了个right表,里面有user,password,right。可是我现在不知道怎样对数据库进行操作。。高手请指教。

解决方案 »

  1.   

    动态生产啊。
    对于不同权限的人就生产不同的功能。
    更烂的方法是放个pagecontrol
    做两个tabsheet,一个是普通用户用的,一个是管理员用的
    根据权限把其中一个隐藏调~~~嘿嘿行了
      

  2.   

    是哦!!这个我明白呀!可是代码我不知道怎么编呀??
    我的方法是unit login;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TloginForm = class(TForm)
        GroupBox1: TGroupBox;
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        Button2: TButton;
        Label1: TLabel;
        Label2: TLabel;
        ComboBox1: TComboBox;
        procedure RadioButton1Click(Sender: TObject);
        procedure RadioButton2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      loginForm: TloginForm;
      logname,pwd:string;
      right:integer;
      MyPath:String;const
      MyPassW='123456';
    implementationuses DataModule, Main;{$R *.dfm}procedure TloginForm.RadioButton1Click(Sender: TObject);
    begin
       edit1.Text:='';
       edit2.Text:='';
    end;procedure TloginForm.RadioButton2Click(Sender: TObject);
    begin
       edit1.Text:='';
       edit2.Text:='';
    end;procedure TloginForm.Button1Click(Sender: TObject);
    var
      flag:boolean;
    begin
      flag:=false;
      logname:= edit1.Text;
      pwd:= edit2.Text;
      right:=combobox1.ItemIndex;
           DataModuleAdo.ADOTable1.Connection:=DataModuleAdo.ADOConnection1;
           DataModuleAdo.ADOTable1.TableName:='right';
           DataModuleAdo.ADOTable1.Open;
           DataModuleAdo.ADOTable1.First;
           while not DataModuleAdo.ADOTable1.Eof do
           begin
               if (logname=DataModuleAdo.ADOTable1.Fields[0].AsString) and
                   (pwd=DataModuleAdo.ADOTable1.Fields[1].AsString) and
                   (right=DataModuleAdo.ADOTable1.Fields[2].AsInteger) then
                   flag:=true;
                   DataModuleAdo.ADOTable1.Next;
           end;
           if flag then
           begin
               mainform.Show;
               DataModuleAdo.ADOTable1.Open;
               if right=0 then
               begin
                   mainform.BitBtn1.Enabled:=true;
                   mainform.BitBtn2.Enabled:=true;
                   mainform.BitBtn3.Enabled:=true;
                   mainform.BitBtn5.Enabled:=true;
                   mainform.BitBtn6.Enabled:=true;
                   mainform.BitBtn7.Enabled:=true;
               end;
               if right=1 then
               begin
               mainform.BitBtn1.Enabled:=false;
               mainform.BitBtn2.Enabled:=false;
               mainform.BitBtn3.Enabled:=false;
               mainform.BitBtn5.Enabled:=true;
               mainform.BitBtn6.Enabled:=true;
               mainform.BitBtn7.Enabled:=true;
               end;
           end else
           showmessage('输入错误,请重输!');
    end;procedure TloginForm.FormCreate(Sender: TObject);
    begin
     MyPath:=ExtractFilePath(ParamStr(0));
     ShortDateFormat:='yyyy/mm/dd';
    end;end.
    可是说我的 SQL语句出错。真郁闷!!
      

  3.   

    登录后,根据各人的权限控制菜单的Enabled就可以了。
      

  4.   

    读right表,如果是管理员,则让其对应的菜单项为Enable,否则Disable,对在登录前,对菜单进行限制,这方面的资料很多。你再找一找
      

  5.   

    to --->mfjun007(若冰) 怎么读呀!!具体怎么写,为什么我的
           while not DataModuleAdo.ADOTable1.Eof do
           begin
               if (logname=DataModuleAdo.ADOTable1.Fields[0].AsString) and
                   (pwd=DataModuleAdo.ADOTable1.Fields[1].AsString) and
                   (right=DataModuleAdo.ADOTable1.Fields[2].AsInteger) then
                   flag:=true;
                   DataModuleAdo.ADOTable1.Next;
           end;不行??
      

  6.   

    写一个函数,传入该登陆员的工号和权限号进行判断,返回bool就可以了
      

  7.   

    to--->txmjs(天地之间);谢谢了!!我的信箱是[email protected]
      

  8.   

    to--->evilks(傲野) :还 没呢!!一点思路都没有!!你 能发份给我啊!!谢谢了!
                        
                                    [email protected]
                                    [email protected]
      

  9.   

    对菜单的Name进行编辑,然后把它们存到数据库里面,可用表(菜单id,菜单名称)P_rightbase(p_no,p_name),然后建一张表(用户id,是否具有权限,菜单id)P_right(userid,p_right,p_no)来保存用户的权限。然后创建一个存储过程;//sourceid根据你的需要可加也可以不要
    CREATE PROCEDURE SP_RIGHT
    @userid char(6),@sourceid char(10)
    AS
    begin transactioninsert into p_right(sourceid,p_no,p_right,userid)
    select sourceid,p_no,'否',@userid from p_rightbase where (sourceid=@sourceid) and 
    (p_no not in (select distinct p_no from p_right where (sourceid=@sourceid) and (userid=@userid)))
    if @@error<>0
    begin
       rollback transaction
       return -101
    endcommit transaction
    return 0
    GO
    在前端,做一个设置权限的功能。然后进入系统时,做一个过程判断是否具有权限否则使菜单不可用。就搞定了。