📄 ufrm_user_1.pas
字号:
// ***************************************
// * Program name :ufrm_user_1 *
// * AUTHOR :Guo xuliang *
// * Name :郭许良 *
// * Date :2005/05/18 *
// * Porgram type :主程序 *
// ***************************************
{
Permission code:
A:ADD_group
U:UPDATE_group
D:DELETE_group
1:ADD_user
2:UPDATE_user
3:DELETE_user
4:Assign authorization
5:Delete authorization
6:Update authorization
//Attentation please
需要搭配 trigger 一起使用
FOR ORACLE
=================================================================================
1.
CREATE OR REPLACE TRIGGER DEL_ZC BEFORE DELETE ON ZC_FILE FOR EACH ROW
BEGIN
DELETE FROM ZE_FILE WHERE ZE01 IN (SELECT ZD02 FROM ZD_FILE WHERE ZD01=:old.zc01);
DELETE FROM ZD_FILE WHERE ZD01=:old.zc01;
DELETE FROM ZE_FILE WHERE ZE01=:old.zc01;
END;
2.
CREATE OR REPLACE TRIGGER UPD_ZC AFTER UPDATE ON ZC_FILE FOR EACH ROW
BEGIN
IF :new.ZC01<>:old.ZC01 THEN
UPDATE ZD_FILE SET ZD01=:new.ZC01 WHERE ZD01=:old.ZC01;
UPDATE ZE_FILE SET ZE01=:new.ZC01 WHERE ZE01=:old.ZC01;
END IF;
END;
3.
CREATE OR REPLACE TRIGGER DEL_ZD BEFORE DELETE ON ZD_FILE FOR EACH ROW
BEGIN
DELETE FROM ZE_FILE WHERE ZE01=:old.ZD02;
END;
4.
CREATE OR REPLACE TRIGGER UPD_ZD AFTER UPDATE ON ZD_FILE FOR EACH ROW
BEGIN
IF :new.ZD02<>:old.ZD02 THEN
UPDATE ZE_FILE SET ZE01=:new.ZD02 WHERE ZE01=:old.ZD02;
END IF;
END;
FOR SQLSERVER
=================================================================================
=================================================================================
}
unit ufrm_user_1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, ToolWin, ImgList, ExtCtrls, dxExEdtr, dxCntner,
dxTL, Buttons, dxDBCtrl, dxDBGrid, DB, ADODB, StdCtrls, Grids, DBGrids,
DBTables,ufrm_level1;
type
//Tfrm_user_1 = class(TForm)
Tfrm_user_1 = class(Tfrm_level1)
MainMenu1: TMainMenu;
N1: TMenuItem;
U1: TMenuItem;
R1: TMenuItem;
Exit1: TMenuItem;
ImageList1: TImageList;
A1: TMenuItem;
U2: TMenuItem;
N2: TMenuItem;
D1: TMenuItem;
A2: TMenuItem;
U3: TMenuItem;
N3: TMenuItem;
D2: TMenuItem;
A3: TMenuItem;
U4: TMenuItem;
N4: TMenuItem;
D3: TMenuItem;
CoolBar1: TCoolBar;
add_group: TSpeedButton;
edit_group: TSpeedButton;
delete_group: TSpeedButton;
add_user: TSpeedButton;
edit_user: TSpeedButton;
delete_user: TSpeedButton;
StatusBar: TStatusBar;
assign_authorization: TSpeedButton;
edit_authorization: TSpeedButton;
delete_authorization: TSpeedButton;
DataSource1: TDataSource;
ImageList2: TImageList;
View1: TMenuItem;
Fullexpand1: TMenuItem;
FullCollapse1: TMenuItem;
TreeView1: TTreeView;
Splitter1: TSplitter;
DBGrid1: TDBGrid;
PopupMenu1: TPopupMenu;
PopupMenu2: TPopupMenu;
Addgroup1: TMenuItem;
Editgroup1: TMenuItem;
Deletegroup1: TMenuItem;
N5: TMenuItem;
Adduser1: TMenuItem;
Edituser1: TMenuItem;
Deleteuser1: TMenuItem;
Assignauthorization1: TMenuItem;
Editauthorization1: TMenuItem;
Deleteauthorization1: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
ado_pub1: TQuery;
ado_pub2: TQuery;
md_file: TQuery;
md_fileZE01: TStringField;
md_fileZE02: TStringField;
md_fileZE03: TStringField;
md_filePermission: TStringField;
md_fileprog_desc: TStringField;
Tb_exit: TSpeedButton;
procedure Exit1Click(Sender: TObject);
procedure md_file1CalcFields(DataSet: TDataSet);
procedure Fullexpand1Click(Sender: TObject);
procedure FullCollapse1Click(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure add_groupClick(Sender: TObject);
procedure edit_groupClick(Sender: TObject);
procedure delete_groupClick(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure add_userClick(Sender: TObject);
procedure edit_userClick(Sender: TObject);
procedure delete_userClick(Sender: TObject);
procedure edit_authorizationClick(Sender: TObject);
procedure assign_authorizationClick(Sender: TObject);
procedure delete_authorizationClick(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure U2Click(Sender: TObject);
procedure D1Click(Sender: TObject);
procedure A2Click(Sender: TObject);
procedure U3Click(Sender: TObject);
procedure D2Click(Sender: TObject);
procedure A3Click(Sender: TObject);
procedure U4Click(Sender: TObject);
procedure D3Click(Sender: TObject);
procedure Addgroup1Click(Sender: TObject);
procedure Editgroup1Click(Sender: TObject);
procedure Deletegroup1Click(Sender: TObject);
procedure Adduser1Click(Sender: TObject);
procedure Edituser1Click(Sender: TObject);
procedure Deleteuser1Click(Sender: TObject);
procedure Assignauthorization1Click(Sender: TObject);
procedure Editauthorization1Click(Sender: TObject);
procedure Deleteauthorization1Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure TreeView1DblClick(Sender: TObject);
procedure Tb_exitClick(Sender: TObject);
private
{ Private declarations }
g_md01,g_md02:string;
u_prog:string; //Program code
u_user_permission:string; //User permission
u_group_permission:string; //Group permission
//sql string
u_sqlstr:string; //Public sql string
public
{ Public declarations }
Procedure init;
Procedure show_stus;
Procedure refresh_md(key_str:string);
//permission control function
function au_init(p_prog:string):boolean;
function cl_prichk(p_code:string):boolean;
end;
var
frm_user_1: Tfrm_user_1;
implementation
uses ufrm_user_group1,udm,ufrm_user_maintain, ufrm_authorization,
uglobal_var,uglobal_fun;
{$R *.dfm}
function Tfrm_user_1.au_init(p_prog:string):boolean;
var l_flag1,l_flag2:boolean;
begin
u_prog:=p_prog;
u_user_permission:='';
u_user_permission:='';
result:=true;
l_flag1:=true;
l_flag2:=true;
with dm do
begin
pub1.Close;
pub1.sql.Clear;
u_sqlstr:='SELECT * FROM ZE_FILE WHERE ZE01='''+g_user+''''
+' AND ZE02='''+p_prog+'''';
pub1.SQL.Add(u_sqlstr);
pub1.Open;
if pub1.Bof and pub1.Eof then
l_flag1:=false
else
u_user_permission:=pub1.fieldbyname('ZE03').AsString;
pub1.Close;
pub1.SQL.Clear;
u_sqlstr:='SELECT * FROM ZE_FILE WHERE ZE01='''+g_grup+''''
+' AND ZE02='''+p_prog+'''';
pub1.SQL.Add(u_sqlstr);
pub1.Open;
if pub1.Eof and pub1.Bof then
l_flag2:=false
else
u_group_permission:=pub1.fieldbyname('ZE03').AsString;
result:=l_flag1 or l_flag2;
end;
if trim(g_user)='admin' then result:=true;
end;
function Tfrm_user_1.cl_prichk(p_code:string):boolean;
begin
result:=false;
if pos(p_code,u_user_permission)>0 then result:=true;
if pos(p_code,u_group_permission)>0 then result:=true;
if trim(g_user)='admin' then result:=true;
end;
//in here we will fill the treeview
Procedure Tfrm_user_1.init;
var node,node2:Ttreenode;
node_str:string;
begin
//change dataconnection
//clear all node
node:=treeview1.Items.GetFirstNode;
while node<>nil do
begin
node.Free;
node:=treeview1.Items.GetFirstNode;
end;
//fill group/user data
ado_pub1.Close;
ado_pub1.SQL.Clear;
ado_pub1.SQL.add('SELECT * FROM ZC_FILE');
ado_pub1.Open;
while not ado_pub1.Eof do
begin
node_str:=trim(ado_pub1.fieldbyname('ZC01').AsString)+' '+trim(ado_pub1.fieldbyname('ZC02').AsString);
node:=treeview1.Items.Add(nil,node_str);
node.ImageIndex:=0;
node.SelectedIndex:=2;
//fill user data
ado_pub2.Close;
ado_pub2.SQL.Clear;
ado_pub2.sql.Add('SELECT * FROM ZD_FILE WHERE ZD01='''+ado_pub1.fieldbyname('ZC01').AsString+'''');
ado_pub2.Open;
while not ado_pub2.Eof do
begin
node_str:=trim(ado_pub2.fieldbyname('ZD02').AsString)+' '+trim(ado_pub2.fieldbyname('ZD03').AsString);
node2:=treeview1.Items.AddChild(node,node_str);
node2.ImageIndex:=1;
node2.SelectedIndex:=3;
ado_pub2.Next;
end;
ado_pub1.Next;
end;
end;
procedure Tfrm_user_1.show_stus;
var node1:Ttreenode;
s,s1,s2:string;
begin
node1:=treeview1.Selected;
if (node1=nil)or(treeview1.SelectionCount>1) then
begin
statusbar.Panels[0].Text:='';
statusbar.Panels[1].Text:='';
exit;
end;
s:=node1.Text;
s1:=trim(copy(s,1,pos(' ',s)-1));
s2:=trim(copy(s,pos(' ',s),length(s)));
if node1.Parent=nil then
begin
statusbar.Panels[0].Text:='組別: '+s1;
statusbar.Panels[1].Text:='組名稱: '+s2;
edit_group.Enabled:=true;
delete_group.Enabled:=true;
edit_user.Enabled:=false;
delete_user.Enabled:=false;
end
else
begin
statusbar.Panels[0].Text:='用戶: '+s1;
statusbar.Panels[1].Text:='用戶名稱: '+s2;
edit_group.Enabled:=false;
delete_group.Enabled:=false;
edit_user.Enabled:=true;
delete_user.Enabled:=true;
end;
self.refresh_md(s1);
end;
procedure Tfrm_user_1.refresh_md(key_str:string);
begin
md_file.Close;
md_file.SQL.Clear;
md_file.SQL.Add('SELECT * FROM ZE_FILE WHERE ZE01='''+key_str+'''');
md_file.Open;
g_md01:=key_str;
//g_md01:=md_file.fieldbyname('MD01').AsString;
end;
procedure Tfrm_user_1.Exit1Click(Sender: TObject);
begin
close;
end;
procedure Tfrm_user_1.md_file1CalcFields(DataSet: TDataSet);
var s,c,s_v:string;
i:integer;
l_sql:string;
l_prog,l_desc:string;
begin
s_v:='';
s:=trim(md_file.fieldbyname('ZE03').AsString);
try
for i:=1 to length(s) do
begin
c:=copy(s,i,1);
ado_pub1.Close;
ado_pub1.SQL.Clear;
l_sql:='SELECT * FROM ZB_FILE WHERE ZB01='''
+md_file.fieldbyname('ZE02').AsString+''''+
' AND ZB02='''+c+'''';
ado_pub1.sql.Add(l_sql);
ado_pub1.Open;
s_v:=s_v+','+trim(ado_pub1.fieldbyname('ZB03').AsString);
end;
s_v:=copy(s_v,2,length(s_v));
md_file.FieldByName('Permission').Value:=s_v;
//程序說明填寫
l_prog:=md_file.fieldbyname('ZE02').AsString;
g_sqlstr:='SELECT * FROM ZA_FILE WHERE ZA03='''+l_prog+'''';
ado_pub1.Close;
ado_pub1.sql.Clear;
ado_pub1.SQL.Add(g_sqlstr);
ado_pub1.Open;
l_desc:=ado_pub1.fieldbyname('ZA04').Asstring;
md_file.FieldByName('prog_desc').Value:=l_desc;
finally
ado_pub1.Close;
end;
end;
procedure Tfrm_user_1.Fullexpand1Click(Sender: TObject);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -