📄 preorder.~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 + -