⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roommessageut.~pas

📁 宾馆客房管理系统,功能强大,界面美观,全部delphi源代码
💻 ~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 + -