📄 finance.~cpp
字号:
//---------------------------------------------------------------------------
// Name: Finance.cpp
// Author: Jrays
// Date: 1999.8.7
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Finance.h"
#include "About.h"
#include "Data.h"
#include "QrMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmFinance *frmFinance;
//---------------------------------------------------------------------------
__fastcall TfrmFinance::TfrmFinance(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::FormCreate(TObject *Sender)
{
Caption = Application->Title + " 财务分析模块";
edtLoanLoan->Text = "";
edtLoanRepay->Text = "";
edtRestoreProduct->Text = "";
edtRestoreMaterial->Text = "";
bbnFinanceFirst->Enabled = false;
bbnFinancePrior->Enabled = false;
try
{
FillFinanceStreamTable();
FillFinanceTable();
tblFinance->Active = true;
tblFinanceStream->Active = true;
}
catch( EDatabaseError &err )
{
ShowMessageDlg( "产生数据库错误:" + err.Message
+ "\n\n没有操作被完成" );
tblFinance->Active = true;
tblFinanceStream->Active = false;
bbnFinanceFirst->Enabled = false;
bbnFinancePrior->Enabled = false;
bbnFinanceNext->Enabled = false;
bbnFinanceLast->Enabled = false;
// bbnFirst->Enabled = false;
// bbnPrior->Enabled = false;
// bbnNext->Enabled = false;
// bbnLast->Enabled = false;
}
catch( char *s )
{
ShowMessageDlg( AnsiString( "产生错误:") + s );
tblFinance->Active = true;
tblFinanceStream->Active = false;
bbnFinanceFirst->Enabled = false;
bbnFinancePrior->Enabled = false;
bbnFinanceNext->Enabled = false;
bbnFinanceLast->Enabled = false;
// bbnFirst->Enabled = false;
// bbnPrior->Enabled = false;
// bbnNext->Enabled = false;
// bbnLast->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::FillFinanceStreamTable()
{
int MinQuarter = GetMinQuarter( "原料订购表" );
int curQuarter = GetMinQuarter( "产品生产销售表" );
if( MinQuarter != curQuarter )
throw "数据库的数据一致性遭受破坏,"
"系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
"系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
curQuarter = GetMinQuarter( "原料和产品库存费用表" );
if( MinQuarter != curQuarter )
throw "数据库的数据一致性遭受破坏,"
"系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
curQuarter = GetMinQuarter( "贷款利息表" );
if( MinQuarter != curQuarter )
throw "数据库的数据一致性遭受破坏,"
"系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
curQuarter = GetMinQuarter( "贷款借还表" );
if( MinQuarter != curQuarter )
throw "数据库的数据一致性遭受破坏,"
"系统无法正常运行。\n建议:请系统维护员立刻开始数据库的维护工作";
curQuarter = MinQuarter;
float ProductPayment;
float LoanLoan;
float LoanRepay;
float LoanInterest;
float ProductRestore;
float MaterialRestore;
float MaterialBuy;
float OtherCost;
tblFinanceStream->Active = false;
tblFinanceStream->EmptyTable();
tblFinanceStream->Active = true;
while( true )
{
query->Active = false;
query->SQL->Clear();
query->SQL->Add( "SELECT " );
query->SQL->Add( "Material.Quarter, Material.Quantity, Material.Price, " );
query->SQL->Add( "Product.Output, Product.OtherCost, Product.Sold, Product.Price, " );
query->SQL->Add( "Restore.MaterialCost, Restore.ProductCost, " );
query->SQL->Add( "LoanInterest.Interest, " );
query->SQL->Add( "Loan.Loan, Loan.Repay " );
query->SQL->Add( " From " );
query->SQL->Add( "原料订购表 Material, " );
query->SQL->Add( "产品生产销售表 Product, " );
query->SQL->Add( "原料和产品库存费用表 Restore, " );
query->SQL->Add( "贷款利息表 LoanInterest, " );
query->SQL->Add( "贷款借还表 Loan");
query->SQL->Add( "WHERE " );
query->SQL->Add( "Material.Quarter = :quarter " );
query->SQL->Add( "AND Product.Quarter = Material.Quarter " );
query->SQL->Add( "AND Restore.Quarter = Material.Quarter " );
query->SQL->Add( "AND LoanInterest.Quarter = Material.Quarter ");
query->SQL->Add( "AND Loan.Quarter = Material.Quarter " );
// query->SQL->Add( "ORDER BY Material.Quarter" );
query->Prepare();
query->ParamByName( "quarter" )->AsInteger = curQuarter;
query->Open();
if( query->RecordCount == 0 )
{
if( tblFinanceStream->State == dsEdit )
tblFinanceStream->Post();
break;
}
ProductPayment = query->FieldByName( "Sold" )->AsInteger *
query->Fields->FieldByNumber(7)->AsFloat;
LoanLoan = query->FieldByName( "Loan" )->AsFloat;
LoanRepay = query->FieldByName( "Repay" )->AsFloat;
LoanInterest = LoanLoan*query->FieldByName( "Interest" )->AsFloat;
tmpQuery->Active = false;
tmpQuery->SQL->Clear();
tmpQuery->SQL->Add( "SELECT Material.Quarter, Material.Available, Product.Available " );
tmpQuery->SQL->Add( "FROM " );
tmpQuery->SQL->Add( "可用原料数量表 Material, 可用产品数量表 Product " );
tmpQuery->SQL->Add( "WHERE " );
tmpQuery->SQL->Add( "Material.Quarter = :quarter " );
tmpQuery->SQL->Add( "AND Product.Quarter = Material.Quarter " );
tmpQuery->ParamByName( "quarter" )->AsInteger = curQuarter-1;
tmpQuery->Open();
ProductRestore = query->FieldByName( "ProductCost" )->AsFloat*
tmpQuery->Fields->FieldByNumber(3)->AsInteger;
MaterialRestore = query->FieldByName( "MaterialCost" )->AsFloat*
tmpQuery->Fields->FieldByNumber(2)->AsInteger;
MaterialBuy = query->FieldByName( "Quantity" )->AsInteger *
query->Fields->FieldByNumber(3)/*Material.Price*/->AsFloat;
OtherCost = query->FieldByName( "Output" )->AsInteger *
query->FieldByName( "OtherCost" )->AsFloat;
if( ProductPayment<0 || LoanLoan<0 || LoanRepay<0
|| LoanInterest<0 || ProductRestore<0
|| MaterialRestore<0 || MaterialBuy<0 || OtherCost<0 )
{
query->Active = false;
tmpQuery->Active = false;
throw "数据集中数据初始化失败,因为数据库中出现了不合法的数据(负数)。\n"
"建议:立即退出系统。请系统维护员维护数据库";
}
tblFinanceStream->Append();
tblFinanceStream->FieldByName( "Quarter" )->AsInteger = curQuarter;
tblFinanceStream->FieldByName( "ProductPayment" )->AsFloat = ProductPayment;
tblFinanceStream->FieldByName( "LoanLoan" )->AsFloat = LoanLoan;
tblFinanceStream->FieldByName( "LoanRepay" )->AsFloat = LoanRepay;
tblFinanceStream->FieldByName( "LoanInterest" )->AsFloat = LoanInterest;
tblFinanceStream->FieldByName( "ProductRestore" )->AsFloat = ProductRestore;
tblFinanceStream->FieldByName( "MaterialRestore" )->AsFloat = MaterialRestore;
tblFinanceStream->FieldByName( "MaterialBuy" )->AsFloat = MaterialBuy;
tblFinanceStream->FieldByName( "OtherCost" )->AsFloat = OtherCost;
tblFinanceStream->Post();
curQuarter++;
}
tblFinanceStream->First();
query->Active = false;
tmpQuery->Active = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::FillFinanceTable()
{
int MinQuarter = GetMinQuarter( "季度现金流分析表" );
tblFinance->Active = true;
while( !tblFinance->Eof )
{
if( tblFinance->FieldByName( "Quarter" )->AsInteger >= MinQuarter )
tblFinance->Delete();
// tblFinance->Post();
else
tblFinance->Next();
}
if( tblFinance->FieldByName( "Quarter" )->AsInteger >= MinQuarter )
tblFinance->Delete();
// tblFinance->Post();
// 清除原有的无效数据
tblFinanceStream->First();
tblFinanceStream->Active = true;
int curQuarter = MinQuarter;
float Cash;
while( true )
{
tblFinance->Last();
Cash = tblFinance->FieldByName( "Cash" )->AsFloat;
Cash += tblFinanceStream->FieldByName( "ProductPayment" )->AsFloat;
Cash += tblFinanceStream->FieldByName( "LoanLoan" )->AsFloat;
Cash -= tblFinanceStream->FieldByName( "LoanRepay" )->AsFloat;
Cash -= tblFinanceStream->FieldByName( "LoanInterest" )->AsFloat;
Cash -= tblFinanceStream->FieldByName( "ProductRestore" )->AsFloat;
Cash -= tblFinanceStream->FieldByName( "MaterialRestore" )->AsFloat;
Cash -= tblFinanceStream->FieldByName( "MaterialBuy" )->AsFloat;
Cash -= tblFinanceStream->FieldByName( "OtherCost" )->AsFloat;
tblFinance->Append();
tblFinance->FieldByName( "Quarter" )->AsInteger = curQuarter;
tblFinance->FieldByName( "Cash" )->AsFloat = Cash;
tblFinance->Post();
tblFinanceStream->Next();
if( tblFinanceStream->Eof )
break;
curQuarter++;
}
tblFinanceStream->First();
}
//---------------------------------------------------------------------------
int __fastcall TfrmFinance::GetMinQuarter( AnsiString tablename )
{
TTable *table = new TTable(this);
table->DatabaseName = Database;
table->TableName = tablename;
table->Active = true;
int minQuarter = 100;
table->First();
while( !table->Eof )
{
int curQuarter = table->FieldByName( "Quarter" )->AsInteger;
minQuarter = minQuarter<curQuarter ? minQuarter : curQuarter ;
table->Next();
}
int curQuarter = table->FieldByName( "Quarter" )->AsInteger;
minQuarter = minQuarter<curQuarter ? minQuarter : curQuarter ;
table->Active = false;
delete table;
return minQuarter;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::bbnGoClick(TObject *Sender)
{
Release();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::bbnFinanceFirstClick(TObject *Sender)
{
tblFinanceStream->First();
bbnFinanceFirst->Enabled = false;
bbnFinancePrior->Enabled = false;
bbnFinanceNext->Enabled = true;
bbnFinanceLast->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::bbnFinancePriorClick(TObject *Sender)
{
tblFinanceStream->Prior();
if( tblFinanceStream->Bof )
{
bbnFinanceFirst->Enabled = false;
bbnFinancePrior->Enabled = false;
}
bbnFinanceNext->Enabled = true;
bbnFinanceLast->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::bbnFinanceNextClick(TObject *Sender)
{
tblFinanceStream->Next();
if( tblFinanceStream->Eof )
{
bbnFinanceLast->Enabled = false;
bbnFinanceNext->Enabled = false;
}
bbnFinanceFirst->Enabled = true;
bbnFinancePrior->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinance::bbnFinanceLastClick(TObject *Sender)
{
tblFinanceStream->Last();
bbnFinanceLast->Enabled = false;
bbnFinanceNext->Enabled = false;
bbnFinanceFirst->Enabled = true;
bbnFinancePrior->Enabled = true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -