📄 uuesrmgrf.pas
字号:
Exit;
end;
try
UpdateUser(Edit1.Text,Edit2.Text,IntToStr(ComboBox2.ItemIndex),
ListBox2.Items[ComboBox3.ItemIndex],Edit3.Text);
except
MessageDlg('修改<'+Edit1.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
UserEditViewInit;
//RefreshUser;
end;
procedure TUserMgrF.Button4Click(Sender: TObject);
var
i : integer;
Checked : integer;
begin
for i := ListView2.Items.Count -1 downto 0 do
if ListView2.Items[i].Selected then
try
Checked := CheckDelUser(ListView2.Items[i].Caption);
if Checked = IDYES then
begin
DelUser(ListView2.Items[i].Caption);
ListView2.Items.Delete(i);
end else
if Checked = IDCANCEL then
Exit;
except
MessageDlg('删除<'+ListView2.Items[i].Caption+'>出错',mtError,[mbok],0);
end;
end;
procedure TUserMgrF.RadioButton6Click(Sender: TObject);
begin
Edit5.Enabled := True;
Edit5.Color := clWindow;
end;
procedure TUserMgrF.RadioButton7Click(Sender: TObject);
begin
Edit5.Enabled := False;
Edit5.Color := clBtnFace;
end;
function TUserMgrF.CheckGroupExist(GroupID: string): boolean;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQl.Add('select GroupID from Groupb where GroupID=:GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
if Query.RecordCount = 0 then
Result := False
else Result := True;
Query.Close;
Query.Free;
except
Result := False;
end;
end;
procedure TUserMgrF.DelGroup(GroupID: string);
var
Query : TQuery;
Answer : integer;
Checked : Integer;
begin
Answer := MessageBox(0,PChar('删除将删除此身份的所有用户及与这些用户相关的所有信息'+
#13+'是否要删除'),'警告',MB_YESNO);
if Answer = IDNO then
Exit;
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select UserID from Userb where GroupID =:GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
while not Query.Eof do
begin
try
Checked := CheckDelUser(Query.FieldByName('UserID').AsString);
if Checked = IDYES then
DelUser(Query.FieldByName('UserID').AsString)
else
if Checked = IDCANCEL then
begin
Query.Free;
Exit;
end;
except
MessageDlg('删除<'+Query.FieldByName('UserID').AsString+'>出错',mtError,[mbok],0);
Query.Free;
Exit;
end;
Query.Next;
end;
Query.Close;
Query.SQL.Clear;
Query.SQl.Add('delete from Groupb where GroupID=:GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.ExecSQL;
Query.Free;
end;
procedure TUserMgrF.GroupEditViewInit;
begin
Edit5.Text := '';
Edit6.Text := '';
end;
procedure TUserMgrF.InsGroup(GroupID, Des: string;MaxNum : integer);
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQl.Add('insert into Groupb(GroupID,Des,MaxNum) '+
'values(:GroupID,:Des,:MaxNum)');
Query.ParamByName('GroupID').AsString := GroupID;
Query.ParamByName('Des').AsString := Des;
Query.ParamByName('MaxNum').AsInteger := MaxNum;
Query.ExecSQL;
Query.Free;
end;
procedure TUserMgrF.UpdateGroup(GroupID, Des: string;MaxNum:integer);
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQl.Add('update Groupb set Des=:Des,MaxNum=:MaxNum '+
' where GroupID= :GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.ParamByName('Des').AsString := Des;
Query.ParamByName('MaxNum').AsInteger := MaxNum;
Query.ExecSQL;
Query.Free;
end;
procedure TUserMgrF.RefreshGroup;
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Groupb order by GroupID');
Query.Open;
ListView3.Items.Clear;
while not Query.Eof do
begin
with ListView3.Items.Add do
begin
Caption := Query.FieldByName('GroupID').AsString;
SubItems.Add(Query.FieldByName('Des').AsString);
SubItems.Add(Query.FieldByName('MaxNum').AsString);
end;
Query.Next;
end;
GroupBox6.Caption := '用户身份列表/共'+IntToStr(Query.RecordCount)+'条记录';
Query.Close;
Query.Free;
end;
procedure TUserMgrF.ListView3Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if ListView3.Selected <> nil then
begin
Edit5.Text := ListView3.Selected.Caption;
Edit6.Text := ListView3.Selected.SubItems.Strings[0];
Edit4.Text := ListView3.Selected.SubItems.Strings[1];
end;
end;
procedure TUserMgrF.Button8Click(Sender: TObject);
begin
try
StrToInt(Edit4.Text);
except
MessageDlg('最大借阅图书数不正确',mtError,[mbok],0);
Exit;
end;
if RadioButton6.Checked then
begin
if Length(Edit5.Text)<> GroupIDLength then
begin
MessageDlg('身份号不正确',mtError,[mbok],0);
Exit;
end;
if CheckGroupExist(Edit5.Text) then
begin
MessageDlg('身份号<'+Edit5.Text+'>已经存在',mtError,[mbok],0);
Exit;
end;
try
InsGroup(Edit5.Text,Edit6.Text,StrToInt(Edit4.Text));
except
MessageDlg('添加<'+Edit5.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
if RadioButton7.Checked then
begin
if Length(Edit5.Text)<> GroupIDLength then
begin
MessageDlg('身份号不正确',mtError,[mbok],0);
Exit;
end;
try
UpdateGroup(Edit5.Text,Edit6.Text,StrToInt(Edit4.Text));
except
MessageDlg('修改<'+Edit5.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
GroupEditViewInit;
RefreshGroup;
InitGroup;
end;
procedure TUserMgrF.InitGroup;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Groupb');
Query.Open;
ComboBox1.Items.Clear;
ComboBox3.Items.Clear;
ListBox1.Items.Clear;
ListBox2.Items.Clear;
while not Query.Eof do
begin
ComboBox1.Items.Add(Query.FieldByName('Des').AsString);
ListBox1.Items.Add(Query.FieldByName('GroupID').AsString);
ComboBox3.Items.Add(Query.FieldByName('Des').AsString);
ListBox2.Items.Add(Query.FieldByName('GroupID').AsString);
Query.Next;
end;
Query.Close;
Query.Free;
ComboBox2.ItemIndex := 0;
ComboBox3.ItemIndex := 0;
except;
MessageDlg('不能得到有关的身份信息',mtWarning,[mbok],0);
ListBox1.Items.Clear;
ComboBox1.Items.Clear;
ListBox2.Items.Clear;
ComboBox3.Items.Clear;
end;
end;
procedure TUserMgrF.Button7Click(Sender: TObject);
var
i : integer;
begin
for i := ListView3.Items.Count -1 downto 0 do
if ListView3.Items[i].Selected then
try
DelGroup(ListView3.Items[i].Caption);
ListView3.Items.Delete(i);
except
MessageDlg('删除<'+ListView3.Items[i].Caption+'>出错',mtError,[mbok],0);
end;
InitGroup;
end;
function TUserMgrF.GetLandedUserNum(GroupID: string): integer;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select Count(distinct(UserID)) from Owner '+
' where UserID in '+
' (select UserID from Userb where GroupID=:GroupID)');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
Result := Query.Fields[0].Value;
Query.Close;
Query.Free;
except
Result := 0;
end;
end;
function TUserMgrF.GetUserNum(GroupID: string): integer;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select Count(UserID) from Userb '+
' where GroupID=:GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
Result := Query.Fields[0].Value;
Query.Close;
Query.Free;
except
Result := 0;
end;
end;
function TUserMgrF.GetUserTotalNum: integer;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select Count(UserID) from Userb ');
Query.Open;
Result := Query.Fields[0].Value;
Query.Close;
Query.Free;
except
Result := 0;
end;
end;
procedure TUserMgrF.RefreshCountUser;
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Groupb');
Query.Open;
ListView4.Items.Clear;
while not Query.Eof do
begin
with ListView4.Items.Add do
begin
Caption := Query.FieldByName('GroupID').AsString;
SubItems.Add(Query.FieldByName('Des').AsString);
SubItems.Add(IntToStr(GetUserNum(Caption)));
SubItems.Add(IntToStr(GetLandedUserNum(Caption)));
SubItems.Add(IntToStr(GetLandedBookNum(Caption)));
end;
Query.Next;
end;
Query.Close;
Query.Free;
end;
procedure TUserMgrF.Button6Click(Sender: TObject);
begin
try
RefreshCountUser;
except
ListView4.Items.Clear;
MessageDlg('刷新出错',mtError,[mbok],0);
end;
end;
function TUserMgrF.GetLandedBookNum(GroupID: string): integer;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select Count(UserID) from Owner '+
' where UserID in '+
' (select UserID from Userb where GroupID=:GroupID)');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
Result := Query.Fields[0].Value;
Query.Close;
Query.Free;
except
Result := 0;
end;
end;
function TUserMgrF.CheckDelUser(UserID: string): integer;
var
Query : TQuery;
Answer : integer;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select Book.Code,Book.Name,LandDate from Book,Owner '+
' where Owner.UserID =:UserID and Book.Code = Owner.Code');
Query.ParamByName('UserID').AsString := UserID;
Query.Open;
if Query.RecordCount = 0 then
Result := IDYES
else begin
UserLandMsgF := TUserLandMsgF.Create(nil);
UserLandMsgF.Caption := '是否要删除<'+UserID+'>';
UserLandMsgF.GroupBox1.Caption := '<'+UserID+'>有以下图书没有归还';
while not Query.Eof do
begin
with UserLandMsgF.ListView1.Items.Add do
begin
Caption := Query.FieldByName('Code').AsString;
SubItems.Add(Query.FieldByName('Name').AsString);
SubItems.Add(FloatToStr(Date-StrToDate(Query.FieldByName('LandDate').AsString)));
end;
Query.Next;
end;
Answer := UserLandMsgF.ShowModal;
if Answer = mrok then
begin
Query.SQL.Clear;
Query.SQL.Add('delete from book where Code in '+
'(select Code from Owner where UserID =:UserID)');
Query.ParamByName('UserID').AsString := UserID;
Query.ExecSQL;
Query.SQL.Clear;
Query.SQL.Add('delete from Owner where UserID=:UserID');
Query.ParamByName('UserID').AsString := UserID;
Query.ExecSQL;
Result := IDYES;
end
else if Answer= mrno then
Result := IDNO
else Result := IDCANCEL;
UserLandMsgF.Free;
end;
Query.Close;
Query.Free;
except
Result := IDNO;
end;
end;
procedure TUserMgrF.Button9Click(Sender: TObject);
begin
if SaveDialog1.Execute then
SaveListView(ListView1,'--- 一般用户列表 ---',SaveDialog1.FileName);
end;
procedure TUserMgrF.Button10Click(Sender: TObject);
begin
PrintListView(ListView1,'--- 一般用户列表 ---');
end;
procedure TUserMgrF.Button11Click(Sender: TObject);
begin
if SaveDialog1.Execute then
SaveListView(ListView3,'--- 用户身份列表 ---',SaveDialog1.FileName);
end;
procedure TUserMgrF.Button12Click(Sender: TObject);
begin
PrintListView(ListView3,'--- 用户身份列表 ---');
end;
procedure TUserMgrF.Button13Click(Sender: TObject);
begin
if SaveDialog1.Execute then
SaveListView(ListView4,'--- 用户统计 ---',SaveDialog1.FileName);
end;
procedure TUserMgrF.Button14Click(Sender: TObject);
begin
PrintListView(ListView4,'--- 用户统计 ---');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -