📄 main.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Splash.h"
#include "Main.h"
#include "Password.h"
#include "Product.h"
#include "Material.h"
#include "Maintain.h"
#include "Finance.h"
#include "About.h"
#include "Data.h"
#include "QrMain.h"
#include "QrProductSold.h"
#include "QrProductSoldDecision.h"
#include "QrMaterialBuyUse.h"
#include "QrFinanceReport.h"
#include "QrLoanRestore.h"
#include "QrProductCapability.h"
#include "QrRestoreCost.h"
#include "QrMaterialBuy.h"
#include "QrLoanLoanRepay.h"
#include "QrLoanInterest.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
Caption = Application->Title;
Path = ExtractFilePath(Application->ExeName);
SongFileName = "Background.wav";
mprBackground->FileName = Path + SongFileName;
mprBackground->Open();
mprBackground->Play();
// FileName = "Home-2.bmp";
// GoFileName = "Go.bmp";
// imgMain->Picture->LoadFromFile(Path+FileName);
try
{
qryMain->Active = false;
qryMain->DatabaseName = Database;
qryMain->SQL->Clear();
qryMain->SQL->Add( "SELECT * FROM 原料订购表" );
qryMain->Prepare();
qryMain->Open();
int Quarter;
int maxBuyQuarter = 0;
int minBuyQuarter = 100000;
while( !qryMain->Eof )
{
Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
maxBuyQuarter = maxBuyQuarter>Quarter ? maxBuyQuarter : Quarter;
minBuyQuarter = minBuyQuarter<Quarter ? minBuyQuarter : Quarter;
qryMain->Next();
}
Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
maxBuyQuarter = maxBuyQuarter>Quarter ? maxBuyQuarter : Quarter;
minBuyQuarter = minBuyQuarter<Quarter ? minBuyQuarter : Quarter;
qryMain->Active = false;
// To Get the first and last Quarter in Table 原料订购表
qryMain->SQL->Clear();
qryMain->SQL->Add( "SELECT * FROM 产品生产销售表" );
qryMain->Prepare();
qryMain->Open();
int maxUseQuarter = 0;
int minUseQuarter = 100000;
while( !qryMain->Eof )
{
Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
maxUseQuarter = maxUseQuarter>Quarter ? maxUseQuarter : Quarter;
minUseQuarter = minUseQuarter<Quarter ? minUseQuarter : Quarter;
qryMain->Next();
}
Quarter = qryMain->FieldByName( "Quarter" )->AsInteger;
maxUseQuarter = maxUseQuarter>Quarter ? maxUseQuarter : Quarter;
minUseQuarter = minUseQuarter<Quarter ? minUseQuarter : Quarter;
qryMain->Active = false;
// To Get the first and last Quarter in Table 产品生产销售表
if( minUseQuarter!=minBuyQuarter )
{
ShowMessageDlg( "数据库系统中出现不安全数据,\n"
"请系统维护员维护并重新启动该系统,否则数据库管理系统不能正常工作。\n"
"\n产生的错误是在下列表中的数据不同步:"
"\n1.产品生产销售表\n2.原料订购表." );
ErrorInDatabase = true;
ErrorMessageInDatabase = "产生的错误是在下列表中的数据同步:\n\t产品生产销售表\n\t原料订购表.";
bbnProductManager->Enabled = false;
bbnMaterialManager->Enabled = false;
bbnFinanceAnalysis->Enabled = false;
return;
}
int maxQuarter = maxBuyQuarter<maxUseQuarter ? maxBuyQuarter : maxUseQuarter;
int minQuarter = minBuyQuarter;
// Use the smaller Quarter for stabics
tblAvailableMaterial->EmptyTable();
tblAvailableProduct->EmptyTable();
// Be sure that Active is false before empty the table
tblAvailableMaterial->Active = true;
tblAvailableProduct->Active = true;
for( int i= minUseQuarter>0 ? minUseQuarter : (minUseQuarter+1) ; i<=maxUseQuarter ; i++ )
{
qryMain->SQL->Clear();
qryMain->SQL->Add( "SELECT SUM(Output), SUM(Sold) FROM 产品生产销售表" );
qryMain->SQL->Add( "WHERE Quarter>:minQuarter AND Quarter<=:maxQuarter" );
qryMain->ParamByName( "minQuarter" )->AsInteger = minUseQuarter-1;
qryMain->ParamByName( "maxQuarter" )->AsInteger = i;
qryMain->Prepare();
qryMain->Open();
long output = qryMain->Fields->Fields[0]->AsInteger;
long sold = qryMain->Fields->Fields[1]->AsInteger;
long Available = output - sold ;
qryMain->Active = false;
tblAvailableProduct->Append();
tblAvailableProduct->FieldByName( "Quarter" )->AsInteger = i;
tblAvailableProduct->FieldByName( "Available" )->AsInteger = Available;
tblAvailableProduct->Post();
}
if( tblAvailableProduct->State==dsEdit || tblAvailableProduct->State==dsInsert )
tblAvailableProduct->Post();
tblAvailableProduct->Active = false;
// Complete filling Table 可用产品数量表
long buyMaterial;
long useMaterial;
for( int i= minUseQuarter>0 ? minUseQuarter : (minUseQuarter+1) ; i<=maxQuarter ; i++ )
{
qryMain->SQL->Clear();
qryMain->SQL->Add( "SELECT SUM(Quantity) FROM 原料订购表" );
qryMain->SQL->Add( "WHERE Quarter>:minQuarter AND Quarter<=:maxQuarter" );
// qryMain->SQL->Add( "AND Identity = :identity" );
qryMain->ParamByName( "minQuarter" )->AsInteger = minQuarter-1;
qryMain->ParamByName( "maxQuarter" )->AsInteger = i;
qryMain->Prepare();
qryMain->Open();
buyMaterial = qryMain->Fields->Fields[0]->AsInteger;
qryMain->Active = false;
qryMain->SQL->Clear();
qryMain->SQL->Add( "SELECT SUM(Output) FROM 产品生产销售表" );
qryMain->SQL->Add( "WHERE Quarter>:minQuarter AND Quarter<=:maxQuarter" );
// qryMain->SQL->Add( "AND Identity = :identity" );
qryMain->ParamByName( "minQuarter" )->AsInteger = minQuarter-1;
qryMain->ParamByName( "maxQuarter" )->AsInteger = i;
qryMain->Prepare();
qryMain->Open();
useMaterial = qryMain->Fields->Fields[0]->AsInteger;
qryMain->Active = false;
tblAvailableMaterial->Append();
tblAvailableMaterial->FieldByName( "Quarter" )->AsInteger = i;
tblAvailableMaterial->FieldByName( "Available" )->AsInteger = buyMaterial - useMaterial ;
tblAvailableMaterial->Post();
// Add a record to the table 可用原料数量表
}
if( tblAvailableMaterial->State == dsEdit || tblAvailableMaterial->State == dsInsert )
tblAvailableMaterial->Post();
tblAvailableMaterial->Active = false;
// Complete filling Table 可用原料数量表
}
catch( EDatabaseError &err )
{
ShowMessageDlg( "产生数据库错误:" + err.Message );
bbnProductManager->Enabled = false;
bbnMaterialManager->Enabled = false;
bbnFinanceAnalysis->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::bbnGoClick(TObject *Sender)
{
try
{
if( tblAvailableProduct->State == dsEdit )
tblAvailableProduct->Post();
if( tblAvailableMaterial->State == dsEdit )
tblAvailableMaterial->Post();
Application->Terminate();
}
catch( EDatabaseError &err )
{
AnsiString prompt = "产生数据库错误:" + err.Message + "\n退出程序吗?";
switch( Application->MessageBox( prompt.c_str(),
Application->Title.c_str(), MB_YESNO + MB_ICONQUESTION ) )
{
case IDNO : return;
default : Application->Terminate();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::bbnProductManagerClick(TObject *Sender)
{
frmProduct->Show();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::bbnMaterialManagerClick(TObject *Sender)
{
frmMaterial->Show();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::bbnFinanceAnalysisClick(TObject *Sender)
{
frmFinance->Show();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::bbnSystemManagerClick(TObject *Sender)
{
static int NumOfPasswordError = 0;
if( NumOfPasswordError>=3 )
{
ShowMessageDlg( "您是系统维护模块的非法用户,请不要尝试进入系统维护模块!" );
return;
}
if( frmPassword->ShowModal()==mrOk )
{
if( frmPassword->edtPassword->Text!= PasswordForMaintain )
{
NumOfPasswordError++;
ShowMessageDlg( "密码输入错误,请检查CapsLock键是否已经按下并重试!" );
}
else
{
NumOfPasswordError = 0;
(new TfrmMaintain(this))->Visible = true;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::BitBtn1Click(TObject *Sender)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -