//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "pingzheng.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Parent"
#pragma resource "*.dfm"
TfmPingZheng *fmPingZheng;
//---------------------------------------------------------------------------
__fastcall TfmPingZheng::TfmPingZheng(TComponent* Owner)
: TfmParent(Owner)
{
this->szCondition1 = "凭证编号";
this->szCondition2 = "会计期间";
this->szCondition3 = "日期";
// 设置查询条件的显示
this->SetSeekEditStatus();
lblCount->Caption = "记录数: " + IntToStr(Table1->RecordCount) ;
// 设置分录输入GRid
StringGrid1->ColWidths[0] = 80;
StringGrid1->ColWidths[1] = 60;
StringGrid1->ColWidths[2] = 150;
StringGrid1->ColWidths[3] = 60;
StringGrid1->ColWidths[4] = 60;
StringGrid1->Cells[0][0] = "摘要";
StringGrid1->Cells[1][0] = "科目代码";
StringGrid1->Cells[2][0] = "科目名称";
StringGrid1->Cells[3][0] = "借方";
StringGrid1->Cells[4][0] = "贷方";
m_CurrentRow = 1;
m_CurrentCol = 0;
}
//---------------------------------------------------------------------------
void __fastcall TfmPingZheng::btNewClick(TObject *Sender)
{
// 注意如何调用父类窗体的方法
TfmParent::btNewClick(NULL);
// 计算凭证编号(Primary key);
AnsiString szID,szID1;
AnsiString sql;
Query1->SQL->Clear();
Query1->SQL->Add("select max(凭证编号) as 编号 from 凭证表历史");
Query1->Open();
TField* pField = Query1->FieldByName("编号");
if(pField->IsNull)
szID = "000001";
else
{
AnsiString szT = "000000";
szID = pField->AsInteger + 1;
szID = szT.SubString(1,6-szID.Length()) + szID;
}
Query1->SQL->Clear();
Query1->SQL->Add("select max(凭证编号) as 编号 from 凭证表");
Query1->Open();
pField = Query1->FieldByName("编号");
if(pField->IsNull)
szID1 = "000001";
else
{
AnsiString szT = "000000";
szID1 = pField->AsInteger + 1;
szID1 = szT.SubString(1,6-szID1.Length()) + szID1;
}
// 取最大值作为新凭证的ID
if(szID < szID1)
szID = szID1;
EditDBEdit1->Text = szID;
// 填写会计区间、凭证编号等信息
DBComboBox1->SetFocus();
DBComboBox1->ItemIndex = 0;
// 日期
TDateTime dt;
dt = dt.CurrentDate();
EditDBEdit4->SetFocus();
EditDBEdit4->Text = dt.DateString();
// 会计区间
Query1->SQL->Clear();
Query1->SQL->Add("select 取值 from 系统参数表 where 参数名称 = '当前会计期间'");
Query1->Open();
EditDBEdit3->Text = Query1->FieldByName("取值")->AsString;
// 状态
EditDBEdit7->Text = "未过";
// 其他
EditDBEdit2->Text = "";
EditDBEdit5->Text = "";
EditDBEdit6->Text = "";
// 清除分录
for(int i=1; i< StringGrid1->RowCount; i++)
{
StringGrid1->Cells[0][i] = "";
StringGrid1->Cells[1][i] = "";
StringGrid1->Cells[2][i] = "";
StringGrid1->Cells[3][i] = "";
StringGrid1->Cells[4][i] = "";
}
StringGrid1->SetFocus();
m_CurrentRow = 1;
m_CurrentCol = 0;
StringGrid1->Row = 1;
StringGrid1->Col = 0;
}
//---------------------------------------------------------------------------
void __fastcall TfmPingZheng::btDeleteClick(TObject *Sender)
{
if (Application->MessageBox("是否删除记录?", "确定", MB_YESNO)
== mrYes)
{
// 先删除分录
Query1->SQL->Clear();
Query1->SQL->Add("delete from 分录表 where ");
Query1->SQL->Add("凭证编号='" + EditDBEdit1->Text + "'");
Query1->ExecSQL();
DataSource1->Edit();
// 删除凭证
Table1->Delete();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmPingZheng::btSaveClick(TObject *Sender)
{
// 检查借贷是否平衡
if(EditDBEdit5->Text != EditDBEdit6->Text)
{
Application->MessageBox("借贷双方不平衡,请检查","提示",MB_OK);
return;
}
// 提交凭证
// 注意如何调用父类窗体的方法
TfmParent::btSaveClick(NULL); // 子表分录表
// 保存分录
AnsiString sql;
// 先删除分录
Query1->SQL->Clear();
sql = "delete from 分录表 where 凭证编号='" + EditDBEdit1->Text + "'";
Query1->SQL->Add(sql);
Query1->ExecSQL();
// 重新插入分录表
for(int i=1; i< StringGrid1->RowCount; i++)
{
if(StringGrid1->Cells[1][i].Trim().IsEmpty())
continue;
sql = "insert into 分录表(凭证编号,摘要,科目代码,借方,贷方)";
sql += " values('" + EditDBEdit1->Text + "','";
//if(!StringGrid1->Cells[0][i].Trim().IsEmpty())
sql += StringGrid1->Cells[0][i].Trim() + "','";
sql += StringGrid1->Cells[1][i].Trim() + "',";
if(StringGrid1->Cells[3][i].Trim().IsEmpty())
sql += "0,";
else
sql += StringGrid1->Cells[3][i].Trim() + ",";
if(StringGrid1->Cells[4][i].Trim().IsEmpty())
sql += "0)";
else
sql += StringGrid1->Cells[4][i].Trim() + ")";
Query1->SQL->Clear();
Query1->SQL->Add(sql);
Query1->ExecSQL();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmPingZheng::StringGrid1SelectCell(TObject *Sender,
int ACol, int ARow, bool &CanSelect)
{
// 关联科目名称
if(m_CurrentCol == 1)
{
Query1->SQL->Clear();
Query1->SQL->Add("select 科目名称 from 科目表 where ");
Query1->SQL->Add("科目代码='" + StringGrid1->Cells[1][m_CurrentRow].Trim() + "'");
Query1->Open();
StringGrid1->Cells[2][m_CurrentRow] = Query1->FieldByName("科目名称")->AsString;
}
// 是否换行了
if(m_CurrentRow != ARow)
{
// 检查数据是否合法
if(!StringGrid1->Cells[1][m_CurrentRow].Trim().IsEmpty() &&
StringGrid1->Cells[2][m_CurrentRow].Trim().IsEmpty())
{
Application->MessageBox("科目代码不存在","提示",MB_OK);
CanSelect = false;
return;
}
if(!StringGrid1->Cells[1][m_CurrentRow].Trim().IsEmpty() &&
StringGrid1->Cells[3][m_CurrentRow].Trim().IsEmpty() &&
StringGrid1->Cells[4][m_CurrentRow].Trim().IsEmpty() )
{
Application->MessageBox("金额不许都为空","提示",MB_OK);
CanSelect = false;
return;
}
}
// 计算汇总金额
double fAmt1=0, fAmt2=0;
for(int i=1; i< StringGrid1->RowCount; i++)
{
if(!StringGrid1->Cells[1][i].Trim().IsEmpty())
{
if(!StringGrid1->Cells[3][i].Trim().IsEmpty())
fAmt1 += StrToFloat(StringGrid1->Cells[3][i].Trim());
if(!StringGrid1->Cells[4][i].Trim().IsEmpty())
fAmt2 += StrToFloat(StringGrid1->Cells[4][i].Trim());
}
}
EditDBEdit5->Text = fAmt1;
EditDBEdit6->Text = fAmt2;
// 新行
if(ACol == 2)
CanSelect = false;
if(ACol == 2 && m_CurrentCol == 1)
{
StringGrid1->Col = 3;
return;
}
else if(ACol == 2 && m_CurrentCol == 3)
{
StringGrid1->Col = 1;
return;
}
m_CurrentRow = ARow;
m_CurrentCol = ACol;
}
//---------------------------------------------------------------------------
void __fastcall TfmPingZheng::Table1AfterScroll(TDataSet *DataSet)
{
// 清除分录
for(int i=1; i< StringGrid1->RowCount; i++)
{
StringGrid1->Cells[0][i] = "";
StringGrid1->Cells[1][i] = "";
StringGrid1->Cells[2][i] = "";
StringGrid1->Cells[3][i] = "";
StringGrid1->Cells[4][i] = "";
}
// 刷新
Query1->SQL->Clear();
Q
没有合适的资源?快使用搜索试试~ 我知道了~
cwgl.zip_C++builder _general ledger_凭证
共61个文件
bmp:16个
cpp:12个
dfm:11个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 74 浏览量
2022-09-22
23:11:11
上传
评论 1
收藏 1.04MB ZIP 举报
温馨提示
用C++Builder编写的财务管理系统,有科目和帐号设置,凭证输入和凭证过帐以及总分类帐,明细帐,结账及报表等功能
资源推荐
资源详情
资源评论
收起资源包目录
cwgl.zip (61个子文件)
chap4
代码
复件 pingzheng.dfm 11KB
zhanghu.dfm 8KB
totalzb.h 1KB
caiwu.bpr 8KB
Main.h 2KB
caiwu.cpp 1KB
totalzb.cpp 2KB
kemu.h 1KB
Parent.h 3KB
db.cpp 545B
db.dfm 345B
zhanghu.cpp 3KB
Parent.cpp 7KB
kemu.dfm 3KB
pingzheng.cpp 9KB
reprotzich.cpp 710B
zhanghu.h 1KB
detailzb.dfm 3KB
caiwu.res 1KB
复件 pingzheng.h 2KB
db.h 859B
Parent.dfm 45KB
caiwu.exe 1.49MB
复件 pingzheng.cpp 6KB
Main.dfm 10KB
detailzb.cpp 2KB
detailzb.h 1KB
reprotzich.dfm 43KB
kemu.cpp 791B
totalzb.dfm 4KB
pingzheng.h 2KB
db.dti 525B
pingheng.dfm 3KB
pingheng.h 1KB
reprotzich.h 3KB
pingzheng.dfm 8KB
deltemp.bat 158B
Main.cpp 7KB
pingheng.cpp 7KB
建库脚本
caiwubook_Log.LDF 1024KB
财务管理系统.sql 25KB
caiwubook_Data.MDF 1.75MB
caiwubook.bak 1.52MB
财务管理系统实例程序.sql 34KB
icon
试算平衡.bmp 478B
删除.bmp 246B
上记录.bmp 246B
搜索.bmp 246B
关闭.bmp 246B
尾记录.bmp 246B
取消.bmp 246B
保存.bmp 246B
计算.bmp 246B
启用帐簿.bmp 478B
修改.bmp 246B
下记录.bmp 246B
首记录.bmp 246B
查询选择.bmp 246B
caiwu.ICO 1KB
建立新帐簿.bmp 478B
新增.bmp 246B
共 61 条
- 1
资源评论
- m0_737520182023-03-20感谢大佬分享的资源,对我启发很大,给了我新的灵感。
小贝德罗
- 粉丝: 69
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功