unitdmhotel.~pas
来自「自己做过的工程」· ~PAS 代码 · 共 1,062 行 · 第 1/4 页
~PAS
1,062 行
unit unitDMHotel;
interface
uses
SysUtils, Classes, ADODB, DB,DateUtils,QForms,dialogs,Controls,Variants;
type
TDMHotel = class(TDataModule)
ADOQuery1: TADOQuery;
ds_sup_room_status_query: TADODataSet;
ds_sup_check_query: TADODataSet;
ds_sup_detail: TADODataSet;
ds_sup_consume_detail: TADODataSet;
ds_sroom_book: TADODataSet;
ds_sys_log: TADODataSet;
ds_sys_user: TADODataSet;
ds_sup_room_status: TADODataSet;
ds_dictionary: TADODataSet;
ds_dictionary_setsuptype: TADODataSet;
ds_room_price_set: TADODataSet;
ds_sup_price_set: TADODataSet;
ds_sroom_book_query: TADODataSet;
ds_sup_detail_query: TADODataSet;
ADODataSetitemnumber: TADODataSet;
ADODataSetroombookquery: TADODataSet;
ADODataSetroominquery: TADODataSet;
ADODataSetroomstatus: TADODataSet;
ds_sup_consume_detail_query: TADODataSet;
ADODataSet_roomin: TADODataSet;
ADODataSet_itemnumber: TADODataSet;
ADODataSet_roombook: TADODataSet;
ADODataSet_roomdebt: TADODataSet;
ADODataSet_roomfee: TADODataSet;
ADODataSet_roomstatus: TADODataSet;
ADODataSet_customerdebt: TADODataSet;
DataSource_roomdebt: TDataSource;
DataSource_roombook: TDataSource;
DataSource_roomin: TDataSource;
DataSource_itemnumber: TDataSource;
DataSource_customerdebt: TDataSource;
ADODataSet_roomredebt_requery: TADODataSet;
ADODataSet_roomstatus_requery: TADODataSet;
ADODataSet_roomfee_requery: TADODataSet;
ADODataSet_roomdebt_requery: TADODataSet;
ADODataSet_customerdebt_requery: TADODataSet;
ADODataSet_customerRedebt_requery: TADODataSet;
ADOConnection1: TADOConnection;
private
{ Private declarations }
public
procedure FindMaxNumber(itemtype:string;var itemno:string); //取出最大记录号
procedure RewriteMax(itemtype:string;itemno:string); //回写最大值
procedure SetSyslogView(username:string;date1:TDate);
procedure SetSupConsumeDetailView(sdid:string);
procedure SetSupConsumeDetailQueryView(sdid:string);
procedure SetDebtView1(oldusername:string;var oldtotalfee:extended);
procedure SetCustomerView(oldcustomername:string;var oldcustomertotalfee:extended);
procedure SroomBookQuery(ls_username:string;ls_sroomno:string;ls_arrivetime:Tdatetime;usernameCK:boolean;sroomnoCK:boolean;arrivetimeCK:boolean);
//包间预定查询
procedure SupDetailQuery(ls_username:string;ls_sroomno:string;ls_entertime:Tdatetime;ls_ischeck:string;usernameCK:boolean;sroomnoCK:boolean;entertimeCK:boolean);
//包间状况查询
procedure RoomBookQuery(ls_username:string;ls_roomid:string;ls_booktime:Tdatetime;usernameCK:boolean;roomidCK:boolean;booktimeCK:boolean);
//客房预定查询
procedure RoomQuery(ls_username:string;ls_roomid:string;ls_intime:Tdatetime;ls_leftornot:string;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean);
//客房状况查询
procedure SroomCheckQuery(ls_sroomno:string;ls_Bchecktime:Tdatetime;ls_Echecktime:TDatetime;ls_issign:string;sroomnoCK:boolean;ischeckCK:boolean;checktimeCK:boolean);
//包间帐务查询
procedure SroomStatusQuery(ls_sroomstatus:string;ls_sroomno:string;sroomstatusCK:boolean;sroomnoCK:boolean);
//包间状态查询
//添加的 部分
procedure RoomFeeQuery(ls_username:string;ls_roomid:string;ls_intime:Tdatetime;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean;var totalmoney:extended);
//房客现金支付帐单查询
procedure RoomDebtQuery(ls_checkedornot:string;ls_username:string;ls_roomid:string;ls_intime:Tdatetime;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean;var totalmoney:extended);
procedure RoomreDebtQuery(ls_checkedornot:string;ls_username:string;ls_roomid:string;ls_intime:Tdatetime;usernameCK:boolean;roomidCK:boolean;intimeCK:boolean;var totalmoney:extended);
//房客挂帐支付帐单查询
procedure CustomerDebtQuery(ls_checkedornot:string;ls_username:string;var totalmoney:extended);
procedure CustomerreDebtQuery(ls_checkedornot:string;ls_username:string;var totalmoney:extended );
//非房客的消费和挂帐的查询
procedure RoomStatusQuery(ls_roomstatus:string);
//总经理对客房状态的查询
procedure ManagerRoomFeeQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;var totalmoney:extended);
//总经理对客房现金支付状况的查询
procedure ManagerRoomDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string; var totalmoney:extended);
//总经理对房客挂帐支付和现有帐单状况的查询
procedure ManagerRoomReDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string; var totalmoney:extended);
//现有帐单状况的查询
procedure ManagerCustomerReDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string; var totalmoney:extended);
//非房客已还帐的查询
procedure ManagerCustomerDebtQuery(ls_username:string;ls_begintime:Tdatetime;ls_endtime:Tdatetime;usernameCK:boolean;ls_checkedornot:string; var totalmoney:extended);
//非房客的帐单查询
end;
var
DMHotel: TDMHotel;
SQL: string;
implementation
{$R *.dfm}
////////////////////////系统操作函数/////////////////////
//取出最大记录号
procedure TDMHotel.FindMaxNumber(itemtype:string;var itemno:string);
begin
ADODataSetitemnumber.Open;
if ADODataSetitemnumber.Locate('itemtype',itemtype,[])=false then
//如果数据库中找不到itemtype字段为变量itemtype的最大值的记录,添加一条
begin
ADOConnection1.BeginTrans; //定义事务
//这时itemno='0'
itemno:='0';
SQL:='insert into item_number(itemtype,itemno) '+'values('+
''''+itemtype+''''+','+''''+itemno+''''+')';
ADOQuery1.SQL.Text:=SQL;
try
ADOQuery1.ExecSQL; //注:原来程序中前面调用了open,结果导致出错(open和execSQL一般不并存)
except
showmessage('定义记录号失败!');
ADOConnection1.RollbackTrans; //回滚
end;
ADOConnection1.CommitTrans; //提交
end
else
//如果找到记录,取出最大值
//注:由于在SQL中不知如何处理select *** into :var 中的变量,所以没用ADOQurey
// 暂时用数据集ADODataSetitemnumber作
itemno:=ADODataSetitemnumber.FieldByName('itemno').AsString;
//如果原数据库中没有该记录,则此时itemno为初始值0,加1后用作记录号
itemno:=inttostr(strtoint(itemno)+1);
ADODataSetitemnumber.Close;
end;
//回写最大值
procedure TDMHotel.RewriteMax(itemtype:string;itemno:string);
begin
ADOConnection1.BeginTrans; //定义事务
SQL:='update item_number '+'set itemno='+''''+itemno+''''+' '+
'where itemtype='+''''+itemtype+'''';
ADOQuery1.SQL.Text:=SQL;
try
ADOQuery1.ExecSQL;
except
showmessage('记录号存储失败,将退出登录!');
ADOConnection1.RollbackTrans; //失败回滚
end;
ADOConnection1.CommitTrans; //成功提交
end;
///////////////////////窗口显示//////////////////////////
//日志
procedure TDMHotel.SetSyslogView(username:string;date1:TDate);
begin
ds_sys_log.Close;
ds_sys_log.Prepared:=false;
if username<>'' then
begin
ds_sys_log.CommandText:='select * from sys_log where loggingtime>=:D1 and username=:Name';
ds_sys_log.Parameters.ParamByName('Name').Value:=username;
end
else
ds_sys_log.CommandText:='select * from sys_log where loggingtime>=:D1';
ds_sys_log.Parameters.ParamByName('D1').DataType:=ftDate;
ds_sys_log.Parameters.ParamByName('D1').Value:=date1;
ds_sys_log.Prepared:=true;
ds_sys_log.Open;
end;
//显示就餐消费明细
procedure TDMHotel.SetSupConsumeDetailView(sdid:string);
begin
ds_sup_consume_detail.Close;
ds_sup_consume_detail.Prepared:=false;
ds_sup_consume_detail.Parameters.ParamByName('sdid').Value:=strtoint(sdid);
ds_sup_consume_detail.Prepared:=true;
ds_sup_consume_detail.Open;
end;
//查询就餐消费明细
procedure TDMHotel.SetSupConsumeDetailQueryView(sdid:string);
begin
ds_sup_consume_detail_query.Close;
ds_sup_consume_detail_query.Prepared:=false;
ds_sup_consume_detail_query.Parameters.ParamByName('sdid').Value:=strtoint(sdid);
//ds_sup_consume_detail_query.CommandText:='select * from sup_consume_detail where supuserid='+''''+sdid+'''';
ds_sup_consume_detail_query.Prepared:=true;
ds_sup_consume_detail_query.Open;
end;
///////////////////////////////////////////////////
procedure TDMHotel.SetDebtView1(oldusername:string;var oldtotalfee:extended);
//var
//yesornot:string;
begin
// DMhotel.ADOConnection1.BeginTrans;
DMHotel.ADODataSet_roomdebt.Close;
DMHotel.ADODataSet_roomdebt.Prepared:=false;
//这个地方不能用变量 .一定要用这种查询的形式!
//首先要进行条件判断 >=:N1 and username<=:N2 username like and
DMHotel.ADODataSet_roomdebt.CommandText:='select * from room_debt where '+
'username=:oldusername and checkornot=:yesornot' ;
DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('oldusername').Value:=oldusername;
DMHotel.ADODataSet_roomdebt.Parameters.ParamByName('yesornot').Value:='欠账';
//在这里进行统一的结算所有的帐单
DMHotel.ADODataSet_roomdebt.Prepared:=true;
DMHotel.ADODataSet_roomdebt.Open;
DMHotel.ADODataSet_roomdebt.First;
oldtotalfee:=0;
while not DMHotel.ADODataSet_roomdebt.Eof do
begin
oldtotalfee:=oldtotalfee+DMHotel.ADODataSet_roomdebt.FieldValues['totalfee'];
DMHotel.ADODataSet_roomdebt.Next;
// showmessage('oldtotalfee');
end;
// DMHotel.ADODataSet_roomdebt.Close;
end;
procedure TDMHotel.SetCustomerView(oldcustomername:string;var oldcustomertotalfee:extended);
begin
DMHotel.ADODataSet_customerdebt.Close;
DMHotel.ADODataSet_customerdebt.Prepared:=false;
DMHotel.ADODataSet_customerdebt.CommandText:='select * from customer_debt where '+
'customername=:oldcustomername and checkornot=:yesornot' ;
DMHotel.ADODataSet_customerdebt.Parameters.ParamByName('oldcustomername').Value:=oldcustomername;
DMHotel.ADODataSet_customerdebt.Parameters.ParamByName('yesornot').Value:='欠账';
DMHotel.ADODataSet_customerdebt.Prepared:=true;
DMHotel.ADODataSet_customerdebt.Open;
DMHotel.ADODataSet_customerdebt.First;
oldcustomertotalfee:=0;
while not DMHotel.ADODataSet_customerdebt.Eof do
begin
oldcustomertotalfee:=oldcustomertotalfee+DMHotel.ADODataSet_customerdebt.FieldValues['totalfee'];
DMHotel.ADODataSet_customerdebt.Next;
end;
//DMHotel.ADODataSet_customerdebt.Requery;
end;
///////////////////////////////////////////////
/////////////////////查询////////////////////////////
//包间预定
procedure TDMHotel.SroomBookQuery(ls_username:string;ls_sroomno:string;ls_arrivetime:Tdatetime;usernameCK:boolean;sroomnoCK:boolean;arrivetimeCK:boolean);
begin
ds_sroom_book_query.Close;
ds_sroom_book_query.Prepared:=false;
if (usernameCK=true) and (sroomnoCK=true) and (arrivetimeCK=true) then
begin
ds_sroom_book_query.CommandText:='select * from sroom_book where username='+
''''+ls_username+''''+' and sroomno='+''''+ls_sroomno+''''+
' and arrivetime='+''''+datetostr(ls_arrivetime)+'''';
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?