📄 product.~cpp
字号:
frmMain->tblAvailableProduct->Active = true;
frmMain->tblAvailableProduct->First();
while( !frmMain->tblAvailableProduct->Eof )
{
if( frmMain->tblAvailableProduct->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
{
numProduct = frmMain->tblAvailableProduct->FieldByName( "Available" )->AsInteger;
break;
}
frmMain->tblAvailableProduct->Next();
}
if( frmMain->tblAvailableProduct->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
numProduct = frmMain->tblAvailableProduct->FieldByName( "Available" )->AsInteger;
frmMain->tblAvailableProduct->Active = false;
return (temp<(output+numProduct)?temp:(output+numProduct));
}
//---------------------------------------------------------------------------
int __fastcall TfrmProduct::CalculateOutput( void )
{
long capability = StrToInt( edtDecideCapability->Text );
long numNewMaterial = 0;
TQuery *query = new TQuery(this);
// 允许窗体退出是自动删除此查询对象
query->DatabaseName = Database;
query->SQL->Clear();
query->SQL->Add( "SELECT Quantity FROM 原料订购表 WHERE Quarter = :quarter" );
query->ParamByName( "quarter" )->AsInteger = StrToInt(sttDecideQuarter->Caption);
query->Prepare();
query->Open();
if( query->RecordCount<= 0 )
// 用户还没有做出原料决策,产量模拟计算失败
throw "原料决策还没有做出,系统现在还不能计算出产量和销售量,\n\n建议:迅速做出原料决策,系统会再次完成此功能.";
numNewMaterial = query->FieldByName( "Quantity" )->AsFloat;
delete query;
// 抛出系统异常后,原料管理模块的窗体会自动删除此查询对象
long numResidualMaterial = -1;
if( StrToInt(sttDecideQuarter->Caption)-1<=0 )
numResidualMaterial = 0;
// 假设:伯克公司在建立该公司前并没有产品库存
else
{
frmMain->tblAvailableMaterial->Active = true;
frmMain->tblAvailableMaterial->First();
while( !frmMain->tblAvailableMaterial->Eof )
{
if( frmMain->tblAvailableMaterial->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
{
numResidualMaterial = frmMain->tblAvailableMaterial->FieldByName( "Available" )->AsInteger;
break;
}
frmMain->tblAvailableMaterial->Next();
}
if( frmMain->tblAvailableMaterial->FieldByName( "Quarter" )->AsInteger==StrToInt(sttDecideQuarter->Caption)-1 )
numResidualMaterial = frmMain->tblAvailableMaterial->FieldByName( "Available" )->AsInteger;
frmMain->tblAvailableMaterial->Active = false;
}
if( numResidualMaterial<0 )
throw "数据库中的数据同步性被破坏,系统无法正确运行。\n建议:系统维护员立即维护数据库中的数据。";
long numMaterial = numNewMaterial + numResidualMaterial;
return (capability>numMaterial?numMaterial:capability);
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::bbnDecideClick(TObject *Sender)
{
if( Application->MessageBox( "您一旦提交决策就不能修改,除非在退出该窗口前删除该记录!\n还要继续吗?",
Application->Title.c_str(), MB_YESNO + MB_ICONQUESTION ) == IDNO )
return;
int capability;
float price;
try
{
capability = StrToInt( edtDecideCapability->Text );
price = StrToFloat( edtDecidePrice->Text );
tblCapability->Active = true;
tblCapability->Append();
tblCapability->FieldByName( "Quarter" )->AsInteger =
StrToInt(sttDecideQuarter->Caption);
tblCapability->FieldByName( "Capability" )->AsInteger =
StrToInt( edtDecideCapability->Text );
tblCapability->Post();
tblCapability->Active = false;
int sold = GuessSold( capability, price );
edtDecideSold->Text = IntToStr( sold );
bbnDecide->Caption = "本季度决策完毕";
miCommit->Enabled = false;
Panel1->Enabled = false;
edtDecideCapability->Enabled = false;
edtDecidePrice->Enabled = false;
edtDecideSold->Enabled = false;
}
catch( EConvertError &err )
{
ShowMessageDlg( "产生错误:" + err.Message );
edtDecideCapability->SetFocus();
edtDecideCapability->SelectAll();
}
catch( EDatabaseError &err )
{
ShowMessageDlg( "产生数据库错误:" + err.Message );
edtDecideCapability->SetFocus();
edtDecideCapability->SelectAll();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::bbnReportClick(TObject *Sender)
{
frmQrMain->Visible = true;
frmQrMain->rbnProductSold->Enabled = true;
frmQrMain->rbnProductSoldDecision->Enabled = true;
frmQrMain->rbnMaterialBuyUse->Enabled = false;
frmQrMain->rbnFinanceReport->Enabled = false;
frmQrMain->rbnLoanRestore->Enabled = false;
frmQrMain->rbnProductCapability->Enabled = false;
frmQrMain->rbnRestoreCost->Enabled = false;
frmQrMain->rbnMaterialBuy->Enabled = false;
frmQrMain->rbnLoanLoanRepay->Enabled = false;
frmQrMain->rbnLoanInterest->Enabled = false;
frmQrMain->rbnProductSoldClick( (TObject*)frmQrMain );
frmQrMain->rbnProductSold->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::miReportReportClick(TObject *Sender)
{
bbnReportClick( Sender );
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::bbnAboutClick(TObject *Sender)
{
(new TfrmAbout(this))->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::miHelpAboutClick(TObject *Sender)
{
bbnAboutClick( Sender );
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::edtDecidePriceKeyPress(TObject *Sender,
char &Key)
{
if( Key == 0x0D )
// 用户按了回车键
bbnDecideClick( Sender );
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::FormActivate(TObject *Sender)
{
edtDecideCapability->SelectAll();
edtDecideCapability->SetFocus();
}
//---------------------------------------------------------------------------
bool __fastcall TfrmProduct::GetMaxMinQuarterInProductTable(int *max, int *min)
// To statistics the max and min quarter in the product table.
// if no record is found, return false.
// else return true.
{
int Quarter;
*max = 0;
*min = 100000;
if(!tblCapability->Active)
tblCapability->Active = true;
if(!tblCapability->RecordCount>0)
return false;
tblCapability->First();
while( !tblCapability->Eof )
{
Quarter = tblCapability->FieldByName( "Quarter" )->AsInteger;
*max = *max>Quarter ? *max : Quarter;
*min = *min<Quarter ? *min : Quarter;
tblCapability->Next();
}
Quarter = tblCapability->FieldByName( "Quarter" )->AsInteger;
*max = *max>Quarter ? *max : Quarter;
*min = *min<Quarter ? *min : Quarter;
tblCapability->Active = false;
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmProduct::FormCloseQuery(TObject *Sender,
bool &CanClose)
{
miCommit->Enabled = true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -