⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ubooksearch.~pas

📁 图书馆管理系统代码deiphi
💻 ~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 + -