📄 inputguestinfunit.~pas
字号:
unit InputGuestInfUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Spin, StdCtrls, ComCtrls,DB, Mask, ExtCtrls, Buttons;
type
TFrmInputGInfo = class(TForm)
InputGB: TGroupBox;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
Label11: TLabel;
Label12: TLabel;
NameEdit: TEdit;
SexCB: TComboBox;
CardNameCB: TComboBox;
BornPlaceCB: TComboBox;
CardIDEdit: TEdit;
CompanyEdit: TEdit;
DutyCB: TComboBox;
AgeCB: TComboBox;
KindCB: TComboBox;
Label15: TLabel;
Label16: TLabel;
RoomCB: TComboBox;
Label17: TLabel;
BedCB: TComboBox;
Label10: TLabel;
PriceEdit: TEdit;
Label7: TLabel;
PlanDaysCB: TComboBox;
Label8: TLabel;
ForegiftCB: TComboBox;
Label9: TLabel;
EnterME: TMaskEdit;
Panel1: TPanel;
OkSB: TSpeedButton;
SpeedButton2: TSpeedButton;
Shape1: TShape;
PrintSB: TSpeedButton;
Panel3: TPanel;
Label13: TLabel;
WaitessL: TLabel;
NameL: TLabel;
Shape2: TShape;
Label14: TLabel;
Shape3: TShape;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure NextButtonClick(Sender: TObject);
procedure EnterMEClick(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure OkSBClick(Sender: TObject);
procedure KindCBChange(Sender: TObject);
procedure RoomCBChange(Sender: TObject);
procedure PlanDaysCBChange(Sender: TObject);
procedure PrintSBClick(Sender: TObject);
private
ID:string;
{ Private declarations }
public
{ Public declarations }
end;
var
FrmInputGInfo: TFrmInputGInfo;
function GetMyDateTime : TDateTime; stdcall; external 'MyDll.dll';
implementation
uses DataModuleUnit, InputGRoomUnit, GetYourInputUnit;
{$R *.dfm}
procedure TFrmInputGInfo.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TFrmInputGInfo.FormCreate(Sender: TObject);
begin
KindCB.Items :=FindRoomKind;
KindCB.Items.Insert(0,'');
EnterME.Text:=DateTimeToStr(Now);
end;
procedure TFrmInputGInfo.NextButtonClick(Sender: TObject);
begin
NameEdit.Text:='';
AgeCB.Text:='';
BornPlaceCB.Text:='';
DutyCB.Text:='';
PlanDaysCB.Text:='';
ForegiftCB.Text:='';
CardIDEdit.Text:='';
EnterME.Text:='';
CompanyEdit.Text:='';
FrmInputGRoom:=TFrmInputGRoom.Create(self);
end;
procedure TFrmInputGInfo.EnterMEClick(Sender: TObject);
var
MyDate:TDateTime;
begin
MyDate:=GetMyDateTime;
ID:=CreateNewID(MyDate);
EnterME.Text:=DateTimeToStr(MyDate);
OkSB.Enabled:=true;
end;
procedure TFrmInputGInfo.SpeedButton2Click(Sender: TObject);
begin
Close;
end;
procedure TFrmInputGInfo.OkSBClick(Sender: TObject);
var
SQLStr:TStrings;
begin
if (NameEdit.Text='')or(CardNameCB.Text='')or(CardIDEdit.Text='')or
(KindCB.Text='')or(RoomCB.Text='')or(BedCB.Text='')or(EnterME.Text='')or
(not IsInteger(PriceEdit.Text)) or
(not IsInteger(AgeCB.Text)) or
(not IsInteger(PlanDaysCB.Text))or
(not IsInteger(ForegiftCB.Text)) then
begin
ShowMessage('输入的信息不完整或有错误,请再检查一下,好吗?');
Exit;
end;
with DataModule1.qGInfo do
begin
Close;
SQL.Clear;
SQL.Add('Select * from tbGInfo where GuestName="'+NameEdit.Text+'"');
SQL.Add(' AND CardID="'+CardIDEdit.Text+'"');
Open;
if Not IsEmpty then
begin
Showmessage('登记的客户中,存在姓名和证件号码相同者,请重新确认!');
exit;
end;
end;
SQLStr:=TStringList.Create;
SQLStr.Add('BEGIN TRAN MyTran');
//插入客户基本信息到 tbGInfo 表中
SQLStr.Add('INSERT INTO tbGInfo VALUES(');
SQLStr.Add(ID+','); //姓名
SQLStr.Add('"'+NameEdit.Text+'",'); //姓名
SQLStr.Add('"'+SexCB.Text+'",'); //性别
SQLStr.Add(AgeCB.Text+','); // 年龄
SQLStr.Add('"'+BornPlaceCB.Text+'",'); //出生地
SQLStr.Add('"'+CardNameCB.Text+'",'); //证件类型
SQLStr.Add('"'+CardIDEdit.Text+'",'); //证件号码
SQLStr.Add('"'+CompanyEdit.Text+'",'); //公司
SQLStr.Add('"'+DutyCB.Text+'",'); //职务
SQLStr.Add(PlanDaysCB.Text+','); //拟住天数
SQLStr.Add(ForegiftCB.Text+','); //押金
SQLStr.Add('"'+EnterME.Text+'",'); //入住时间
SQLStr.Add('" ")'); //结算时间
//----------更新床位信息表
//该房间中的该床位更新换为入住状态
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('INSERT INTO tbGRoomFee VALUES(');
SQLStr.Add(ID+','); //客户编号
SQLStr.Add('"'+NameEdit.Text+'",'); //姓名
SQLStr.Add('"'+CardIDEdit.Text+'",'); //证件号码
SQLStr.Add('"'+RoomCB.Text +'",'); //房间号
SQLStr.Add('"'+BedCB.Text+'",'); //床位号
SQLStr.Add(PriceEdit.Text+','); //床位价格
SQLStr.Add('0,'); //使用天数
SQLStr.Add('"'+EnterME.Text+'",'); //使用时间
SQLStr.Add('" ")'); //停用时间
// 建立该客户宾馆消费档案记录
SQLStr.Add('INSERT INTO tbGHotelFee VALUES(');
SQLStr.Add(ID+','); //客户编号
SQLStr.Add('"'+NameEdit.Text+'",'); //姓名
SQLStr.Add('"'+CardIDEdit.Text+'",'); //证件号码
SQLStr.Add('0,'); //商务费
SQLStr.Add('0,'); // 餐费
SQLStr.Add('0,'); //娱乐费
SQLStr.Add('0,'); //购物费
SQLStr.Add('0,'); //其它费用
SQLStr.Add('" ")'); //消费时间
//提交
SQLStr.Add('COMMIT TRAN');
with DataModule1.qGInfo do
begin
Close;
SQL.Clear;
SQL.AddStrings(SQLStr);
try
ExecSQL;
Showmessage('客户 '+NameEdit.Text+' 住宿登记完毕!');
NameEdit.Text:='';//姓名
AgeCB.Text:=''; // 年龄
BornPlaceCB.Text:=''; //出生地
CardIDEdit.Text:=''; //证件号码
KindCB.ItemIndex:=0;
CompanyEdit.Text:=''; //公司
DutyCB.Text:=''; //职务
PlanDaysCB.Text:=''; //拟住天数
ForegiftCB.Text:=''; //押金
EnterME.Text:='';
PrintSB.Enabled:=true;
except On E:Exception do
Application.MessageBox(PChar('操作失败!'+E.Message),'提示:',MB_ICONERROR);
end;
end;
end;
procedure TFrmInputGInfo.KindCBChange(Sender: TObject);
var
S:string;
begin
RoomCB.Items:=RoomKindCBChange(KindCB.Text,S);
PriceEdit.Text:=S;
end;
procedure TFrmInputGInfo.RoomCBChange(Sender: TObject);
begin
BedCB.Items:=RoomIDChange(RoomCB.Text);
end;
procedure TFrmInputGInfo.PlanDaysCBChange(Sender: TObject);
var
P,D:integer;
begin
if (Not IsInteger(PlanDaysCB.Text))or(PriceEdit.Text='') then exit;
P:=StrToInt(PriceEdit.Text);
D:=StrToInt(PlanDaysCB.Text);
ForegiftCB.Text:=IntToStr(P*D+50);
end;
procedure TFrmInputGInfo.PrintSBClick(Sender: TObject);
begin
Panel1.Visible:=false;
Print;
Panel1.Visible:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -