📄 bookroomunit.~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 + -