📄 inputgroomunit.pas
字号:
unit InputGRoomUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Mask, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons, DB, DBTables,
ComCtrls;
type
TFrmInputGRoom = class(TForm)
DBGrid1: TDBGrid;
LocalDS: TDataSource;
Query1: TQuery;
AddPanel: TPanel;
DatePanel: TPanel;
DateOkSB: TSpeedButton;
DateCancelSB: TSpeedButton;
DateMC: TMonthCalendar;
TimeDTP: TDateTimePicker;
StatusBar1: TStatusBar;
IDLabel: TLabel;
Label2: TLabel;
Label7: TLabel;
Label5: TLabel;
StartME: TMaskEdit;
CardEdit: TEdit;
GuestNameEdit: TEdit;
GuestIDEdit: TEdit;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
PriceEdit: TEdit;
BedCB: TComboBox;
RoomCB: TComboBox;
KindCB: TComboBox;
UpdateOkSB: TSpeedButton;
AddCloseSB: TSpeedButton;
Shape1: TShape;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1CellClick(Column: TColumn);
procedure DateOkSBClick(Sender: TObject);
procedure StartMEDblClick(Sender: TObject);
procedure EndMEDblClick(Sender: TObject);
procedure UpdateOkSBClick(Sender: TObject);
procedure AddCloseSBClick(Sender: TObject);
procedure DateCancelSBClick(Sender: TObject);
procedure KindCBChange(Sender: TObject);
procedure RoomCBChange(Sender: TObject);
procedure BedCBChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmInputGRoom: TFrmInputGRoom;
implementation
uses DataModuleUnit, GetYourInputUnit;
{$R *.dfm}
procedure TFrmInputGRoom.FormCreate(Sender: TObject);
begin
with DataModule1.qGRoomFee do
begin
Close;
SQL.Clear;
SQL.Add('select * from tbGRoomFee_VIEW_2');
Open;
Last;
end;
KindCB.Items:=FindRoomKind;
end;
procedure TFrmInputGRoom.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TFrmInputGRoom.DBGrid1CellClick(Column: TColumn);
begin
with Query1 do
begin
Close;
Query1.DatabaseName:=DataModule1.qGRoomFee.DatabaseName;
SQL.Clear;
SQL.Add('select GuestID , GuestName ,CardID from tbGInfo ');
SQL.Add('where GuestName="'+Column.Grid.Fields[1].AsString+'" and' );
SQL.Add('CardID="'+Column.Grid.Fields[2].AsString+'"');
Open;
if ISEmpty then exit;
end;
GuestIDEdit.Text:=IntToStr(Query1.Fields[0].AsInteger);
GuestNameEdit.Text:=Query1.Fields[1].AsString;
CardEdit.Text:=Query1.Fields[2].AsString;
StartME.Text:=DateTimeToStr(Now);
AddPanel.Left:=(FrmInputGRoom.ClientWidth-AddPanel.Width) div 2 ;
AddPanel.Top:=(FrmInputGRoom.ClientHeight-AddPanel.Height) div 2;
if GuestIDEdit.Text<>'' then
begin
AddPanel.Visible:=true;
KindCB.ItemIndex:=0;
end;
end;
procedure TFrmInputGRoom.DateOkSBClick(Sender: TObject);
begin
StartME.Text:=DateToStr(DateMC.Date)+' '+TimeToStr(TimeDTP.Time);
DatePanel.Visible:=false;
end;
procedure TFrmInputGRoom.StartMEDblClick(Sender: TObject);
begin
DatePanel.Left:=10;
DatePanel.Top:=10;
DatePanel.Visible:=true;
end;
procedure TFrmInputGRoom.EndMEDblClick(Sender: TObject);
begin
// WhichMaskEdit:=2;
// DatePanel.Left:=20;
// DatePanel.Top:=20;
// DatePanel.Visible:=true;
end;
procedure TFrmInputGRoom.UpdateOkSBClick(Sender: TObject);
var
SQLStr:TStrings;
begin
if (KindCB.Text='')or(RoomCB.Text='')or(BedCB.Text='')or(StartME.Text='') then
begin
Showmessage('信息不完整!');
exit;
end;
SQLStr:=TStringList.Create;
//更新户tbGRoomFee表的信息
SQLStr.Add('BEGIN TRAN MyTran');
SQLStr.Add('UPDATE tbGRoomFee');
SQLStr.Add('SET GuestID='+GuestIDEdit.Text+',');
SQLStr.Add('RoomID="'+RoomCB.Text+'",');
SQLStr.Add('BedID="'+BedCB.Text+'",');
SQLStr.Add('BedPrice='+PriceEdit.Text+',');
SQLStr.Add('BedStartDateTime="'+StartME.Text+'",');
SQLStr.Add('BedEndDateTime=" "');
SQLStr.Add('Where GuestID=-1 and');
SQLStr.Add('GuestName="'+GuestNameEdit.Text+'" and');
SQLStr.Add('CardID="'+CardEdit.Text+'"');
//把宾馆消费客户表中的该客户的客户编号改为正式值
SQLStr.Add('UPDATE tbGHotelFee');
SQLStr.Add('SET GuestID='+GuestIDEdit.Text);
SQLStr.Add('Where GuestID=-1 and');
SQLStr.Add('GuestName="'+GuestNameEdit.Text+'" and');
SQLStr.Add('CardID="'+CardEdit.Text+'"');
//该房间中的该床位更新换为入住状态
SQLStr.Add('UPDATE tbHRoomState');
SQLStr.Add('SET BedState="入住"');
SQLStr.Add('Where RoomID="'+RoomCB.Text+'" and BedID="'+BedCB.Text+'"');
//该房间更新换为入住状态
SQLStr.Add('UPDATE tbHRoomState');
SQLStr.Add('SET RoomState="入住"');
SQLStr.Add('Where RoomID="'+RoomCB.Text+'"');
//如果该房中空闲床位已经是1 则房间状态更新为住满
SQLStr.Add('if (Select Count(*) from tbHRoomState ');
SQLStr.Add('where RoomID="'+RoomCB.Text+'" AND BedState="空闲")=0');
SQLStr.Add('BEGIN');
SQLStr.Add('UPDATE tbHRoomState ');
SQLStr.Add('SET RoomState="住满" ');
SQLStr.Add('Where RoomID="'+RoomCB.Text+'"');
SQLStr.Add('END');
SQLStr.Add('COMMIT TRAN');
with DataModule1.qGInfo do
begin
Close;
SQL.Clear;
SQL.AddStrings(SQLStr);
try
ExecSQL;
Showmessage('客户订房信息顺利写入数据库!');
except On E:Exception do
Application.MessageBox(PChar('操作失败!'+E.Message),'提示:',MB_ICONERROR);
end;
end;
AddPanel.Visible:=false;
with DataModule1.qGRoomFee do
begin
Close;
SQL.Clear;
SQL.Add('select * from tbGRoomFee_VIEW_2');
Open;
end;
end;
procedure TFrmInputGRoom.AddCloseSBClick(Sender: TObject);
begin
AddPanel.Visible:=false;
end;
procedure TFrmInputGRoom.DateCancelSBClick(Sender: TObject);
begin
DatePanel.Visible:=false;
end;
procedure TFrmInputGRoom.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;
RoomCB.Clear;
First;
while not eof do
begin
Room:=FieldByName('RoomID').AsString;
if RoomCB.Items.IndexOf(Room)<0 then
RoomCB.Items.Add(Room);
Next;
end;
end;
end;
procedure TFrmInputGRoom.RoomCBChange(Sender: TObject);
var
Bed:string;
begin
with DataModule1.qHRoomState do
begin
Close;
SQL.Clear;
SQL.Add('select BedID from tbHRoomState');
SQL.Add('where RoomID="'+RoomCB.Text+'" and BedState="空闲"');
Open;
First;
BedCB.Clear;
while not eof do
begin
Bed:=FieldByName('BedID').AsString;
if BedCB.Items.IndexOf(Bed)<0 then
BedCB.Items.Add(Bed);
Next;
end;
end;
end;
procedure TFrmInputGRoom.BedCBChange(Sender: TObject);
begin
with DataModule1.qHRoomState do
begin
Close;
SQL.Clear;
SQL.Add('select BedPrice from tbHRoomState');
SQL.Add('where RoomID="'+RoomCB.Text+'" and BedID="'+BedCB.Text+'"');
Open;
PriceEdit.Text:=FieldByName('BedPrice').Value;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -