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

📄 bookroomunit.~pas

📁 很好地delphi书籍源码
💻 ~PAS
字号:
unit BookRoomUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, Buttons, ExtCtrls, DBActns, ActnList, ImgList,
  ComCtrls, ToolWin, Grids, DBGrids;

type
  TFrmBookRoom = class(TForm)
    DBGrid1: TDBGrid;
    ToolBar1: TToolBar;
    AddTButton: TToolButton;
    ModTButton: TToolButton;
    DelTButton: TToolButton;
    ToolButton7: TToolButton;
    ToolButton3: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton1: TToolButton;
    ImageList1: TImageList;
    ActionList1: TActionList;
    DataSetFirst1: TDataSetFirst;
    DataSetPrior1: TDataSetPrior;
    DataSetNext1: TDataSetNext;
    DataSetLast1: TDataSetLast;
    AddGB: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label9: TLabel;
    Label1: TLabel;
    Shape1: TShape;
    Label2: TLabel;
    Label7: TLabel;
    Label5: TLabel;
    AddRoomCB: TComboBox;
    AddBedCB: TComboBox;
    KindCB: TComboBox;
    EnterME: TMaskEdit;
    NameEdit: TEdit;
    CardEdit: TEdit;
    CardIBCB: TComboBox;
    ModGB: TGroupBox;
    Label6: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Shape2: TShape;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    MAddRoomCB: TComboBox;
    MAddBedCB: TComboBox;
    MKindCB: TComboBox;
    MEnterME: TMaskEdit;
    MNameEdit: TEdit;
    MCardEdit: TEdit;
    MCardIBCB: TComboBox;
    ModOkSB: TSpeedButton;
    ModNoSB: TSpeedButton;
    AddOkSB: TSpeedButton;
    AddNoSB: TSpeedButton;
    Label15: TLabel;
    MDaysCB: TComboBox;
    Label16: TLabel;
    ADaysCB: TComboBox;
    ToolButton2: TToolButton;
    procedure FormCreate(Sender: TObject);
    procedure KindCBChange(Sender: TObject);
    procedure AddRoomCBChange(Sender: TObject);
    procedure AddOkSBClick(Sender: TObject);
    procedure ModOkSBClick(Sender: TObject);
    procedure ModTButtonClick(Sender: TObject);
    procedure AddTButtonClick(Sender: TObject);
    procedure MEnterMEClick(Sender: TObject);
    procedure EnterMEClick(Sender: TObject);
    procedure AddNoSBClick(Sender: TObject);
    procedure ModNoSBClick(Sender: TObject);
    procedure MKindCBChange(Sender: TObject);
    procedure MAddRoomCBChange(Sender: TObject);
    procedure DelTButtonClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
  private
    Value:array[0..7] of String;
    procedure Refresh;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmBookRoom: TFrmBookRoom;
  function GetMyDateTime : TDateTime; stdcall; external 'MyDll.dll';
implementation
uses DataModuleUnit, Dy_QReport, DynamicFormUnit;

const Title:array[0..7] of String=('姓名','证件类型','证件号码',' 房间类别 ',
         '房间号','床位号','拟住天数','入住时间');
{$R *.dfm}

procedure TFrmBookRoom.FormCreate(Sender: TObject);
begin
  Refresh;
  with DataModule1.tbHotelKind do
  begin
    Close;
    Open;
    KindCB.Clear;
    KindCB.Items.Add('待定');
    while not eof do
    begin
      KindCB.Items.Add(Fields[0].AsString);
      MKindCB.Items.Add(Fields[0].AsString);
      Next;
    end;
  end;

end;

procedure TFrmBookRoom.KindCBChange(Sender: TObject);
var
  Room:string;
begin
   if KindCB.Text='待定' then exit;
   with DataModule1.qHRoomState do
   begin
     Close;
     SQL.Clear;
     SQL.Add('select RoomID from tbHRoomState');
     SQL.Add('where RoomKind="'+KindCB.Text+'" and RoomState<>"住满"');
     Open;
     AddRoomCB.Clear;
     First;
     while not eof do
     begin
       Room:=FieldByName('RoomID').AsString;
       if  AddRoomCB.Items.IndexOf(Room)<0 then
         AddRoomCB.Items.Add(Room);
       Next;
     end;
  end;
end;

procedure TFrmBookRoom.AddRoomCBChange(Sender: TObject);
var
  Bed:string;
begin
   with DataModule1.qHRoomState do
   begin
     Close;
     SQL.Clear;
     SQL.Add('select BedID from tbHRoomState');
     SQL.Add('where RoomID="'+AddRoomCB.Text+'" and BedState="空闲"');
     Open;
     First;
     AddBedCB.Clear;
     while not eof do
     begin
       Bed:=FieldByName('BedID').AsString;
       if  AddBedCB.Items.IndexOf(Bed)<0 then
         AddBedCB.Items.Add(Bed);
       Next;
     end;
  end;
end;

procedure TFrmBookRoom.AddOkSBClick(Sender: TObject);
var
  i:word;
  SQLStr :string;
begin
   Value[0]:=NameEdit.Text;
   Value[1]:=CardIBCB.Text;
   Value[2]:=CardEdit.Text;
   Value[3]:=KindCB.Text;
   Value[4]:=AddRoomCB.Text;
   Value[5]:=AddBedCB.Text;
   Value[6]:=ADaysCB.Text;
   Value[7]:=EnterME.Text;
   for i:=0 to 7 do
     if ( Value[0]='') then
     begin
       Showmessage('提供的信息不完整!');
       exit;
     end;
  DataModule1.tBookRoom.AppendRecord([Value[0],Value[1],Value[2],Value[3],
  Value[4],Value[5],Value[6],Value[7]]);
  DataModule1.tBookRoom.Close;
  DataModule1.tBookRoom.Open;
  SQLStr:='BEGIN TRAN MyTran '
         + ' UPDATE tbHRoomState SET BedState="预订" '
         +' Where RoomID="'+AddRoomCB.Text+'" and BedID="'+AddBedCB.Text+'"'
         +' UPDATE tbHRoomState SET RoomState="入住"'
         +' Where RoomID="'+AddRoomCB.Text+'"'
         +' if (Select Count(*) from tbHRoomState '
         +' where RoomID="'+AddRoomCB.Text+'" AND BedState="空闲")=0'
         +' BEGIN'
         +' UPDATE tbHRoomState SET RoomState="住满"'
         +' Where RoomID="'+AddRoomCB.Text+'"'
         +' END'
         +' COMMIT TRAN';
  with DataModule1.qGRoomFee  do
  begin
    Close;
    SQL.Clear;
    SQL.Add(SQLStr);
    ExecSQL;
  end;
  AddGB.Visible:=false;
end;

procedure TFrmBookRoom.ModOkSBClick(Sender: TObject);
var
  i:word;
   SQLStr,Room,Bed :String;
begin
   //取出原来的值
   Room:=DataModule1.tBookRoom.Fields[4].AsString;
   Bed:=DataModule1.tBookRoom.Fields[5].AsString;
   Value[0]:=MNameEdit.Text;
   Value[1]:=MCardIBCB.Text;
   Value[2]:=MCardEdit.Text;
   Value[3]:=MKindCB.Text;
   Value[4]:=MAddRoomCB.Text;
   Value[5]:=MAddBedCB.Text;
   Value[6]:=MDaysCB.Text;
   Value[7]:=MEnterME.Text;
   DataModule1.tBookRoom.Edit;
   for i:=0 to 7 do
     if ( Value[0]='') then
     begin
        Showmessage('提供的信息不完整!');
        break;
     end
     else //更新为新遥值
      DataModule1.tBookRoom.Fields[i].AsString := Value[i];
  DataModule1.tBookRoom.Post;   //提交
  DataModule1.tBookRoom.Close;
  DataModule1.tBookRoom.Open;
  ModGB.Visible:=false;
//更新房间状态表
  SQLStr:='BEGIN TRAN MyTran '
        //更新原房间为空闲
         +' UPDATE tbHRoomState SET BedState="空闲" '
         +' Where RoomID="'+Room+'" and BedID="'+Bed+'"'
         +' UPDATE tbHRoomState SET RoomState="空闲"'
         +' Where RoomID="'+Room+'"'
         +' if (Select Count(*) from tbHRoomState '
         +' where RoomID="'+Room+'" AND BedState="入住")>0'
         +' BEGIN'
         +' UPDATE tbHRoomState SET RoomState="入住"'
         +' Where RoomID="'+Room+'"'
         +' END'
        //更新现房间为预订
         + ' UPDATE tbHRoomState SET BedState="预订" '
         +' Where RoomID="'+MAddRoomCB.Text+'" and BedID="'+MAddBedCB.Text+'"'
         +' UPDATE tbHRoomState SET RoomState="入住"'
         +' Where RoomID="'+MAddRoomCB.Text+'"'
         +' if (Select Count(*) from tbHRoomState '
         +' where RoomID="'+MAddRoomCB.Text+'" AND BedState="空闲")=0'
         +' BEGIN'
         +' UPDATE tbHRoomState SET RoomState="住满"'
         +' Where RoomID="'+MAddRoomCB.Text+'"'
         +' END'
         +' COMMIT TRAN';
  with DataModule1.qGRoomFee  do
  begin
    Close;
    SQL.Clear;
    SQL.Add(SQLStr);
    ExecSQL;
  end;
        
end;

procedure TFrmBookRoom.ModTButtonClick(Sender: TObject);
begin
  ModGB.Left:=10;
  ModGB.Top:=20;
  ModGB.Visible:=true;
  MNameEdit.Text:=DataModule1.tBookRoom.Fields[0].AsString  ;
  MCardIBCB.Text:=DataModule1.tBookRoom.Fields[1].AsString ;
  MCardEdit.Text:=DataModule1.tBookRoom.Fields[2].AsString ;
  MKindCB.Text:=DataModule1.tBookRoom.Fields[3].AsString ;
  MAddRoomCB.Text:=DataModule1.tBookRoom.Fields[4].AsString ;
  MAddBedCB.Text:=DataModule1.tBookRoom.Fields[5].AsString ;
  MDaysCB.Text:=DataModule1.tBookRoom.Fields[6].AsString ;
  MEnterME.Text:=DataModule1.tBookRoom.Fields[7].AsString ;
end;

procedure TFrmBookRoom.AddTButtonClick(Sender: TObject);
begin
   AddGB.Left:=10;
   AddGB.Top:=20;
   NameEdit.Text:='';
   CardIBCB.Text:='';
   CardEdit.Text:='';
   KindCB.ItemIndex :=0;
   AddRoomCB.Text:='';
   AddBedCB.Text :='';;
   ADaysCB.Text:='';
   EnterME.Text:='';
   AddGB.Visible:=true;
end;

procedure TFrmBookRoom.MEnterMEClick(Sender: TObject);
begin
   MEnterME.Text:=DateTimeToStr(GetMyDateTime);
end;

procedure TFrmBookRoom.EnterMEClick(Sender: TObject);
begin
  EnterME.Text:=DateTimeToStr(GetMyDateTime);
end;

procedure TFrmBookRoom.AddNoSBClick(Sender: TObject);
begin
  AddGB.Visible:=false;
end;

procedure TFrmBookRoom.ModNoSBClick(Sender: TObject);
begin
  ModGB.Visible:=false;
end;

procedure TFrmBookRoom.MKindCBChange(Sender: TObject);
var
  Room:string;
begin
   if KindCB.Text='待定' then exit;
   with DataModule1.qHRoomState do
   begin
     Close;
     SQL.Clear;
     SQL.Add('select RoomID from tbHRoomState');
     SQL.Add('where RoomKind="'+MKindCB.Text+'" and RoomState<>"住满"');
     Open;
     MAddRoomCB.Clear;
     First;
     while not eof do
     begin
       Room:=FieldByName('RoomID').AsString;
       if  MAddRoomCB.Items.IndexOf(Room)<0 then
         MAddRoomCB.Items.Add(Room);
       Next;
     end;
  end;
end;

procedure TFrmBookRoom.MAddRoomCBChange(Sender: TObject);
var
  Bed:string;
begin
   with DataModule1.qHRoomState do
   begin
     Close;
     SQL.Clear;
     SQL.Add('select BedID from tbHRoomState');
     SQL.Add('where RoomID="'+MAddRoomCB.Text+'" and BedState="空闲"');
     Open;
     First;
     MAddBedCB.Clear;
     while not eof do
     begin
       Bed:=FieldByName('BedID').AsString;
       if  MAddBedCB.Items.IndexOf(Bed)<0 then
         MAddBedCB.Items.Add(Bed);
       Next;
     end;
  end;
end;
procedure TFrmBookRoom.Refresh;
var
  i:word;
begin
  DataModule1.tBookRoom.Close;
  DataModule1.tBookRoom.Open;
  for i:=0 to 7 do
  begin
    DBGrid1.Columns[i].Title.caption:=Title[i];
    DBGrid1.Columns[i].Title.Alignment:=taCenter;
    DBGrid1.Columns[i].Alignment:=taCenter;
  end;
end;

procedure TFrmBookRoom.DelTButtonClick(Sender: TObject);
var
   SQLStr,Room,Bed :String;
begin
  if  DataModule1.tBookRoom.IsEmpty then Exit;
  if Application.MessageBox('确实需要删除记录吗!',
       '提示',MB_YesNo+MB_IconExclamation+MB_SystemModal)=IDYES then
  begin
    Room:=DataModule1.tBookRoom.Fields[4].AsString;
    Bed:=DataModule1.tBookRoom.Fields[5].AsString;
    DataModule1.tBookRoom.Delete;
  end;
  ReFresh;
  SQLStr:='BEGIN TRAN MyTran '
         +' UPDATE tbHRoomState SET BedState="空闲" '
         +' Where RoomID="'+Room+'" and BedID="'+Bed+'"'
         +' UPDATE tbHRoomState SET RoomState="空闲"'
         +' Where RoomID="'+Room+'"'
         +' if (Select Count(*) from tbHRoomState '
         +' where RoomID="'+Room+'" AND BedState="入住")>0'
         +' BEGIN'
         +' UPDATE tbHRoomState SET RoomState="入住"'
         +' Where RoomID="'+Room+'"'
         +' END'
         +' COMMIT TRAN';
  with DataModule1.qGRoomFee  do
  begin
    Close;
    SQL.Clear;
    SQL.Add(SQLStr);
    ExecSQL;
  end;
end;

procedure TFrmBookRoom.ToolButton1Click(Sender: TObject);
begin
  Close;
end;

procedure TFrmBookRoom.ToolButton2Click(Sender: TObject);
var
 DynamicForm:TDynamicForm;
 GridPrint:TGridPrint;
begin
  DynamicForm:=TDynamicForm.Create(Application);
  with DynamicForm do
  begin
//    DynamicForm.QuickRep.Page.Orientation:=poLandscape;
    GridPrint:=TGridPrint.Create(QuickRep,DBGrid1,TitleB,HeaderB,DetailB,
                      '预定房间或床位信息表');
    GridPrint.DoPreview();
    GridPrint.Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -