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

📄 preorder.~cpp

📁 全面剖析酒店管理的内容
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "PreOrder.h"
#include "RoomStatus.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Parent"
#pragma resource "*.dfm"
TfmPreOrder *fmPreOrder;
//---------------------------------------------------------------------------
__fastcall TfmPreOrder::TfmPreOrder(TComponent* Owner)
    : TfmParent(Owner)
{
    this->szCondition1 = "预定编号";
    this->szCondition2 = "预定人";
    this->szCondition3 = "抵店时间";
    // 设置查询条件
    this->SetSeekEditStatus();
    Table1->Active = true;
    Table2->Active = true;
    lblCount->Caption = "记录数: " + IntToStr(Table1->RecordCount) ;
    // 非弹出选择窗体
    m_nSelect = 1;
}
//---------------------------------------------------------------------------
void __fastcall TfmPreOrder::dtPickerInDateChange(TObject *Sender)
{
    // 选择抵店日期,赋给数据库绑定控件
    EditDBEdit4->Text = dtPickerInDate->Date.DateString();
}
//---------------------------------------------------------------------------
void __fastcall TfmPreOrder::dtPickerOutDateChange(TObject *Sender)
{
    // 选择离店日期,赋给数据库绑定控件
    EditDBEdit5->Text = dtPickerOutDate->Date.DateString();
}
//---------------------------------------------------------------------------
void __fastcall TfmPreOrder::EditDBEdit4Change(TObject *Sender)
{
    // 记录变化,选择日期控件更新
    if(EditDBEdit4->Text.Length()==0)
        dtPickerInDate->Date = dtPickerInDate->Date.CurrentDate();
    else
        dtPickerInDate->Date = EditDBEdit4->Text;
}
//---------------------------------------------------------------------------
void __fastcall TfmPreOrder::EditDBEdit5Change(TObject *Sender)
{
    // 记录变化,选择日期控件更新
    if(EditDBEdit5->Text.Length()==0)
        dtPickerOutDate->Date = dtPickerOutDate->Date.CurrentDate();
    else
        dtPickerOutDate->Date = EditDBEdit5->Text;
}
//---------------------------------------------------------------------------
void __fastcall TfmPreOrder::btNewClick(TObject *Sender)
{
    // 注意如何调用父类窗体的方法
    TfmParent::btNewClick(NULL);
    dtPickerInDate->Date = dtPickerInDate->Date.CurrentDate();
    dtPickerOutDate->Date = dtPickerOutDate->Date.CurrentDate();
    dtPickerInDateChange(NULL);
    dtPickerOutDateChange(NULL);
    // 计算预定编号(Primary key);
    // 从预定单历史和预定单中选择最大编号加1
    AnsiString szID,szID1;
    TQuery *pQuery = new TQuery(NULL);
    pQuery->DatabaseName = "db";
    // 选择最大编号
    pQuery->SQL->Clear();
    pQuery->SQL->Add("select max(预定单号) as 编号 from 预定单历史");
    pQuery->Open();
    TField* pField = pQuery->FieldByName("编号");
    if(pField->IsNull)
        szID = "YD00000001";
    else
    {
        AnsiString szT = "00000000";
        szID = StrToInt(pField->AsString.SubString(3,8)) + 1;
        szID = szT.SubString(1,8-szID.Length()) + szID;
        szID = "YD" + szID;
    }
    pQuery->SQL->Clear();
    pQuery->SQL->Add("select max(预定单号) as 编号 from 预定单");
    pQuery->Open();
    pField = pQuery->FieldByName("编号");
    if(pField->IsNull)
        szID1 = "YD00000001";
    else
    {
        AnsiString szT = "00000000";
        szID1 = StrToInt(pField->AsString.SubString(3,8)) + 1;
        szID1 = szT.SubString(1,8-szID1.Length()) + szID1;
        szID1 = "YD" + szID1;
    }
    // 取最大值作为新凭证的ID
    if(szID < szID1)
        szID = szID1;
    EditDBEdit->Text = szID;
    // 设置单据状态
    EditDBEdit6->Text = "预定";
    // 释放空间
    delete pQuery;
}
//---------------------------------------------------------------------------
// 弹出房态图,选择客房
void __fastcall TfmPreOrder::btSelectRoomClick(TObject *Sender)
{
    if(dbcRoomType->Text.Length()<=0)
        Application->MessageBox("请选择客房类型!","提示",MB_OK);
    TfmRoomStatus* pForm = new TfmRoomStatus(Application);
    // 作为普通窗口
    pForm->FormStyle = fsNormal;
    pForm->Hide();
    // 不可以编辑房态
    pForm->SetSelect(0);
    // 设置客房的类型,房态图只显示该类型的客房
    pForm->m_RoomType = dbcRoomType->KeyValue;
    pForm->ShowModal();
    if(pForm->m_RoomCode.Length()>0)
        EditDBEdit8->Text = pForm->m_RoomCode;
    delete pForm;
}
//---------------------------------------------------------------------------

void __fastcall TfmPreOrder::btSaveClick(TObject *Sender)
{
    AnsiString sql = "select 状态 from 客房信息 where 客房编号='";
    sql += EditDBEdit8->Text + "'";
    TQuery* pQueryRoom = new TQuery(NULL);
    pQueryRoom->DatabaseName = "db";
    pQueryRoom->SQL->Add(sql);
    pQueryRoom->Open();
    if(pQueryRoom->FieldByName("状态")->AsString != "空房"
        && pQueryRoom->FieldByName("状态")->AsString != "将到")
    {
        Application->MessageBox("选择的客房不是空房!","提示",MB_OK);
        delete pQueryRoom;
        return;
    }
    // 将原来的客房设置为空房
    sql = "update 客房信息 set 状态='空房' from 客房信息 as a,";
    sql += "预定单 as b where a.客房编号=b.客房编号 and b.预定单号='";
    sql += EditDBEdit->Text + "'";
    pQueryRoom->SQL->Clear();
    pQueryRoom->SQL->Add(sql);
    pQueryRoom->ExecSQL();
    // 注意如何调用父类窗体的方法,保存数据
    TfmParent::btSaveClick(NULL);
    // 修改房间状态
    sql = "update 客房信息 set 状态='将到' where 客房编号='";
    sql += EditDBEdit8->Text + "'";
    pQueryRoom->SQL->Clear();
    pQueryRoom->SQL->Add(sql);
    pQueryRoom->ExecSQL();
    delete pQueryRoom;
}
//---------------------------------------------------------------------------
void __fastcall TfmPreOrder::DBGrid1DblClick(TObject *Sender)
{
    // 双击,如果是选择窗体,选择记录并关闭窗体
    if(m_nSelect == 0)
    {
        Close();
    }
}
//---------------------------------------------------------------------------
// 删除预定,设置空房
void __fastcall TfmPreOrder::btDeleteClick(TObject *Sender)
{
    if (Application->MessageBox("是否删除记录?", "确定", MB_YESNO)
             == mrYes)
    {
        TQuery* pQueryRoom = new TQuery(NULL);
        pQueryRoom->DatabaseName = "db";        // 将原来的客房设置为空房
        AnsiString sql = "update 客房信息 set 状态='空房' from 客房信息 as a,";
        sql += "预定单 as b where a.客房编号=b.客房编号 and b.预定单号='";
        sql += EditDBEdit->Text + "'";
        pQueryRoom->SQL->Clear();
        pQueryRoom->SQL->Add(sql);
        pQueryRoom->ExecSQL();
        delete pQueryRoom;
        DataSource1->Edit();
        // 删除记录
        Table1->Delete();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmPreOrder::dbcRoomTypeClick(TObject *Sender)
{
    // 更新房价
    TQuery* pQueryRoom = new TQuery(NULL);
    pQueryRoom->DatabaseName = "db";
    AnsiString sql;
    sql = "select 价格 from 客房类型 where 类型编号 = '";
    sql += (AnsiString)dbcRoomType->KeyValue + "'";
    pQueryRoom->SQL->Add(sql);
    pQueryRoom->Open();
    EditDBEdit9->Text = pQueryRoom->FieldByName("价格")->AsString;
    EditDBEdit10->Text = pQueryRoom->FieldByName("价格")->AsString;
    delete pQueryRoom;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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