📄 ubooksearch.~pas
字号:
unit uBookSearch;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, dbtables, ExtCtrls, Menus, Buttons;
type
TfrmBookSearch = class(TForm)
Label1: TLabel;
btnCancel: TSpeedButton;
Panel4: TPanel;
GroupBox1: TGroupBox;
radioBookCode: TRadioButton;
radioBookName: TRadioButton;
radioPublisher: TRadioButton;
radioAuthor: TRadioButton;
chkSearch: TCheckBox;
radioClass: TRadioButton;
lstDetail: TListView;
cmbRule: TComboBox;
StaticText1: TStaticText;
btnSearch: TButton;
txtTip: TStaticText;
ListBox1: TListBox;
procedure btnSearchClick(Sender: TObject);
procedure radioBookCodeClick(Sender: TObject);
procedure radioBookNameClick(Sender: TObject);
procedure radioPublisherClick(Sender: TObject);
procedure radioAuthorClick(Sender: TObject);
procedure radioClassClick(Sender: TObject);
procedure cmbRuleKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lstDetailDblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function CheckCode(Code:string):boolean;
procedure SetBookSQL(var Query : TQuery);
procedure SetBookParam(var Query : TQuery;Param : string);
function GetOwnCount(UserID : string):integer;
procedure BookView;
end;
var
frmBookSearch: TfrmBookSearch;
implementation
uses uPublic, main , Printers,uviewf;
{$R *.DFM}
function TfrmBookSearch.CheckCode(Code: string): boolean;
begin
if Length(cmbRule.Text)<> CodeLength then
Result := False
else Result:= True;
end;
procedure TfrmBookSearch.SetBookParam(var Query: TQuery;Param : string);
begin
if chkSearch.Checked and chkSearch.Enabled then
Param := Param +'%';
if radioBookCode.Checked then
Query.ParamByName('Code').AsString := Param;
if radioBookName.Checked then
Query.ParamByName('Name').AsString := Param;
if radioPublisher.Checked then
Query.ParamByName('Concern').AsString := Param;
if radioAuthor.Checked then
Query.ParamByName('Author').AsString := Param;
if radioClass.Checked then
Query.ParamByName('Class').AsString := Param;
end;
//根据不同的查询方式使用不同的查询book的sql语句
procedure TfrmBookSearch.SetBookSQL(var Query: TQuery);
begin
Query.SQL.Clear;
if radioBookCode.Checked then
Query.SQL.Add('select * from Book where Code like :Code');
if radioBookName.Checked then
Query.SQL.Add('select * from Book where Name like :Name');
if radioPublisher.Checked then
Query.SQL.Add('select * from Book where Concern like :Concern');
if radioAuthor.Checked then
Query.SQL.Add('select * from Book where Author like :Author');
if radioClass.Checked then
Query.SQL.Add('select * from Book where Class like :Class');
end;
//具体的查询过程,在查询按钮点击动作中被调用
procedure TfrmBookSearch.BookView;
var
Query : TQuery;
OwnQuery : TQuery;
begin
lstDetail.Items.Clear;
OwnQuery := TQuery.Create(nil);
OwnQuery.DatabaseName := DBName;
OwnQuery.SQL.Add('select * from Owner where Code =:Code');
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
SetBookSQL(Query); //不同的情况使用不同的sql语句
if radioClass.Checked then
if cmbRule.ItemIndex = -1 then
SetBookParam(Query,'') //根据是否使用模糊查询,使用不同的参数
else SetBookParam(Query,ListBox1.Items[cmbRule.ItemIndex])
else SetBookParam(Query,cmbRule.Text);
Query.Open;
while not Query.Eof do
begin
with lstDetail.Items.Add do
begin
Caption := Query.FieldByName('Code').AsString;
SubItems.Add(Query.FieldByName('Name').AsString);
SubItems.Add(Query.FieldByName('Author').AsString);
SubItems.Add(Query.FieldByName('concern').AsString);
SubItems.Add(Query.FieldByName('OutDate').AsString);
SubItems.Add(Query.FieldByName('Cost').AsString);
SubItems.Add(Query.FieldByName('Memo').AsString);
try
OwnQuery.ParamByName('Code').AsString := Caption;
OwnQuery.Close;
OwnQuery.Open;
SubItems.Add(OwnQuery.FieldByName('UserID').AsString);
SubItems.Add(OwnQuery.FieldByName('LandDate').AsString);
except
SubItems.Add('未知');
SubItems.Add('未知');
end;
end;
Query.Next;
end;
try
OwnQuery.Close;
OwnQuery.Free;
except
end;
txtTip.Caption:= '共'+IntToStr(Query.RecordCount)+'条记录';
Query.Close;
Query.Free;
end;
procedure TfrmBookSearch.btnSearchClick(Sender: TObject);
begin
try
BookView;
except
MessageDlg('查询失败',mtError,[mbok],0);
end;
end;
//查询每一个读者有多少本借阅书籍
function TfrmBookSearch.GetOwnCount(UserID: string): integer;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DataBaseName := DBName;
Query.SQL.Add('select Count(UserID) from Owner where UserID =:UserID');
Query.ParamByName('UserID').AsString := UserID;
Query.Open;
Result := Query.Fields[0].Value;
Query.Close;
Query.Free;
except
Result := 0;
end;
end;
//选择使用书号来查询
procedure TfrmBookSearch.radioBookCodeClick(Sender: TObject);
begin
cmbRule.Style := csSimple;
cmbRule.Text := '';
chkSearch.Enabled := True;
cmbRule.MaxLength := UserIDLength;
end;
//选择使用书名来查询
procedure TfrmBookSearch.radioBookNameClick(Sender: TObject);
begin
cmbRule.Style := csSimple;
cmbRule.Text := '';
chkSearch.Enabled := True;
cmbRule.MaxLength := 0;
end;
//选择使用出版商来查询
procedure TfrmBookSearch.radioPublisherClick(Sender: TObject);
begin
cmbRule.Style := csSimple;
cmbRule.Text := '';
chkSearch.Enabled := True;
cmbRule.MaxLength := 0;
end;
//选择使用作者来查询
procedure TfrmBookSearch.radioAuthorClick(Sender: TObject);
begin
cmbRule.Style := csSimple;
cmbRule.Text := '';
chkSearch.Enabled := True;
cmbRule.MaxLength := 0;
end;
//选择使用书的类别来查询
procedure TfrmBookSearch.radioClassClick(Sender: TObject);
begin
cmbRule.Style := csDropDownList;
cmbRule.ItemIndex := 0;
chkSearch.Enabled := False;
cmbRule.MaxLength := 0;
end;
procedure TfrmBookSearch.cmbRuleKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
btnSearchClick(Sender);
end;
procedure TfrmBookSearch.lstDetailDblClick(Sender: TObject);
begin
ViewF := TViewF.Create('查询图书基本信息列表',lstDetail,self);
end;
procedure TfrmBookSearch.FormCreate(Sender: TObject);
var
Query : TQuery;
begin
//inherited Create(AOwner);
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Class');
Query.Open;
while not Query.Eof do
begin
cmbRule.Items.Add(Query.FieldByName('ClassName').AsString);
ListBox1.Items.Add(Query.FieldByName('ClassID').AsString);
Query.Next;
end;
cmbRule.ItemIndex := -1;
Query.Close;
Query.Free;
except
cmbRule.Items.Clear;
ListBox1.Items.Clear;
end;
cmbRule.MaxLength := UserIDLength;
end;
procedure TfrmBookSearch.btnCancelClick(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -