📄 ureadersetting.~pas
字号:
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 TfrmReaderSetting.GroupEditViewInit;
begin
edtClassCode.Text := '';
edtClassDescr.Text := '';
end;
//增加用户身份
procedure TfrmReaderSetting.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 TfrmReaderSetting.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 TfrmReaderSetting.RefreshGroup;
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Groupb order by GroupID');
Query.Open;
lstClassDetail.Items.Clear;
while not Query.Eof do
begin
with lstClassDetail.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 TfrmReaderSetting.lstClassDetailChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if lstClassDetail.Selected <> nil then
begin
edtClassCode.Text := lstClassDetail.Selected.Caption;
edtClassDescr.Text := lstClassDetail.Selected.SubItems.Strings[0];
edtBookMax.Text := lstClassDetail.Selected.SubItems.Strings[1];
end;
end;
//根据情况增加或修改用户身份
procedure TfrmReaderSetting.btnOKClassClick(Sender: TObject);
begin
try
StrToInt(edtBookMax.Text);
except
MessageDlg('最大借阅图书数不正确',mtError,[mbok],0);
Exit;
end;
//新增读者身份
if chkNewReaderClass.Checked then
begin
if Length(edtClassCode.Text)<> GroupIDLength then
begin
MessageDlg('身份号不正确',mtError,[mbok],0);
Exit;
end;
if CheckGroupExist(edtClassCode.Text) then
begin
MessageDlg('身份号<'+edtClassCode.Text+'>已经存在',mtError,[mbok],0);
Exit;
end;
try
InsGroup(edtClassCode.Text,edtClassDescr.Text,StrToInt(edtBookMax.Text));
except
MessageDlg('添加<'+edtClassCode.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
//修改现有的读者身份
if chkNewReaderClass.Checked=false then
begin
if Length(edtClassCode.Text)<> GroupIDLength then
begin
MessageDlg('身份号不正确',mtError,[mbok],0);
Exit;
end;
try
UpdateGroup(edtClassCode.Text,edtClassDescr.Text,StrToInt(edtBookMax.Text));
except
MessageDlg('修改<'+edtClassCode.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
GroupEditViewInit;
RefreshGroup;
InitGroup;
end;
//删除某指定用户身份
procedure TfrmReaderSetting.btnDeleteClassClick(Sender: TObject);
var
i : integer;
begin
for i := lstClassDetail.Items.Count -1 downto 0 do
if lstClassDetail.Items[i].Selected then
try
DelGroup(lstClassDetail.Items[i].Caption);
lstClassDetail.Items.Delete(i);
except
MessageDlg('删除<'+lstClassDetail.Items[i].Caption+'>出错',mtError,[mbok],0);
end;
InitGroup;
end;
//获得读者借书的数目,进行统计
function TfrmReaderSetting.GetLendedUserNum(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 TfrmReaderSetting.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 TfrmReaderSetting.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 TfrmReaderSetting.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(GetLendedUserNum(Caption)));
SubItems.Add(IntToStr(GetLendedBookNum(Caption)));
end;
Query.Next;
end;
Query.Close;
Query.Free;
end;
procedure TfrmReaderSetting.btnRefreshReaderClick(Sender: TObject);
begin
try
RefreshCountUser;
except
ListView4.Items.Clear;
MessageDlg('刷新出错',mtError,[mbok],0);
end;
end;
//获得借书者的数量
function TfrmReaderSetting.GetLendedBookNum(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 TfrmReaderSetting.CheckDelUser(UserID: string): integer;
var
Query : TQuery;
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;
Query.Close;
Query.Free;
Result := IDYES;
except
Result := IDNO;
end;
end;
procedure TfrmReaderSetting.btnCancelClick(Sender: TObject);
begin
close;
end;
//窗体创建,初始化
procedure TfrmReaderSetting.FormCreate(Sender: TObject);
begin
InitGroup;
try
RefreshGroup;
except
lstClassDetail.Items.Clear;
GroupBox6.Caption := '用户身份列表/共0条记录';
MessageDlg('身份编辑:得到用户身份信息出错',mtError,[mbok],0);
end;
edtClassCode.MaxLength := UserIDLength;
edtReaderCode.MaxLength := UserIDLength;
end;
//新增读者用户或只是修改用户信息
procedure TfrmReaderSetting.chkNewReaderClick(Sender: TObject);
begin
if chkNewReader.Checked = true then
edtReaderCode.Enabled := true;
edtReaderCode.Text := '';
edtReaderName.Text := '';
edtReaderID.Text := '';
cmbClass.ItemIndex :=0;
cmbSex.ItemIndex := 0;
begin
end;
if chkNewReader.Checked = false then
begin
edtReaderCode.Enabled := false;
edtReaderCode.Text := '';
edtReaderName.Text := '';
edtReaderID.Text := '';
cmbClass.ItemIndex :=0;
cmbSex.ItemIndex := 0;
end;
end;
//初始化身份信息
procedure TfrmReaderSetting.InitGroup;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Groupb');
Query.Open;
cmbClass.Items.Clear;
ListBox2.Items.Clear;
while not Query.Eof do
begin
cmbClass.Items.Add(Query.FieldByName('Des').AsString);
ListBox2.Items.Add(Query.FieldByName('GroupID').AsString);
Query.Next;
end;
Query.Close;
Query.Free;
cmbSex.ItemIndex := 0;
cmbClass.ItemIndex := 0;
except;
MessageDlg('不能得到有关的身份信息',mtWarning,[mbok],0);
ListBox2.Items.Clear;
cmbClass.Items.Clear;
end;
end;
//新增身份信息或修改身份信息
procedure TfrmReaderSetting.chkNewReaderClassClick(Sender: TObject);
begin
if chkNewReaderClass.Checked = true then
begin
edtClassCode.Enabled := true;
edtClassCode.Text := '';
edtClassDescr.Text :='';
edtBookMax.Text :='';
end;
if chkNewReaderClass.Checked = false then
begin
edtClassCode.Enabled := false;
edtClassCode.Text := '';
edtClassDescr.Text :='';
edtBookMax.Text :='';
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -