📄 unitinroom.pas
字号:
vroomid:=ed_roomid.Text;
if ed_roomid.Text='' then
begin
showmessage('你的输入的房间号为空,请重新输入!');
exit; //exit跳出本次事件!:)
end;
if not trystrtoint(ed_roomid.Text,vtest) then
begin
messagebox(handle,'你输入的房间号不是个整数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//这个必须放到这个地方,要进行转换就必须要这个不能为空
vcolorroomid:=strtoint(ed_roomid.Text);
if ed_username.Text='' then
begin
showmessage('你的输入的房客姓名为空,请重新输入!');
exit;
end;
DMHotel.ADODataSetroomstatus.Open;
if not DMHotel.ADODataSetroomstatus.Locate('roomid',vroomid,[])then
begin
showmessage('房间编号'+vroomid+'不存在!');
exit;
end
else
begin
//要判断要入住的房间状态是否可以入住
DMHotel.ADODataSet_roomstatus.Open;
DMHotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
vroomstatus:=DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString;
DMHotel.ADODataSet_roomstatus.Close;
if vroomstatus='停用' then
begin
showmessage(vroomid+'房间处于停用状态,请换个房间,或确认该房间是否已经可用!');
exit;
end;
if vroomstatus='使用' then
begin
showmessage(vroomid+'房间处于使用中,请换个房间并确定其状态');
exit;
end;
//如果是在预定状态就要将这个预定表中的记录删除
if vroomstatus='预定' then
begin
// showmessage('d');
DMHotel.ADODataSet_roombook.Open;
with DMHotel.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('Delete from room_book');
sql.Add('Where roomid=:roomid');
Parameters.ParamByName('roomid').Value:=vroomid;
end;
try
DMHotel.ADOQuery1.ExecSQL;
except
showmessage('删除失败!');
// DMHotel.ADOConnection1.RollbackTrans;
exit;
end;
DMhotel.ADODataSet_roombook.Requery;
end;
end;
//满足入住条件后就要进行入住的登记 ,这个和预定中的处理是一样的
//一要将数据加入room_in表中,然后要改变相应的room_status表中的房间状态
//两个字段一个是状态一个是状态表示数字 ,vroomid 是整形的
DMHotel.ADOConnection1.BeginTrans;
DMHOtel.ADODataSet_roomin.Open;
DMHotel.ADODataSet_roomstatus.Open;
//以下是对 ADODataSet_itemnumber中roomincodemanamge记录的操作,加1
vitemtype:='roominmanagecode';
DMHotel.ADODataSet_itemnumber.Close;
DMHotel.ADODataSet_itemnumber.Open;
DMHotel.ADODataSet_itemnumber.Locate('itemtype',vitemtype,[]);
vcoderoom:=strtoint(DMHotel.ADODataSet_itemnumber.FieldByName('itemno').AsString);
// showmessage(inttostr(vcoderoom));
vcoderoom:=vcoderoom+1;
DMHotel.ADODataSet_itemnumber.Edit;
DMHotel.ADODataSet_itemnumber.FieldByName('itemno').AsString:=inttostr(vcoderoom);
DMHotel.ADODataSet_itemnumber.Post;
// showmessage(inttostr(vcoderoom));
DMHotel.ADODataSet_itemnumber.Close;
//以下是对数据的添加操作不仅要添加还要改变房间的状态
with DMHotel.ADOQuery1 do
begin
close;//关闭以前的查询
sql.Clear;
sql.Add('Insert into room_in(code,roomid,roomtype,username,certificatetype,certificateid,nativeplace,userno,usersex,employeeid,intime,leftornot,remark,realintime,bookmoney)');
sql.Add('Values (:code,:roomid,:roomtype,:username,:certificatetype,:certificateid,:nativeplace,:userno,:usersex,:employeeid,:intime,:leftornot,:remark,:realintime,:bookmoney)');
//以下是各个字段分别的进行赋值操作
parameters.ParamByName('code').Value:=vcoderoom;
parameters.ParamByName('roomid').Value:=ed_roomid.Text;
Parameters.ParamByName('roomtype').Value:=cb_roomtype.Text;
Parameters.ParamByName('username').Value:=ed_username.Text;
Parameters.ParamByName('certificatetype').Value:=cb_certificatetpye.Text;
Parameters.ParamByName('certificateid').Value:=ed_certificateid.Text;
Parameters.ParamByName('nativeplace').Value:=ed_nativeplace.Text;
Parameters.ParamByName('userno').Value:=ed_userno.Text;
Parameters.ParamByName('usersex').Value:=ed_usersex.Text;
Parameters.ParamByName('employeeid').Value:=ed_employeeid.Text;
Parameters.ParamByName('intime').Value:=date+time;
Parameters.ParamByName('leftornot').Value:='no';
Parameters.ParamByName('remark').Value:= ed_remark.Text;
Parameters.ParamByName('realintime').Value:=date+time;
Parameters.ParamByName('bookmoney').Value:=ed_bookmoney.Text;
close;
end;
// DMHOtel.ADODataSet_roomin.Requery;
//下面是要对room-status表的改变。即要改变其状态表,两个参数
// DMHotel.ADODataSet_roomstatus.Open;
DMHotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
DMHotel.ADODataSet_roomstatus.Edit;//使处于编辑状态
DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString:='使用';
DMHotel.ADODataSet_roomstatus.FieldByName('statusid').AsString:=inttostr(3);
DMHOtel.ADODataSet_roomstatus.Post;
//下面是对主界面上房间标识颜色的改变
forminroom.fun_roomcolorchange(vcolorroomid,clAqua) ;
try
DMHotel.ADOQuery1.ExecSQL;
showmessage('记录已经成功的添加!');
except
DMHotel.ADOConnection1.RollbackTrans;
showmessage('入录失败');
exit;
end;
DMHotel.ADOConnection1.CommitTrans;
DMHotel.ADODataSet_roomstatus.Requery;
DMHotel.ADODataSet_roomin.Requery;
DMHOtel.ADODataSet_roomstatus.Close;
//要将光标停留在最后一个添加的房间号上 ,必须放在requery后面
DMHotel.ADODataSet_roomin.Locate('roomid',vroomid,[]);
//清除
ed_roomid.Clear;
ed_username.Clear;
ed_certificateid.Clear;
ed_nativeplace.Clear;
ed_userno.Clear;
// ed_employeeid.Clear;
ed_bookmoney.Clear;
ed_remark.Clear;
// DMHotel.ADODataSet_roomin.Close;
end;
procedure Tforminroom.Button6Click(Sender: TObject);
begin
close;
end;
procedure Tforminroom.Button5Click(Sender: TObject);
begin
if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
memo_remark.Lines.Clear;
ed_errorroomid.Clear;
end;
procedure Tforminroom.Button2Click(Sender: TObject);
var
remark:string;
vroomid:string;
vleftornot:string;
vtest:integer;
begin
if ed_errorroomid.Text='' then
begin
messagebox(handle,'你没有输入房间号,请重新输入','错误',MB_OK OR MB_ICONERROR);
exit;
end;
if not trystrtoint(ed_errorroomid.Text,vtest) then
begin
messagebox(handle,'你输入的房间号不是个整数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
remark:=memo_remark.Lines.Text;
if remark='' then
begin
messagebox(handle,'你没有出入出错备注的信息,请重新输入','错误',MB_OK OR MB_ICONERROR);
exit;
end;
// showmessage(remark);
vroomid:=ed_errorroomid.Text;
//要先对房间号进行判断
//这个东西应该用函数
DMHotel.ADODataSetroomstatus.Open;
if not DMHotel.ADODataSetroomstatus.Locate('roomid',vroomid,[])then
begin
showmessage('房间编号'+vroomid+'不存在!');
exit;
end ;
//将这个信息写到error_remark字段
DMHOtel.ADODataSet_roomin.Open;
//这个地方必须要用多值查询。也可用locate函数实现,但是必须要注意参数的方式!
DMHotel.ADODataSet_roomin.Locate('roomid;leftornot',vararrayof([vroomid,'no']),[]);
DMHotel.ADODataSet_roomin.Edit;
DMHotel.ADODataSet_roomin.FieldByName('error_remark').AsString:=remark;
DMHotel.ADODataSet_roomin.Post;
DMHotel.ADODataSet_roomin.Close;
memo_remark.Lines.Clear;
ed_errorroomid.Clear;
end;
procedure Tforminroom.Button3Click(Sender: TObject);
begin
if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
ed_roomid.Clear;
ed_username.Clear;
ed_certificateid.Clear;
ed_nativeplace.Clear;
ed_userno.Clear;
//ed_employeeid.Clear;
ed_bookmoney.Clear;
ed_remark.Clear;
end;
procedure Tforminroom.TabSheet1Show(Sender: TObject);
begin
DMHotel.ADODataSet_roomin.Open;
DMHotel.ADODataSet_roomin.Requery;
ed_intime.Text:=datetimetostr(date+time);
//如果将数据集关闭就会在dbgrid中没有显示
//DMHotel.ADODataSet_roomin.Close;
end;
procedure Tforminroom.FormShow(Sender: TObject);
begin
ed_employeeid.Text:=username;
// DMHotel.ADODataSet_roomin.Open;
// DMHotel.ADODataSet_roomin.Requery;
end;
procedure Tforminroom.BitBtn1Click(Sender: TObject);
begin
formchangeroom.ShowModal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -