我用ADO+Access做了个图书管理系统,实现了图书馆的部分功能。现在我想做个对他进行用户登陆管理的的页面。是管理员的话可以做用户管理和查询,图书管理和查询,借书管理和查询。是查询员的话只能对他进行查询。数据库我是这样设计的,建了个right表,里面有user,password,right。可是我现在不知道怎样对数据库进行操作。。高手请指教。
解决方案 »
- Meno扫描每增加一行后触发方法.
- ExtractFilePath() 在繁体系统中获得的路径是乱码?
- sqlserver客户端的访问问题?
- 用DELPHI怎样关闭一个指定的端口?
- delphi生成文件
- 谁知道那里有Ehlib带财务凭证线的下载地址呀?
- 请问如何控制另外一个程序的控件的属性(100分求教,不够再加)
- 只是用ADOCOMMAND+ADOQUERY完成添加记录的工作,很简单的
- interbase的打包问题
- 怎样在dbgrid里选一个字段使其值自动弹到edit里????
- 请问如何在DELPHI中实现SQL-SERVER备份的数据倒入功能
- 请教DELPHI7中FLOAT型数据四舍五入的问题! 在线等待!
对于不同权限的人就生产不同的功能。
更烂的方法是放个pagecontrol
做两个tabsheet,一个是普通用户用的,一个是管理员用的
根据权限把其中一个隐藏调~~~嘿嘿行了
我的方法是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语句出错。真郁闷!!
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;不行??
[email protected]
[email protected]
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
在前端,做一个设置权限的功能。然后进入系统时,做一个过程判断是否具有权限否则使菜单不可用。就搞定了。