unitroombook.~pas

来自「自己做过的工程」· ~PAS 代码 · 共 455 行

~PAS
455
字号
unit unitroombook;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, ComCtrls, StdCtrls, DB, ADODB;

type
  Tfromroomkook = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label1: TLabel;
    ed_username: TEdit;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    roomid: TEdit;
    StaticText4: TStaticText;
    employeeid: TEdit;
    StaticText5: TStaticText;
    userphone: TEdit;
    StaticText6: TStaticText;
    remark: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    DBGrid1: TDBGrid;
    StaticText7: TStaticText;
    booktime: TDateTimePicker;
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TabSheet1Show(Sender: TObject);
  private
    { Private declarations }
    //自定义的函数+
    //function roomcolorchange(roomid:integer):string;
  public
   function roomcolorchange(roomid:integer):string;
   function roomidjudge(roomid:integer):string;
    { Public declarations }

  end;

var
  fromroomkook: Tfromroomkook;

implementation
 uses unitDMHotel,unitroom,unitinroom,unitlogging;
{$R *.dfm}
//自己定义函数的实现部分
function    tfromroomkook.roomidjudge(roomid:integer):string;
begin
        DMHotel.ADODataSetroomstatus.Open;
    if  not DMHotel.ADODataSetroomstatus.Locate('roomid',inttostr(roomid),[])then
        begin
            showmessage('包间编号'+inttostr(roomid)+'不存在!');
            exit;
        end;
end;

function    tfromroomkook.roomcolorchange(roomid:integer):string;
begin
case roomid of
//401房间
8401:
begin

formroom.room401.Color:=clLime;
end;
//402房间
8402:
begin
formroom.room402.Color:=clLime;
end;
//403房间
8403:
begin
formroom.room403.Color:=clLime;
end;
//404房间
8404:
begin
formroom.room404.Color:=clLime;
end;
//405房间
8405:
begin
formroom.room405.Color:=clLime;
end;
//406房间
8406:
begin
formroom.room401.Color:=clLime;
end;
//407房间
8407:
begin
formroom.room407.Color:=clLime;
end;
//408房间
8408:
begin
formroom.room408.Color:=clLime;
end;
//409房间
8409:
begin
formroom.room409.Color:=clLime;
end;
//410房间
8410:
begin
formroom.room410.Color:=clLime;
end;
//411房间
8412:
begin
formroom.room411.Color:=clLime;
end;
//412房间
8416:
begin
formroom.room412.Color:=clLime;
end;
//413房间
8418:
begin
formroom.room413.Color:=clLime;
end;
//501房间
8501:
begin
formroom.room501.Color:=clLime;
end;
//502房间
8502:
begin
formroom.room502.Color:=clLime;
end;
//503房间
8503:
begin
formroom.room503.Color:=clLime;
end;
//504房间
8504:
begin
formroom.room504.Color:=clLime;
end;
//505房间
8505:
begin
formroom.room505.Color:=clLime;
end;
//506房间
8506:
begin
formroom.room506.Color:=clLime;
end;
//507房间
8507:
begin
formroom.room507.Color:=clLime;
end;
//508房间
8508:
begin
formroom.room508.Color:=clLime;
end;
//509房间
8509:
begin
formroom.room509.Color:=clLime;
end;
//510房间
8510:
begin
formroom.room510.Color:=clLime;
end;
//511房间
8512:
begin
formroom.room511.Color:=clLime;
end;
//512房间
8516:
begin
formroom.room512.Color:=clLime;
end;
//513房间
8518:
begin
formroom.room513.Color:=clLime;
end;
//601房间
8602:
begin
formroom.room601.Color:=clLime;
end;
//602房间
8604:
begin
formroom.room602.Color:=clLime;
end;
//603房间
8606:
begin
formroom.room603.Color:=clLime;
end;
//604房间
8608:
begin
formroom.room604.Color:=clLime;
end;
//605房间
8610:
begin
formroom.room605.Color:=clLime;
end;
//606房间
8612:
begin
formroom.room606.Color:=clLime;
end;
end;
end;



//关闭
procedure Tfromroomkook.Button4Click(Sender: TObject);
begin
close;
end;

//清楚操作,清楚控件中的所有输入

procedure Tfromroomkook.Button3Click(Sender: TObject);
begin
   if MessageDlg('您确定要重新填写吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
         exit;

fromroomkook.ed_username.Clear;
fromroomkook.roomid.Clear;
fromroomkook.remark.Clear;
fromroomkook.userphone.Clear;
//fromroomkook.employeeid.Clear;员工标号不可改
//fromroomkook.booktime.Clear;是一个特殊控件
end;


//预定房间的添加
procedure Tfromroomkook.Button1Click(Sender: TObject);
VAR
coderoom:integer;
SQL:string;
itemtype:string;
vroomstatus:string;
vroomid:string;
vtest:integer;

begin
  vroomid:=roomid.Text;

  if vroomid='' then
        begin
                messagebox(handle,'你的输入的房间号为空,请重新输入!','错误',MB_OK OR MB_ICONERROR);
                exit;
        end;

   //要进行判断是否输入的为数字
   if not  trystrtoint( roomid.Text,vtest)     then
        begin
                messagebox(handle,'你输入的预定房间号不是个整数,请重新输入','错误',MB_OK OR MB_ICONERROR);
                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(vroomid+'这个房间处于预定状态,不可以再进行预定!');
        exit;
        end;
     end;

 //开始一个事物
   DMHotel.ADOConnection1.BeginTrans;

   itemtype:='roombookmanagecode';
   DMHotel.ADODataSet_itemnumber.Open;
   DMHotel.ADODataSet_itemnumber.Locate('itemtype',itemtype,[]);
   coderoom:=DMHotel.ADODataSet_itemnumber.FieldValues['itemno'];
   coderoom:=coderoom+1;
   DMHotel.ADODataSet_itemnumber.Edit;
   DMHotel.ADODataSet_itemnumber.FieldValues['itemno']:=coderoom;
   DMHotel.ADODataSet_itemnumber.Post;
 //  showmessage(inttostr(coderoom));
   DMHotel.ADODataSet_itemnumber.Close;
 //执行添加的操作
   with DMHotel.ADOQuery1 do
      begin
        close;//关闭以前的操作
        sql.Clear;
        sql.Add('Insert into room_book(code,username,booktime,roomid,employeeid,userphone,remark,inornot)');
        sql.Add('Values (:code,:username,:booktime,:roomid,:employeeid,:userphone,:remark,:inornot)');
        parameters.ParamByName('username').Value:=fromroomkook.ed_username.Text;
        Parameters.ParamByName('booktime').Value:=fromroomkook.booktime.Date;
        parameters.ParamByName('roomid').Value:=strtoint(fromroomkook.roomid.Text);
        Parameters.ParamByName('employeeid').Value:=fromroomkook.employeeid.Text;
        Parameters.ParamByName('userphone').Value:=fromroomkook.userphone.Text;
        parameters.ParamByName('remark').Value:=fromroomkook.remark.Text;
        Parameters.ParamByName('inornot').Value:='no';
        Parameters.ParamByName('code').Value:=coderoom;
        close;
      end;

//执行改变房间状态的操作
      DMHotel.ADODataSet_roomstatus.Open;
      DMHotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
      DMHotel.ADODataSet_roomstatus.Edit;
      DMHotel.ADODataSet_roomstatus.FieldByName('statusid').AsString:='2'  ;
      DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString:='预定';
      DMHotel.ADODataSet_roomstatus.Post;
      DMHotel.ADODataSet_roomstatus.Close;

//也要同时改变主界面上的房间标识的颜色 ,用自己定义的函数来实现
     fromroomkook.roomcolorchange(strtoint(vroomid));

   try
      DMHotel.ADOQuery1.ExecSQL;
   except
      DMHotel.ADOConnection1.RollbackTrans;
      showmessage('入录失败');
      exit;
   end;
      //将光标定位,必须放在requery后面
    //  DMHotel.ADODataSet_roombook.Locate('roomid',vroomid,[]);

      DMHotel.ADOConnection1.CommitTrans;

       DMHotel.ADODataSet_roombook.Open;

       DMHotel.ADODataSet_roombook.Requery;
        DMHotel.ADODataSet_roombook.Locate('roomid',vroomid,[]);
      fromroomkook.ed_username.Clear;
        fromroomkook.roomid.Clear;
        fromroomkook.remark.Clear;
        fromroomkook.userphone.Clear;
     //   fromroomkook.employeeid.Clear;
    //  要显示必须不能关闭数据集1
     // DMHotel.ADODataSet_roombook.Close;
end;


//注意同时要将房间的状态改变 ,也就是要改变其中的两个字段的值
 //删除操作 ,删除其中的一条记录
procedure Tfromroomkook.Button2Click(Sender: TObject);
var
vID:string;
vroomid:string;
begin
   DMHotel.ADODataSet_roombook.Open;
   vID:= DMHotel.ADODataSet_roombook.FieldByName('code').AsString; //取ID号
   vroomid:=DMHotel.ADODataSet_roombook.FieldByName('roomid').AsString;// 取房间号
    //删除操作
    if vroomid='' then
   BEGIN
    messagebox(handle,'已经没有可以删除的记录!','错误',MB_OK OR MB_ICONERROR) ;
    EXIT;
   END;

      if MessageDlg('您确定要删除该记录吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
         exit;

    DMHotel.ADOConnection1.BeginTrans;
    with DMHotel.ADOQuery1 do
         begin
             close;
             sql.Clear;
             sql.Add('Delete from room_book ');
             sql.Add('Where code=:code');
             Parameters.ParamByName('code').Value:=vID;
         end;

         //改变主界面上房间标识的颜色,调用的中的公有函数
    forminroom.fun_roomcolorchange(strtoint(vroomid),clCaptionText) ;

         //改变房间的有关状态,两个字段
     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:='1';
     DMHotel.ADODataSet_roomstatus.Post;
     DMHotel.ADODataSet_roomstatus.Close;

    try
         DMHotel.ADOQuery1.ExecSQL;
    except
         showmessage('删除失败!');
         DMHotel.ADOConnection1.RollbackTrans;
         exit;
    end;
    DMHotel.ADOConnection1.CommitTrans;
    DMHotel.ADODataSet_roombook.Open;
    DMHotel.ADODataSet_roombook.Requery;
end;

procedure Tfromroomkook.FormShow(Sender: TObject);
begin
 employeeid.Text:=username;
         DMHotel.ADODataSet_roombook.Open;
        DMHotel.ADODataSet_roombook.Requery;
end;

procedure Tfromroomkook.TabSheet1Show(Sender: TObject);
begin
       // DMHotel.ADODataSet_roombook.Open;
        //DMHotel.ADODataSet_roombook.Requery;
        booktime.Date:=date();
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?