📄 roommessageut.~pas
字号:
unit RoommessageUt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Buttons, ComCtrls, ExtCtrls;
type
TRoomMessFm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
RoomMessAdo: TADOQuery;
DataSource1: TDataSource;
Panel2: TPanel;
DBGrid1: TDBGrid;
Panel1: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
RoomEdit: TEdit;
NumEdit: TEdit;
UpDown1: TUpDown;
AddBt: TBitBtn;
EditBt: TBitBtn;
DelBt: TBitBtn;
FirstBt: TBitBtn;
ProBt: TBitBtn;
NextBt: TBitBtn;
LastBt: TBitBtn;
ClearBt: TBitBtn;
CloseBt: TBitBtn;
FindBt: TBitBtn;
totlepl: TPanel;
TypeEdit: TComboBox;
FloodEdit: TComboBox;
Label6: TLabel;
BedEdit: TEdit;
UpDown3: TUpDown;
StatusEdit: TEdit;
Label7: TLabel;
MsEdit: TEdit;
Label8: TLabel;
MemoEdit: TEdit;
pf: TCheckBox;
RoomMessAdo1: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure CloseBtClick(Sender: TObject);
procedure FloodEditChange(Sender: TObject);
procedure AddBtClick(Sender: TObject);
procedure TypeEditChange(Sender: TObject);
procedure EditBtClick(Sender: TObject);
procedure ClearBtClick(Sender: TObject);
procedure DelBtClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure FirstBtClick(Sender: TObject);
procedure ProBtClick(Sender: TObject);
procedure NextBtClick(Sender: TObject);
procedure LastBtClick(Sender: TObject);
procedure FindBtClick(Sender: TObject);
private
{ Private declarations }
procedure DataMove(para:integer);
public
{ Public declarations }
end;
var
RoomMessFm: TRoomMessFm;
str,str1:string;
vflood,vtype:integer;
vfloodname,vtypename:string;
implementation
uses hotelmis;
{$R *.dfm}
procedure TRoomMessFm.DataMove(para:integer);
var
vtypenum:string;
vfloodnum:string;
begin
with RoomMessAdo do
begin
if para=1 then
first
else if para=2 then
Prior
else if para=3 then
next
else if para=4 then
last;
vtypenum:=fieldbyname('类型编号').AsString;
vfloodnum:=fieldbyname('楼层编号').AsString;
with RoomMessAdo1 do
begin
close;
sql.clear;
sql.add('select 类型名称 from 客房类型表 where 类型编号=:typenum');
Parameters.ParamByName('typenum').Value:=vtypenum;
open;
vtypename:=fieldbyname('类型名称').asstring
end;
with RoomMessAdo1 do
begin
close;
sql.clear;
sql.add('select 楼层名称 from 楼层编号表 where 楼层编号=:floodnum');
Parameters.ParamByName('floodnum').Value:=vfloodnum;
open;
vfloodname:=fieldbyname('楼层名称').asstring;
end;
begin
RoomEdit.Text:=fieldbyname('客房编号').AsString;
TypeEdit.Text:=inttostr(vtype);
FloodEdit.Text:=inttostr(vflood);
NumEdit.Text:=fieldbyname('额定人数').AsString;
BedEdit.Text:=fieldbyname('床数').AsString;
StatusEdit.Text:=fieldbyname('状态').AsString;
MsEdit.Text:=fieldbyname('客房描述').AsString;
MemoEdit.Text:=fieldbyname('备注').AsString;
if fieldbyname('是否可拼房').AsBoolean then
Pf.Checked:=true
else
Pf.Checked:=false;
end;
end;
end;
procedure TRoomMessFm.FormCreate(Sender: TObject);
begin
FloodEdit.Clear;
TypeEdit.Clear;
StatusEdit.Text:='空房';
StatusEdit.ReadOnly:=true;
str:='select 楼层名称 from 楼层编号表';
with RoomMessAdo do
begin
close;
sql.Clear;
sql.Add(str);
open;
first;
FloodEdit.Items.Add('全部浏览');
while not eof do
begin
FloodEdit.Items.Add(fieldbyname('楼层名称').AsString);
next;
end;
end;
str:='select 类型名称 from 客房类型表';
with RoomMessAdo do
begin
close;
sql.Clear;
sql.Add(str);
open;
first;
TypeEdit.Items.Add('全部浏览');
while not eof do
begin
TypeEdit.Items.Add(fieldbyname('类型名称').AsString);
next;
end;
end;
//str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房类型表';
//str1:='select max(客房编号) as MaxCode from 客房信息表';
//TypeCodeEdit.Text:=HotelFm.GetMaxNum(RoomTypeAdo,str,str1); //获取最大编号
str:='select count(客房编号) as totle from 客房信息表';
totlepl.Caption:='总记录数:'+inttostr(hotelfm.DataTotle(RoomMessAdo,str))+'条'; //获取记录总数
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo,str); //刷新数据
end;
procedure TRoomMessFm.CloseBtClick(Sender: TObject);
begin
close;
end;
procedure TRoomMessFm.FloodEditChange(Sender: TObject);
begin
str:='select 楼层编号 from 楼层编号表 where 楼层名称=:floodname';
with RoomMessAdo1 do
begin
close;
sql.Clear;
sql.Add(str);
Parameters.ParamByName('floodname').Value:=trim(FloodEdit.Text);
open;
begin
vflood:=fieldbyname('楼层编号').AsInteger;
end; //获取最大编号
end;
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 where 楼层编号 ';
str:=str+'in(select 楼层编号 from 楼层编号表 where 楼层名称=:floodname)';
with RoomMessAdo1 do
begin
close;
sql.Clear;
sql.Add(str);
Parameters.ParamByName('floodname').Value:=trim(FloodEdit.Text);
open;
if recordcount<1 then
begin
RoomEdit.Text:=inttostr(vflood)+'01';
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo1,str); //刷新数据
exit;
end; //获取最大编号
end;
str1:='select max(客房编号) as MaxCode from 客房信息表 where 楼层编号 in(select 楼层编号 from 楼层编号表 where 楼层名称=:floodname)';
with RoomMessAdo1 do
begin
close;
sql.Clear;
sql.Add(str1);
Parameters.ParamByName('floodname').Value:=trim(FloodEdit.Text);
open;
RoomEdit.Text:=inttostr(fieldbyname('MaxCode').asinteger+1); //获取最大编号
end;
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo1,str); //刷新数据
end;
procedure TRoomMessFm.AddBtClick(Sender: TObject);
var
vpf:boolean;
begin
if RoomEdit.Text='' then
begin
showmessage('请选择楼层');
exit;
end;
if TypeEdit.Text='' then
begin
showmessage('请选择房间类型');
exit;
end;
if FloodEdit.Text='' then
begin
showmessage('请选择楼层');
exit;
end;
if NumEdit.Text='' then
begin
showmessage('请输入额定人数');
exit;
end;
if BedEdit.Text='' then
begin
showmessage('请输入床数');
exit;
end;
if pf.Checked then
vpf:=true
else
vpf:=false;
str:='select 客房编号 from 客房信息表 where 客房编号=:roomnum';
with RoomMessAdo do
begin
close;
sql.clear;
sql.add(str);
Parameters.ParamByName('roomnum').Value:=trim(RoomEdit.Text);
open;
if recordcount>=1 then
begin
showmessage('此编号存在或者点击修改按钮');
exit;
end;
end;
str:='insert into 客房信息表(客房编号,类型编号,楼层编号,额定人数,床数,状态,客房描述,是否可拼房,备注,id)';
str:=str+' values(:roomnum,:typenum,:floodnum,:peonum,:bednum,:status,:ms,:pf,:memo,:id)';
with RoomMessAdo do
begin
close;
sql.clear;
sql.add(str);
Parameters.ParamByName('roomnum').Value:=trim(RoomEdit.Text);
Parameters.ParamByName('typenum').Value:=vtype;
Parameters.ParamByName('floodnum').Value:=vflood;
Parameters.ParamByName('peonum').Value:=trim(NumEdit.Text);
Parameters.ParamByName('bednum').Value:=trim(BedEdit.Text);
Parameters.ParamByName('status').Value:=trim(StatusEdit.Text);
Parameters.ParamByName('ms').Value:=trim(MsEdit.Text);
Parameters.ParamByName('pf').Value:=vpf;
Parameters.ParamByName('memo').Value:=trim(MemoEdit.Text);
Parameters.ParamByName('id').Value:='';
try
execsql;
except
showmessage('提交失败!');
end;
end;
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo,str); //刷新数据
ClearBt.Click;
end;
procedure TRoomMessFm.TypeEditChange(Sender: TObject);
begin
str:='select 类型编号 from 客房类型表 where 类型名称=:typename';
with RoomMessAdo1 do
begin
close;
sql.Clear;
sql.Add(str);
Parameters.ParamByName('typename').Value:=trim(TypeEdit.Text);
open;
begin
vtype:=fieldbyname('类型编号').AsInteger;
end; //获取最大编号
end;
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo1,str); //刷新数据
end;
procedure TRoomMessFm.EditBtClick(Sender: TObject);
var
vpf:boolean;
begin
if RoomEdit.Text='' then
begin
showmessage('请选择楼层');
exit;
end;
if TypeEdit.Text='' then
begin
showmessage('请选择房间类型');
exit;
end;
if FloodEdit.Text='' then
begin
showmessage('请选择楼层');
exit;
end;
if NumEdit.Text='' then
begin
showmessage('请输入额定人数');
exit;
end;
if BedEdit.Text='' then
begin
showmessage('请输入床数');
exit;
end;
if pf.Checked then
vpf:=true
else
vpf:=false;
str:='update 客房信息表 set 类型编号=:typenum,额定人数=:peonum,床数=:bednum,状态=:status,客房描述=:ms,是否可拼房=:pf,备注=:memo';
str:=str+' where 客房编号=:roomnum';
with RoomMessAdo do
begin
close;
sql.clear;
sql.add(str);
Parameters.ParamByName('roomnum').Value:=trim(RoomEdit.Text);
Parameters.ParamByName('typenum').Value:=vtype;
Parameters.ParamByName('peonum').Value:=trim(NumEdit.Text);
Parameters.ParamByName('bednum').Value:=trim(BedEdit.Text);
Parameters.ParamByName('status').Value:=trim(StatusEdit.Text);
Parameters.ParamByName('ms').Value:=trim(MsEdit.Text);
Parameters.ParamByName('pf').Value:=vpf;
Parameters.ParamByName('memo').Value:=trim(MemoEdit.Text);
try
if messagedlg('确定修改吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
execsql;
showmessage('修改成功!');
end;
except
showmessage('提交失败!');
end;
end;
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo,str); //刷新数据
ClearBt.Click;
end;
procedure TRoomMessFm.ClearBtClick(Sender: TObject);
begin
str:='select count(客房编号) as totle from 客房信息表';
totlepl.Caption:='总记录数:'+inttostr(hotelfm.DataTotle(RoomMessAdo,str))+'条'; //获取记录总数
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 order by 客房编号';
HotelFm.DataRefresh(RoomMessAdo,str); //刷新数据
RoomEdit.Clear;
TypeEdit.Text:='';
FloodEdit.Text:='';
NumEdit.Clear;
BedEdit.Clear;
MsEdit.Clear;
MemoEdit.Clear;
pf.Checked:=false;
end;
procedure TRoomMessFm.DelBtClick(Sender: TObject);
begin
str:='delete * from 客房信息表 where 客房编号=:roomnum';
with RoomMessAdo do
begin
close;
sql.clear;
sql.add(str);
Parameters.ParamByName('roomnum').Value:=trim(RoomEdit.Text);
try
if messagedlg('确定删除吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
execsql;
showmessage('删除成功!');
end;
except
showmessage('删除失败!');
end;
end;
ClearBt.Click;
end;
procedure TRoomMessFm.DBGrid1CellClick(Column: TColumn);
begin
DataMove(0);
end;
procedure TRoomMessFm.FirstBtClick(Sender: TObject);
begin
DataMove(1);
end;
procedure TRoomMessFm.ProBtClick(Sender: TObject);
begin
DataMove(2);
end;
procedure TRoomMessFm.NextBtClick(Sender: TObject);
begin
DataMove(3);
end;
procedure TRoomMessFm.LastBtClick(Sender: TObject);
begin
DataMove(4);
end;
procedure TRoomMessFm.FindBtClick(Sender: TObject);
begin
str:='select 客房编号,类型编号,楼层编号,额定人数,床数,客房描述,状态,是否可拼房,备注 from 客房信息表 where id=""';
if RoomEdit.Text<>'' then
str:=str+' and 客房编号=:roomnum';
if (TypeEdit.Text<>'全部浏览') then
str:=str+' and 类型编号=:typeNum';
if FloodEdit.Text<>'全部浏览' then
str:=str+' and 楼层编号=:floodnum';
with RoomMessAdo do
begin
close;
sql.Clear;
sql.Add(str);
if RoomEdit.Text<>'' then
Parameters.ParamByName('roomnum').Value:=trim(RoomEdit.Text);
if (TypeEdit.Text<>'全部浏览') then
Parameters.ParamByName('typeNum').Value:=vtype;
if FloodEdit.Text<>'全部浏览' then
Parameters.ParamByName('floodnum').Value:=vflood;
open;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -