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

📄 unitinroom.pas

📁 自己做过的工程
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    vroomid:=ed_roomid.Text;

    if ed_roomid.Text='' then
        begin
           showmessage('你的输入的房间号为空,请重新输入!');
           exit;   //exit跳出本次事件!:)
        end;


    if not  trystrtoint(ed_roomid.Text,vtest)     then
        begin
           messagebox(handle,'你输入的房间号不是个整数,请重新输入','错误',MB_OK OR MB_ICONERROR);
           EXIT;
        end;


    //这个必须放到这个地方,要进行转换就必须要这个不能为空
     vcolorroomid:=strtoint(ed_roomid.Text);
     if  ed_username.Text='' then
     begin
     showmessage('你的输入的房客姓名为空,请重新输入!');
     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('d');

        DMHotel.ADODataSet_roombook.Open;
         with DMHotel.ADOQuery1 do
         begin
             close;
             sql.Clear;
             sql.Add('Delete from room_book');
             sql.Add('Where roomid=:roomid');
             Parameters.ParamByName('roomid').Value:=vroomid;
         end;
         try
         DMHotel.ADOQuery1.ExecSQL;
         except
         showmessage('删除失败!');
        // DMHotel.ADOConnection1.RollbackTrans;
         exit;
         end;
          DMhotel.ADODataSet_roombook.Requery;
        end;
      end;
//满足入住条件后就要进行入住的登记  ,这个和预定中的处理是一样的
//一要将数据加入room_in表中,然后要改变相应的room_status表中的房间状态
//两个字段一个是状态一个是状态表示数字   ,vroomid 是整形的


   DMHotel.ADOConnection1.BeginTrans;
   DMHOtel.ADODataSet_roomin.Open;
   DMHotel.ADODataSet_roomstatus.Open;
//以下是对 ADODataSet_itemnumber中roomincodemanamge记录的操作,加1
   vitemtype:='roominmanagecode';
   DMHotel.ADODataSet_itemnumber.Close;
   DMHotel.ADODataSet_itemnumber.Open;
   DMHotel.ADODataSet_itemnumber.Locate('itemtype',vitemtype,[]);
   vcoderoom:=strtoint(DMHotel.ADODataSet_itemnumber.FieldByName('itemno').AsString);
//   showmessage(inttostr(vcoderoom));
   vcoderoom:=vcoderoom+1;
   DMHotel.ADODataSet_itemnumber.Edit;
   DMHotel.ADODataSet_itemnumber.FieldByName('itemno').AsString:=inttostr(vcoderoom);
   DMHotel.ADODataSet_itemnumber.Post;
//   showmessage(inttostr(vcoderoom));
   DMHotel.ADODataSet_itemnumber.Close;

  //以下是对数据的添加操作不仅要添加还要改变房间的状态
   with DMHotel.ADOQuery1 do
     begin
       close;//关闭以前的查询
       sql.Clear;
        sql.Add('Insert into room_in(code,roomid,roomtype,username,certificatetype,certificateid,nativeplace,userno,usersex,employeeid,intime,leftornot,remark,realintime,bookmoney)');
        sql.Add('Values (:code,:roomid,:roomtype,:username,:certificatetype,:certificateid,:nativeplace,:userno,:usersex,:employeeid,:intime,:leftornot,:remark,:realintime,:bookmoney)');

        //以下是各个字段分别的进行赋值操作
        parameters.ParamByName('code').Value:=vcoderoom;
        parameters.ParamByName('roomid').Value:=ed_roomid.Text;
        Parameters.ParamByName('roomtype').Value:=cb_roomtype.Text;
        Parameters.ParamByName('username').Value:=ed_username.Text;
        Parameters.ParamByName('certificatetype').Value:=cb_certificatetpye.Text;
        Parameters.ParamByName('certificateid').Value:=ed_certificateid.Text;
        Parameters.ParamByName('nativeplace').Value:=ed_nativeplace.Text;
        Parameters.ParamByName('userno').Value:=ed_userno.Text;
        Parameters.ParamByName('usersex').Value:=ed_usersex.Text;
        Parameters.ParamByName('employeeid').Value:=ed_employeeid.Text;
        Parameters.ParamByName('intime').Value:=date+time;
        Parameters.ParamByName('leftornot').Value:='no';
        Parameters.ParamByName('remark').Value:= ed_remark.Text;
        Parameters.ParamByName('realintime').Value:=date+time;
        Parameters.ParamByName('bookmoney').Value:=ed_bookmoney.Text;
        close;
   end;
 //  DMHOtel.ADODataSet_roomin.Requery;
   //下面是要对room-status表的改变。即要改变其状态表,两个参数
  // 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:=inttostr(3);
   DMHOtel.ADODataSet_roomstatus.Post;

  //下面是对主界面上房间标识颜色的改变
 forminroom.fun_roomcolorchange(vcolorroomid,clAqua) ;


   try
        DMHotel.ADOQuery1.ExecSQL;
        showmessage('记录已经成功的添加!');
   except
        DMHotel.ADOConnection1.RollbackTrans;
        showmessage('入录失败');
        exit;
   end;
  DMHotel.ADOConnection1.CommitTrans;
  DMHotel.ADODataSet_roomstatus.Requery;
  DMHotel.ADODataSet_roomin.Requery;
  DMHOtel.ADODataSet_roomstatus.Close;
  //要将光标停留在最后一个添加的房间号上 ,必须放在requery后面
  DMHotel.ADODataSet_roomin.Locate('roomid',vroomid,[]);

 //清除
  ed_roomid.Clear;
  ed_username.Clear;
  ed_certificateid.Clear;
  ed_nativeplace.Clear;
  ed_userno.Clear;
//  ed_employeeid.Clear;
  ed_bookmoney.Clear;
  ed_remark.Clear;
//  DMHotel.ADODataSet_roomin.Close;
  end;


 procedure Tforminroom.Button6Click(Sender: TObject);
begin
close;
end;

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

memo_remark.Lines.Clear;
ed_errorroomid.Clear;
end;

procedure Tforminroom.Button2Click(Sender: TObject);
var
remark:string;
vroomid:string;
vleftornot:string;
vtest:integer;
begin

   if    ed_errorroomid.Text='' then
        begin
                messagebox(handle,'你没有输入房间号,请重新输入','错误',MB_OK OR MB_ICONERROR);
                exit;
        end;
  if not  trystrtoint(ed_errorroomid.Text,vtest)     then
        begin
                messagebox(handle,'你输入的房间号不是个整数,请重新输入','错误',MB_OK OR MB_ICONERROR);
                EXIT;
        end;

        remark:=memo_remark.Lines.Text;
        if remark=''  then
                begin
                        messagebox(handle,'你没有出入出错备注的信息,请重新输入','错误',MB_OK OR MB_ICONERROR);
                        exit;
                end;

     //   showmessage(remark);
        vroomid:=ed_errorroomid.Text;
//要先对房间号进行判断
//这个东西应该用函数

        DMHotel.ADODataSetroomstatus.Open;
    if  not DMHotel.ADODataSetroomstatus.Locate('roomid',vroomid,[])then
        begin
            showmessage('房间编号'+vroomid+'不存在!');
            exit;
        end ;

//将这个信息写到error_remark字段
DMHOtel.ADODataSet_roomin.Open;
//这个地方必须要用多值查询。也可用locate函数实现,但是必须要注意参数的方式!
DMHotel.ADODataSet_roomin.Locate('roomid;leftornot',vararrayof([vroomid,'no']),[]);
DMHotel.ADODataSet_roomin.Edit;
DMHotel.ADODataSet_roomin.FieldByName('error_remark').AsString:=remark;
DMHotel.ADODataSet_roomin.Post;
DMHotel.ADODataSet_roomin.Close;
memo_remark.Lines.Clear;
ed_errorroomid.Clear;
end;

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

ed_roomid.Clear;
ed_username.Clear;
ed_certificateid.Clear;
ed_nativeplace.Clear;
ed_userno.Clear;
//ed_employeeid.Clear;
ed_bookmoney.Clear;
ed_remark.Clear;
end;

procedure Tforminroom.TabSheet1Show(Sender: TObject);
begin
        DMHotel.ADODataSet_roomin.Open;
        DMHotel.ADODataSet_roomin.Requery;
        ed_intime.Text:=datetimetostr(date+time);
//如果将数据集关闭就会在dbgrid中没有显示
//DMHotel.ADODataSet_roomin.Close;
end;

procedure Tforminroom.FormShow(Sender: TObject);
begin
        ed_employeeid.Text:=username;
        //        DMHotel.ADODataSet_roomin.Open;
    //    DMHotel.ADODataSet_roomin.Requery;
end;

procedure Tforminroom.BitBtn1Click(Sender: TObject);
begin
    formchangeroom.ShowModal;
end;

end.

⌨️ 快捷键说明

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