unitsroombook_data.pas
来自「自己做过的工程」· PAS 代码 · 共 238 行
PAS
238 行
unit unitsroombook_data;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
Tformsroombook_data = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
but_ok: TButton;
but_cancel: TButton;
dtp_booktime: TDateTimePicker;
dtp_arrivetime: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
ed_username: TEdit;
ed_sroomno: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
ed_userno: TEdit;
Label6: TLabel;
riched_note: TRichEdit;
procedure but_cancelClick(Sender: TObject);
procedure but_okClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formsroombook_data: Tformsroombook_data;
implementation
uses unitDMHotel,unitlogging,unitsupmanage,unitsroombook;
{$R *.dfm}
procedure Tformsroombook_data.but_cancelClick(Sender: TObject);
begin
close;
end;
//保存记录
procedure Tformsroombook_data.but_okClick(Sender: TObject);
var
ls_username,ls_sroomno,ls_userno,ls_note:string;
ls_booktime,ls_arrivetime:Tdatetime;
ls_sroomstatus:string;
statuscolor:Tcolor;
itemtype,itemno:string;
ls_sroomno_before_modify:string; //记录修改前方间编号
test_userno:integer;
begin
//丛输入框中取数据,插入到sroom_book表中或用作修改
ls_username:=ed_username.Text;
ls_sroomno:=ed_sroomno.Text;
ls_userno:=ed_userno.Text;
ls_booktime:=dtp_booktime.Date;
ls_arrivetime:=dtp_arrivetime.Date;
ls_note:=riched_note.Text;
//如果未输入客人名
if ls_username='' then
begin
showmessage('请输入客人名字!');
ed_username.Text:='';
ed_username.SetFocus;
exit;
end;
//判断是否是数字型
if (not tryStrToInt(ls_userno,test_userno)) and (trim(ls_userno)<>'') then
begin
MessageBox(handle,'您输入的客人数不是一个数字类型!','错误',MB_OK or MB_ICONERROR);
ed_userno.Text:='';
ed_userno.SetFocus;
exit;
end;
//找到该包间的记录
DMHotel.ds_sup_room_status.Requery;
if not DMHotel.ds_sup_room_status.Locate('sroomno',ls_sroomno,[])then
begin
showmessage('包间编号'+ls_sroomno+'不存在!');
ed_sroomno.Text:='';
ed_sroomno.SetFocus;
exit;
end;
//取得包间状态,判断是否能被预定
ls_sroomstatus:=DMHotel.ds_sup_room_status.FieldValues['sroomstatus'];
if addormodify=1 then //录入状态
begin
if ls_sroomstatus<>'空闲' then
begin
showmessage('该包间不在空闲状态,不能被预定!');
ed_sroomno.Text:='';
ed_sroomno.SetFocus;
exit;
end;
end
else
begin //修改状态
//取得原包间编号
ls_sroomno_before_modify:=DMHotel.ds_sroom_book.FieldByName('sroomno').AsString;
//如果包间编号被修改,需要再次判断包间状态
if trim(ls_sroomno_before_modify)<>trim(ls_sroomno) then
if ls_sroomstatus<>'空闲' then
begin
showmessage('该包间不在空闲状态,不能被预定!');
ed_sroomno.Text:='';
ed_sroomno.SetFocus;
exit;
end;
end;
//确认是否要保存
if MessageDlg('您确定要保存该记录吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
//进行修改包间状态、回写最大记录号(插入记录时)和对包间预定记录处理的工作
//DMHotel.ADOConnection1.BeginTrans;
//预定的颜色
statuscolor:=color2;
//改变将被预定包间状态
formsupmanage.sroomstatus_change(statuscolor,strtoint(ls_sroomno),'预定');
//进行插入或修改操作
if AddorModify=1 then
//插入记录。回写最大记录号和插入包间预定记录
begin
//先从item_number表中取出最大记录号,再做相应处理
itemtype:='sroombookid';
itemno:='0';
DMHotel.FindMaxNumber(itemtype,itemno);
//执行插入包间预定表记录和将最大值回写入item_number表
//插入预定记录
SQL:='insert into sroom_book '+'values('+''''+itemno+''''+','+
''''+ls_username+''''+','+''''+ls_userno+''''+','+
''''+datetostr(ls_booktime)+''''+','+''''+datetostr(ls_arrivetime)+''''+','+
''''+ls_sroomno+''''+','+''''+username+''''+','+
''''+ls_note+''''+')';
//showmessage(sql);////
DMHotel.ADOQuery1.SQL.Text:=SQL;
try
DMHotel.ADOQuery1.ExecSQL;
except
showmessage('录入失败!');
DMHotel.ADOConnection1.RollbackTrans;
exit;
end;
//将最大值回写
DMHotel.RewriteMax(itemtype,itemno);
end
else
//修改记录。修改预定记录,同时还要将修改前预定记录中的包间状态置为空闲(如果包间编号已改变)
begin
DMHotel.ADOConnection1.BeginTrans;
//如果包间编号被修改,需要修改前预定记录中的包间状态置为空闲
if trim(ls_sroomno_before_modify)<>trim(ls_sroomno) then
begin
//修改原记录中包间状态
//空闲的颜色
statuscolor:=color1;
//改变为空闲状态
formsupmanage.sroomstatus_change(statuscolor,strtoint(ls_sroomno_before_modify),'空闲');
end;
//修改预定记录
itemno:=DMHotel.ds_sroom_book.FieldByName('sroomid').AsString;
SQL:='update sroom_book '+'set username='+''''+ls_username+''''+','+
'userno='+''''+ls_userno+''''+','+
'sroomno='+''''+ls_sroomno+''''+','+
'booktime='+''''+datetostr(ls_booktime)+''''+','+
'arrivetime='+''''+datetostr(ls_arrivetime)+''''+','+
'remark='+''''+ls_note+''''+' '+
'where sroomid='+''''+itemno+'''';
//showmessage(sql); ////
DMHotel.ADOQuery1.SQL.Text:=SQL;
try
DMHotel.ADOQuery1.ExecSQL;
except
showmessage('修改失败!');
DMHotel.ADOConnection1.RollbackTrans; //失败回滚
exit;
end;
DMHotel.ADOConnection1.CommitTrans; //成功提交
end;
DMHotel.ds_sroom_book.Requery;
close;
end;
//显示窗口时的初始设置
procedure Tformsroombook_data.FormShow(Sender: TObject);
begin
//确保数据集打开
DMHotel.ds_sroom_book.Open;
if AddorModify=0 then //修改状态
begin
ed_username.Text:=DMHotel.ds_sroom_book.FieldByName('username').AsString;
ed_sroomno.Text:=DMHotel.ds_sroom_book.FieldByName('sroomno').AsString;
ed_userno.Text:=DMHotel.ds_sroom_book.FieldByName('userno').AsString;
dtp_booktime.Date:=DMHotel.ds_sroom_book.FieldByName('booktime').AsDateTime;
dtp_arrivetime.Date:=DMHotel.ds_sroom_book.FieldByName('arrivetime').AsDateTime;
riched_note.Text:=DMHotel.ds_sroom_book.FieldByName('remark').AsString;
ed_username.SetFocus;
end
else //录入状态
begin
//清空原来的目录
ed_username.Text:='';
ed_sroomno.Text:='';
ed_userno.Text:='';
dtp_booktime.Date:=date;
dtp_arrivetime.Date:=date;
riched_note.Text:='';
ed_username.SetFocus;
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?