1 财务理系统需求分析
标准财务理系统应该包括图11示功外系统应该包括信息系统具备通功例系统理权限设置数备份恢复等
中功干相关联子功模块组成
财务理系统
基础资料维护
证理
帐薄理
报表理
期末处理
理
出纳理
工资理
固定资产理
财务分析
系统理
图11 财务理系统基功模块
财务理系统基流程图12示
费分摊率设定
科目分摊处理
会计基资料维护
期初资料开账
开账资料账处理
证手动输入
证审核
证账
期间结束
资料查询报表印
年度结束
图12 财务理系统基流程图
11 基础资料维护
基础资料维护功模块会计科目核算项目证帐薄固定资产等项目进行初始化设置设置般轻易改动中包含子功模块图13示
中会计科目基础资料终点财务软件离开科目正确设置容包括科目代码科目名称助记码科目类否存货科目余额方数量单位等
12 证理
证理功模块完成证制定审核记账查询等功动生产种会计帐中包含子功模块图14示
基础资料维护
核算项目
结算方式
常摘
会计科目
币
图13 基础资料维护功模块
证理
证账
证查询
证汇总
证检查
证审核
证输入
图14 证理功模块
中证输入证理重点证输入模块中实际业务分录输入计算机中容包括证状态会计期间证字号证编号序号日期附单审核账制单方合计贷方合计账状态序号码等张证应记录分录容包括分录编号会计期间证字号证编号摘科目代码方贷方数量单价结算方式结算号结算日期等
13 帐薄理
帐薄理功模块提供种账务处理查询筛选功中包含子功模块图15示总账科目级币科目范围等查询明细帐期间范围等币科目范围查询提供栏帐数量金额明细帐核算项目分类总账等帐薄报表
总分类帐
明细帐
栏帐
数量金额总账
数量金额明细表
核算项目分类总账
帐薄理
图15 帐薄理功模块
14 报表理
核算项目明细表
利润分配表
损益表
现金流量表
资产负债表
科目余额表
试算衡表
日报表
报表理
报表理功模块报表定义编制输出企业会计核算结果需报表形式反映出般包括账务报表处理汇总报表处理合报表处理等般财务系统会预设资产负债表损益表利润分配表等类报表模板图16示简化报表操作程
图16 报表理功模块
15 期末处理
期末处理系统总结某会计奇迹营活动情况转期必做事项时该模块结账前企业财务理成计算求必须进行制造费产成品成结账期末调汇损益结账等工作中包含子功模块图17示
动转账
期末处理
期末结汇
结账损益
期末调汇
图17 期末处理功模块
1.6 理
核销应收款
应付帐龄分析
账
理
应收账龄分析
核销应付款
理功模块企业转款进行全面核算理分析预测决策般包括单位理济业务理转龄分析转款核销坏账处理等功图18示
图18 理功模块
1.7 出纳理
出纳会计中十分重岗位担负着现金银行存款收付职出纳理结账系统联合起单独提供出纳员般包括现金帐理银行存款帐理票理等图19示
支票理
出纳轧帐
出纳报表
日常处理
初始设置
出纳理
图19 出纳理功模块
出纳系统账务系统功分离数紧密连接享合理数享模式会计出纳员更高效独立工作
18 工资理
工资发放条
工资理
报表输入
工资统计表
工资汇总表
费分配
数输入
核算方法
印工资条
工资理功模块进行企业工资发放核算工资动态变动理工资费计提分配银行代发等般包括基础设置工资结构设置工资变动理工资数处理工资报表理等功图20示
图20 功理功模块
19 固定资产理
固定资产理功模块理核算固定资产增减变化变动折旧计提转账等般包括图21示子功模块允许固定资产采折旧方法提供标准折旧方法提供固定资产卡片定义设置灵活报表查询系统
报表输入
固定资产明细账
变动资料录入
月工资量输入
计提折旧
变动资料查询
固定资产清单
固定资产增减表
固定资产理
图21 固定资产理功模块
20 财务分析
财务分析功财务理重组成部分核算基础财务报表资料起点采专门方法系统分析评价企业现营成果财务状况变动账务数进步加工整理分析研究量报表数转换成决策信息理层进行日常重决策帮手包含子功模块图22示
损益分析
财务分析
财务指标
财务状况分析
定义报表
图22 财务分析功模块
财务状况分析截止报告期资产负债者权益结构例变化趋势等情况进行分析分结构分析较分析趋势分析三种分析方法结构分析资产负债者权益中具体项目战该类项目总体项目结构重进行分析揭示该类财务指标结构否合理较分析口径(指标名称相计算方法相)指标意两会计期间(会计期间预算值间)进行较反映增减变动情况趋势分析反映某财务指标资产总计流动资产合计银行存款等年度月份间季度间年度间变化趋势
损益期年累计会计期间盈利状况盈利力进行分析损益分析分结构分析较分析趋势分析三种分析方法
2 财务理系统数库分析
根需求分析基财务理系统数库中致包括100张数表分
存放相应功数信息中科目表起关键作表存放科目信息涉科目信息数表记录科目代码根作外键科目代码字段相应科目表数间关系1:N关系
21 财务理系统ER图
整系统涉涉实体属性较限篇幅没必逐列举图21财务理系统关键实体ER图
实体基信息表间应关系类似
期分类账簿
科目代码
期初余额
期方合计
期贷方合计
数量单位
余额
摘
项目科目表
P
项目名称
项目代码
科目代码
科目级
部编号
科目余额表
EK1科目代码
期初方余额
期初贷方余额
期方发生额
期代发发生额
年方累计发生额
年贷方累计发生额
期方余额
期贷方余额
结账分录
会计期间
余额方
部编号
记录表
PK 部编号
分录编号
会计期间
证字号
EK2证编号
摘
FK1科目代码
方
贷方
数量
单价
结算方式
结算号
结算日期
证表
PK 证编码
部编号
证状态
会计期间
证字号
EK1 序号
日期
附单
审核
账
制单
数量
单价
方合计
贷方合计
账状态
序号码
科目表
PK 科目代码
科目名称
助记码
科目类
否存贷科目
余额方
数量单位
明细账簿
部编号
分录编号
会计期间
证字号
证编号
EK1 摘
科目代码
方
贷方
余额方
余额
数量
单价
结算方式
结算号
结算日期
余额标记
图23 财务理系统ER图
22 财务理系统数表清单
表 财务理系统数表清单
数表名称
数表途
科目表
保存企业财务科目设置信息
科目余额表
保存财务(账户)科目余额信息
分录表
证理中分录输入
证表
证输入理
分录历史表
分录输入确认数放入历史
证历史表
分录输入确认数放入历史
明细账簿
明细账簿企业财务明细账簿输入
分类账簿
明细账簿企业财务分类账簿输入
年明细帐薄
年度明细帐薄
年分类帐薄
年度明分类帐薄汇总
历史明细帐薄
保存明细帐薄历史
历史分类帐薄
保存分类帐薄历史
损益表
保存企业财务损益表信息
资产负债表
保存企业财务资产负债表信息
现金流量表
保存企业财务现金流量表信息
利润分配表
保存企业财务利润分配表信息
财务状况变动表
保存企业企业财务状况变动表信息
年终损益表
保存企业企业财务年终损益表信息
年终损益表
保存企业企业财务年终损益表信息
年终资产负债表
保存企业企业财务年终资产负债表信息
3 实例制作介绍
31 实例介绍
明细账
试算衡表
帐户设置
科目设置
财务理系统
证理
帐薄查询
结账报表
证输入
证账
总分类帐
资产负债表
期末结账
图24 详细介绍功模块
户登陆权限理功系统实现方法致
32 系统流程图
系统流程图图32示
记录业务
证输入
证查询
财务部门
证账
期末结账
分类帐
分类查询
财务报表查询
图25 系统流程图
4 数库设计
根实例介绍科目表系统关键表表均科目表通科目代码字段进行关联系统需11张表途分图41示
表41 系统数表途
科目表
保存企业财务科目设置信息
帐薄初始化表
正式系统前初始化科目表期初余额
证表
输入会计证分目录表表
分录表
输入会计分录分录表表
科目余额表
保存会计期间科目贷余额情况
证表历史
保存转账证历史
分录表历史
保存转账分录历史
期明细帐薄
保存前会计期间明细张博数
期汇总帐薄
保存前会计期间明细帐薄数期末结账期末变新会计期间期初
资产负债表
统计表计算资产负债表
系统参数表
系统运行需参数信息
41 创建数库
开SQL Server企业理器新建数库命名caiwubook
42 创建科目表数表
CREATE TABLE [dbo][帐簿初始化表] (
[科目代码] [char] (20) NOT NULL
[科目名称] [char] (20) NULL
[累计方] [money] NULL
[累计贷方] [money] NULL
[期初余额] [money] NULL
[余额方] [char] (4) NULL
) ON [PRIMARY]
GO
43 创建证表分录表数表
REATE TABLE [dbo][证表历史] (
[证编号] [char] (10) NOT NULL
[会计期间] [int] NULL
[证字号] [char] (2) NULL
[日期] [datetime] NULL
[附单] [int] NULL
[制单] [char] (20) NULL
[方合计] [money] NULL
[贷方合计] [money] NULL
[账状态] [char] (4) NULL
[证状态] [char] (10) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo][分录表] (
[编号] [int] IDENTITY (1 1) NOT NULL
[证编号] [char] (10) NOT NULL
[摘] [char] (40) NULL
[科目代码] [char] (20) NULL
[方] [money] NULL
[贷方] [money] NULL
[数量] [int] NULL
[单价] [money] NULL
[结算方式] [char] (10) NULL
[结算号] [int] NULL
[结算日期] [datetime] NULL
) ON [PRIMARY]
GO
44 创建关键数表
CREATE TABLE [dbo][科目余额表] (
[科目代码] [char] (20) NULL
[期初方余额] [money] NULL
[期初贷方余额] [money] NULL
[期方发生额] [money] NULL
[期贷方发生额] [money] NULL
[年方累计发生额] [money] NULL
[年贷方累计发生额] [money] NULL
[期方余额] [money] NULL
[期贷方余额] [money] NULL
[结算分录] [int] NULL
[会计期间] [int] NULL
[余额方] [char] (4) NULL
[部编号] [int] IDENTITY (1 1) NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo][资产负债表] (
[会计期间] [int] NOT NULL
[现金现金等价物] [money] NULL
[应收账款] [money] NULL
[坏账准备] [money] NULL
[应收账款净值] [money] NULL
[流动资产总计] [money] NULL
[固定资产原值] [money] NULL
[累计折旧] [money] NULL
[固定资产总计] [money] NULL
[资产] [money] NULL
[资产总计] [money] NULL
[应付账款] [money] NULL
[预收账款] [money] NULL
[应付工资] [money] NULL
[负债] [money] NULL
[负债总计] [money] NULL
[实收资] [money] NULL
[资公积] [money] NULL
[赢余公积] [money] NULL
[未分配利润] [money] NULL
[者权益总计] [money] NULL
[负债者权益总计] [money] NULL
) ON [PRIMARY]
GO
45 创建键外键等表约束
查询分析器中通代码创建数表键外键等表约束
ALTER TABLE [dbo][科目表] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[科目代码]
) ON [PRIMARY]
GO
ALTER TABLE [dbo][资产负债表] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[会计期间]
) ON [PRIMARY]
GO
ALTER TABLE [dbo][分录表] ADD
CONSTRAINT [FK_分录表_证表] FOREIGN KEY
(
[证编号]
) REFERENCES [dbo][证表] (
[证编号]
)
CONSTRAINT [分录表_科目代码_fk] FOREIGN KEY
(
[科目代码]
) REFERENCES [dbo][科目表] (
[科目代码]
)
GO
ALTER TABLE [dbo][分录表历史] ADD
CONSTRAINT [分录表历史_科目代码_fk] FOREIGN KEY
(
[科目代码]
) REFERENCES [dbo][科目表] (
[科目代码]
)
GO
ALTER TABLE [dbo][帐簿初始化表] ADD
CONSTRAINT [帐簿初始化表_科目代码_fk] FOREIGN KEY
(
[科目代码]
) REFERENCES [dbo][科目表] (
[科目代码]
)
GO
ALTER TABLE [dbo][期明细账簿] ADD
CONSTRAINT [期明细账簿_科目代码_fk] FOREIGN KEY
(
[科目代码]
) REFERENCES [dbo][科目表] (
[科目代码]
)
GO
ALTER TABLE [dbo][期汇总账簿] ADD
CONSTRAINT [期汇总账簿_科目代码_fk] FOREIGN KEY
(
[科目代码]
) REFERENCES [dbo][科目表] (
[科目代码]
)
GO
46 创建存储程
系统sf_初始化帐户 sf_启帐户 sf_证帐户 sf_期末结账sf_计算资产负债表五存储程实现功分新建帐套启帐套证账确认期末结账运算指定会计期间资产负债表等功具体计算方法面脚中详细注释
create proc sf_初始化帐户
as
begin tran
清原数新建立帐户
delete from 帐簿初始化表
设置帐户初始基数
insert into 帐簿初始化表
(科目代码科目名称累计方累计贷方期初余额余额方)
select 科目代码科目名称000余额方 from 科目表
设置初始信息
update 系统参数表 set 取值 datepart(mmgetdate())
where 参数名称 '会计期间开始月份'
update 系统参数表 set 取值 datepart(mmgetdate())
where 参数名称 '前会计期间'
commit
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
create proc sf_启帐户
as
begin tran
清原数新建立帐户
delete from 科目余额表
delete from 期汇总账簿
delete from 期明细账簿
delete from 分录表
delete from 分录表历史
delete from 证表
delete from 证表历史
设置期汇总账簿科目余额表
insert into 期汇总账簿 select 科目代码0期初余额
0000期初余额余额方 from 帐簿初始化表
update 期汇总账簿 set 会计期间b取值 from
系统参数表 as b where 参数名称'前会计期间'
insert into 科目余额表(科目代码 期初方余额 期初贷方余额
期方发生额 期贷方发生额 年方累计发生额
年贷方累计发生额 期方余额 期贷方余额
余额方)
select 科目代码累计方累计贷方0000
case when 余额方'方' then 期初余额 else 0 end
case when 余额方'贷方' then 期初余额 else 0 end
余额方 from 帐簿初始化表
update 科目余额表 set 会计期间b取值 from
系统参数表 as b where 参数名称'前会计期间'
commit
GO
create proc sf_证帐
as
begin tran
设置期汇总账簿信息
update 期汇总账簿 set 期方合计 期方合计 + b方
期贷方合计 期贷方合计 + b贷方
年方累计 年方累计 + b方
年贷方累计 年贷方累计 + b贷方
余额 余额 + case when 余额方'方' then (方 贷方)
else (贷方 方) end
from 期汇总账簿 as a
(select 科目代码 sum(方) as 方 sum(贷方) as 贷方
from 分录表 as f 证表 as p where f证编号 p证编号
group by f科目代码) as b
where a科目代码 b科目代码
设置期明细账簿信息
insert into 期明细账簿(分录编号会计期间证字号 证编号 摘
科目代码 方 贷方 数量 单价 结算方式
结算号 结算日期)
select 编号会计期间证字号 p证编号 摘
科目代码 方 贷方 数量 单价 结算方式
结算号 结算日期 from 证表 as p 分录表 as f
where f证编号 p证编号
计算余额
update 期明细账簿
set 余额方a余额方 from 科目表 as a
where 期明细账簿科目代码a科目代码
通游标循环计算余额
declare @bh int @dm char(20) @jf money @df money
declare @fx char(4) @bj char(4) @ye money @kjqj int
declare mycursor cursor for select 部编号科目代码
方贷方余额方余额标记会计期间 from 期明细账簿
where 余额标记 is null order by 部编号
open mycursor
fetch next from mycursor into @bh@dm@jf@df@fx@bj@kjqj
while (@@fetch_status0)
begin
select @ye 余额 from 期明细账簿 where 部编号 in
(select max(部编号) from 期明细账簿
where 部编号 < @bh and 科目代码@dm
and 余额标记 '')
没期第条明细科目余额表取余额
if(@ye is null)
select @ye case when 余额方'方' then
期方余额 期贷方余额 else
期贷方余额 期方余额 end
from 科目余额表 where 会计期间 @kjqj
and 科目代码 @dm
select @ye isnull(@ye0)
update 期明细账簿
set 余额case when @fx'方' then
@ye + @jf @df else
@ye + @df @jf end
余额标记''
where 部编号@bh
fetch next from mycursor into @bh@dm@jf@df@fx@bj@kjqj
end
close mycursor
deallocate mycursor
更改状态
update 证表 set 账状态 '已'
放入历史
insert into 证表历史 select * from 证表
insert into 分录表历史 select * from 分录表
清已帐数
注意改放程序中清统计证张数分录张数金额
统计删
delete from 分录表
delete from 证表
commit
GO
create proc sf_期末结帐
as
begin tran
先没帐证帐
exec sf_证帐
declare @kjqj int 前会计期间
select @kjqj 会计期间 from 期汇总账簿
计算科目余额表统计资产负债表损溢表等
update 科目余额表 set 期方发生额 b期方合计
期贷方发生额 b期贷方合计
会计期间 b会计期间 余额方 b余额方
from 科目余额表 as a 期汇总账簿 as b
where a科目代码 b科目代码 and a会计期间b会计期间
update 科目余额表 set
年方累计发生额 年方累计发生额 + 期方发生额
年贷方累计发生额 年贷方累计发生额 + 期贷方发生额
期方余额 期初方余额 + 期方发生额
期贷方余额 期初贷方余额 + 期贷方发生额
where 会计期间 @kjqj
更新会计期间
update 系统参数表 set 取值 取值 + 1 where 参数名称'前会计期间'
期汇总账簿明细账簿倒入历史实例程序演示
清汇总账簿明细账簿进入新会计期间
update 期汇总账簿 set 会计期间 会计期间 + 1 期初余额余额
期方合计 0 期贷方合计 0 余额 0
delete from 期明细账簿
新会计期间科目余额表
insert into 科目余额表(科目代码 期初方余额 期初贷方余额
期方发生额 期贷方发生额 年方累计发生额
年贷方累计发生额 期方余额 期贷方余额
余额方会计期间)
select 科目代码 期方余额 期贷方余额0000
期方余额 期贷方余额 余额方会计期间+1
from 科目余额表 where 会计期间 @kjqj
commit
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
create proc sf_计算资产负债表 @kjqj int
as
begin tran
计算资产负债表里提供计算方法供演示
没列出明细项目资产负债里
注意里科目代码统计说明资产负债表含意计算方法
果科目代码样改存储程需作相应修改
delete from 资产负债表 where 会计期间 @kjqj
insert into 资产负债表(会计期间) values(@kjqj)
update 资产负债表 set 现金现金等价物 b金额 from 资产负债表 as a
(select sum(isnull(期方余额0)isnull(期贷方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 > 101 and 科目代码 < 111)
as b where a会计期间 @kjqj
update 资产负债表 set 应收账款 b金额 from 资产负债表 as a
(select sum(isnull(期方余额0)isnull(期贷方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 > 121 and 科目代码 < 129 and 科目代码<>125)
as b where a会计期间 @kjqj
注意坏账准备贷方
update 资产负债表 set 坏账准备 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 125)
as b where a会计期间 @kjqj
update 资产负债表 set 应收账款净值 应收账款 坏账准备
update 资产负债表 set 流动资产总计 现金现金等价物 + 应收账款净值
update 资产负债表 set 固定资产原值 b金额 from 资产负债表 as a
(select sum(isnull(期方余额0)isnull(期贷方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and 科目代码 171)
as b where a会计期间 @kjqj
注意累计折旧贷方
update 资产负债表 set 累计折旧 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and 科目代码 175)
as b where a会计期间 @kjqj
update 资产负债表 set 固定资产总计 固定资产原值 累计折旧
update 资产负债表 set 资产 b金额 from 资产负债表 as a
(select sum(isnull(期方余额0)isnull(期贷方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 > 131 and 科目代码 < 195 and 科目代码<>171
and 科目代码 <> 175)
as b where a会计期间 @kjqj
update 资产负债表 set 资产总计 流动资产总计 + 固定资产总计 + 资产
计算负债者权益
负债类级贷方金额
update 资产负债表 set 应付账款 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 > 201 and 科目代码 < 204 )
as b where a会计期间 @kjqj
update 资产负债表 set 预收账款 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 206)
as b where a会计期间 @kjqj
update 资产负债表 set 应付工资 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and 科目代码 215)
as b where a会计期间 @kjqj
update 资产负债表 set 负债 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 > 209 and 科目代码 < 281 and 科目代码 <> 215)
as b where a会计期间 @kjqj
update 资产负债表 set 负债总计 应付账款 + 预收账款 + 应付工资 + 负债
计算者权益
update 资产负债表 set 实收资 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and 科目代码 301)
as b where a会计期间 @kjqj
update 资产负债表 set 资公积 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and 科目代码 311)
as b where a会计期间 @kjqj
update 资产负债表 set 赢余公积 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and 科目代码 313)
as b where a会计期间 @kjqj
update 资产负债表 set 未分配利润 b金额 from 资产负债表 as a
(select sum(isnull(期贷方余额0)isnull(期方余额0)) as 金额
from 科目余额表 where 会计期间 @kjqj and
科目代码 321 or 科目代码 322 )
as b where a会计期间 @kjqj
update 资产负债表 set 者权益总计 实收资 + 资公积 +
赢余公积 + 未分配利润
update 资产负债表 set 负债者权益总计 负债总计 + 者权益总计
commit
GO
5 程序开发
系统采文档窗体程序功应子窗体
51 程序运行结果
实例运行结果图21示选择菜单中菜单项进入相应功
图26 实例运行结果
(1) 首先选择基础数理|科目设置菜单命令进入会计科目设置功窗体中输入科目基础信息图27示中科目类选项组表示该科目属类般资产类科目余额方方负债权益科目余额方贷方特殊坏账准备科目余额方贷方
图27 会计科目设置功窗体
需嫌憎修改科目单击相应钮输入信息单击保存钮需删条信息选中该信息单击删钮
(2) 科目设置完成选择基础数理|帐户设置命令进入帐户设置(期初数录入)功窗体图28示
图28 示 帐户设置功窗体
该功模块建立新帐薄启帐薄试算衡钮建立新功模块初始帐薄单击钮系统台调sf_初始化帐户存储程删帐薄初始化表原信息根科目表重新创建帐薄初始化表窗体中显示DBGrid中输入科目初始信息系统参数信息完成单击启帐薄钮启新帐薄启帐薄钮先检查前帐薄试算否衡果衡台调sf_启帐户存储程启新定义帐薄需注意启新定义帐薄会删系统历史数试算衡钮时查前帐薄信息否衡图29图30示窗体方合计金额衡原
(3) 启帐薄进行证录入工作选择证理|证输入命令进入会计证输入功窗体图31示中输入证会计分录信息单击新增钮系统动新建证证号会计期间等信息动产生中会计期间系统参数表中前会计期间方stringGrid中输入分录信息完成单击保存钮系统先检查贷双方否衡果衡予保存需修改某证信息选择相应证单击修改钮修改完成单击保存钮
(4) 完成合计证输入工作需证进行账证账确认输入会计证账证进行修改选择证理|证账命令系统提示否账图32示单击钮系统台调sf_证账存储程证进行账计算期汇总帐薄明细帐薄账完成系统提示账成功显示账证数贷方金额等信息
图31 会计证输入功窗体
图31 证账功
(5) 分选择帐薄查询|总分类账帐薄查询|明细账命令分进行期总分类帐查询明细帐查询功图32图33示
图32 总分类帐查询
图33 明细账查询
(6) 前会计期间证账完成进行月末结账操作转入会计期间结账前首先进行试算衡检查选择结账报表|失算衡表命令前账目衡信息图34示
图34 试算衡功
(7) 试算结果衡选择结账报表|期末结账菜单命令系统台调sf_计算资产负债表存储程计算资产负债表然报表窗体中显示报表图35示
52创建工程
启动Microsoft Visual NET 2003菜单中选择文件|新建|项目命令弹出新建项目话框项目类型列表框中选择Visual Basic 项目选项然模板列表框中选择Windowns 应程序名称文框输入合适方案文件名选取存放位置然单击确定钮完成新项目开启
53 创建系统窗体
(1) 利系统默认生成窗体作窗体添加菜单控件控件布局图35示
图35 系统窗体
(2) 窗体控件属性设置表36表37示
表36 窗体属性设置
控制类型
象(控件)名
属性
取值(说明)
From
Frorm Main
Name
frmMain
Caption
财务理系统
IsMdiContainer
True
|表37 窗体菜单属性
菜单栏
菜单项
属性
取值(说明)
MnJichu
Text
基础数理(&V)
MnKemu
Text
科目设置(&Z)
MnZhanghu
Text
帐户设置(&W)
Mnpingzheng
Text
证理(&W)
Mnshuru
Text
证理(&W
Mnguozhang
Text
证账(&Z)
Mnzhangbu
Text
账簿查询(&X)
Mnzongfen
Text
总分类账(Y)
Mnmingxi
Text
明细账(&Z)
Mnjiezhang
Text
结账报表(&Y)
Mnpingzheng
Text
试算衡表(&Y)
MnQimo
Text
期末结账(&Y)
Mnfuzhai
Text
资产负债表(&Z)
MnExit
Text
退出系统(&Z)
54 创建数操作访问模块
系统中数表进行维护窗体界面实现功体致减少系统编程工作量部分抽取出生成父类窗体数库操作窗体均通继承父类窗体获数维护功
(1) 新建窗体Name属性改frmBase增加图38示控件
图38 基础窗体
(2) 控件属性设置表39示
表39 基础窗体控件属性设置
控件类型
象名
属性
取值(说明)
ImageList
ImageList1
Images
Toolbar
Toolbar1
Buttons
Toolbar
Toolbar1
ImageList
ImageList1
Groupbox
Grbsearch
Dock
Top
Textbox
Txbone
Text
Textbox
Txbtwo
Text
Textbox
Txthree
Text
Textbox
Txtsearch
Text
Button
Btnsearch
Text
Datagird
Dgglist
Anchor
Topbuttonleftright
(3)窗体类frmbase添加变量
Protected bmData As BindingManagerBase
Protected dtData As DataTable
'bAdd true 新增
'bAdd false 修改
Protected bAdd As Boolean
(4)窗体类frmbase添加派生类中需重写函数
Public Overridable Sub Prepare()
End Sub
'设置DataGrid控件
Public Overridable Sub SetDataGrid()
End Sub
'查询函数
Public Overridable Sub SearchResult()
SetDataGrid()
dgdListDataSource dtDataDefaultView
End Sub
'新增函数
Public Overridable Sub LoadData()
End Sub
Public Overridable Sub SaveForAdd()
End Sub
'更新函数
Public Overridable Sub SaveForUpdate()
End Sub
'删函数
Public Overridable Sub DeleteData()
End Sub
'清函数
Public Overridable Sub Clear()
End Sub
Public Overridable Sub LoadDataForDetail()
End Sub
'设置TextBox函数
Public Overridable Sub SetTextBoxState(ByVal bState As Boolean)
End Sub
Public Overridable Sub ResetDataGridData()
End Sub
End Class
(5)窗体类frmbaseload事件添加响应函数
Private Sub frmBase_Load(ByVal sender As Object _
ByVal e As SystemEventArgs) Handles MyBaseLoad
Prepare()
SetDataGrid()
SetTextBoxState(True)
End Sub
(6)钮btnsearchclick事件添加响应函数
Private Sub btnSearch_Click(ByVal sender As SystemObject _
ByVal e As SystemEventArgs) Handles btnSearchClick
SearchResult()
End Sub
(7)数表格dgdlistcurrentcellchanged事件添加响应函数
Private Sub dgdList_CurrentCellChanged(ByVal sender As Object _
ByVal e As SystemEventArgs) Handles dgdListCurrentCellChanged
Try
'判断bmData否Nothing
If bmData Is Nothing Then
Exit Sub
End If
'If bmDataPosition <> dgdListCurrentCellRowNumber Then
bmDataPosition dgdListCurrentCellRowNumber
LoadDataForDetail()
'End If
Catch ex As Exception
MessageBoxShow(exToString)
End Try
End Sub
(8) 窗体类frmbase添加私函数settoolbarstate
Private Sub SetToolBarState(ByVal bState As Boolean)
'设置Button否够单击
ToolBar1Buttons(0)Enabled bState
ToolBar1Buttons(1)Enabled bState
ToolBar1Buttons(2)Enabled bState
ToolBar1Buttons(3)Enabled bState
ToolBar1Buttons(4)Enabled bState
ToolBar1Buttons(5)Enabled bState
ToolBar1Buttons(6)Enabled bState
ToolBar1Buttons(7)Enabled Not bState
ToolBar1Buttons(8)Enabled Not bState
End Sub
(9) 工具栏toolbar1buttonclick事件添加响应事件
Private Sub ToolBar1_ButtonClick(ByVal sender As Object _
ByVal e As ToolBarButtonClickEventArgs) _
Handles ToolBar1ButtonClick
Select Case eButtonText
Case 首记录
'返回首记录
bmDataPosition 0
Case 记录
If bmDataPosition <> 0 Then
bmDataPosition 1
End If
Case 记录
If bmDataPosition <> bmDataCount Then
bmDataPosition + 1
End If
Case 尾记录
'返回尾记录
bmDataPosition bmDataCount
Case 新增
MedgdListEnabled False
SetTextBoxState(False)
SetToolBarState(False)
bAdd True
Clear()
Case 修改
MedgdListEnabled False
SetTextBoxState(False)
SetToolBarState(False)
bAdd False
Case 删
'弹出询问话框
Dim dlgResult As DialogResult _
MessageBoxShow(确认删数? _
删 MessageBoxButtonsOKCancel)
If dlgResult DialogResultOK Then
DeleteData()
End If
Case 保存
SetToolBarState(True)
SetTextBoxState(True)
If bAdd True Then
'新增数保存
SaveForAdd()
Else
'更新数保存
SaveForUpdate()
End If
MedgdListEnabled True
Case 取消
SetTextBoxState(True)
SetToolBarState(True)
MedgdListEnabled True
ResetDataGridData()
Case 退出
'关闭窗体
MeClose()
End Select
Try
MedgdListCurrentRowIndex bmDataPosition
Catch ex As Exception
End Try
End Sub
55 实现会计科目设置功
(1) 选择文件|添加新项命令添加新项话框模板列表框中选择继承窗体选项取名frmKeMuvb单击开钮弹出继承选项器话框中选择frmbase选项单击确定钮先创建窗体添加图39示控件
图39 frmKeMu 窗体
(2) 控件属性设置表40示
表40 frmKeMu窗体控件属性设置
控件类型
象名
属性
取值
Form
frmKeMu
Text
Frmbase
Groupbox
Grbright
Anchor
Topbottomleftright
Combobox
Cbbkind
Items
资产
负债
权益
成
损益
Combobox
Cbbkind
Dropdownstyle
Dropdown
Combobox
Cbbdirection
Items
方
贷方
Combobox
Cbbdirection
Dropdownstyle
Dropdown
Textbox
Txbcode
Text
Textbox
Txbname
Text
Textbox
Txbhelpcode
Text
(3) 工具栏中拖动sqldataadpter象窗体连接caiwubook数库添加科目表选择字段:科目代码科目名称助记符科目类余额方单击确定钮完成sqldataadapter象配置
(4) sqldataadapter象右击弹出快捷菜单中选择生成数集命令弹出生成数集话框中单击确定钮
(5) textbox控件combobox控件设置数源
(6) 重写frmkemu基类函数
Public Overrides Sub Prepare()
MeText 会计科目设置
End Sub
Public Overrides Sub LoadData()
Dim strFilter As String
If txbOneTextTrimLength 0 Then
If txbTwoTextTrimLength 0 Then
If txbThreeTextTrimLength 0 Then
strFilter
Else
strFilter where 科目类 like '
strFilter + txbThreeTextTrim + '
End If
Else
strFilter where 科目名称 like '
strFilter + txbTwoTextTrim + '
If txbThreeTextTrimLength <> 0 Then
strFilter + and 科目类 like '
strFilter + txbThreeTextTrim + '
End If
End If
Else
strFilter where 科目代码 like '
strFilter + txbOneTextTrim + '
If txbTwoTextTrimLength <> 0 Then
strFilter + and 科目名称 like '
strFilter + txbTwoTextTrim + '
If txbThreeTextTrimLength <> 0 Then
strFilter + and 科目类 like '
strFilter + txbThreeTextTrim + '
End If
Else
If txbThreeTextTrimLength <> 0 Then
strFilter + and 科目类 like '
strFilter + txbThreeTextTrim + '
End If
End If
End If
'清空DataSet11
DataSet11Clear()
SqlConnection1ConnectionString DataBasesConn
SqlDataAdapter1SelectCommandCommandText _
select * from 科目表 + strFilter
'根查询条件重新填充DataSet11
SqlDataAdapter1Fill(DataSet11)
dtData DataSet11Tables(科目表)
bmData MeBindingContext(DataSet11 科目表)
If bmDataCount <> 0 Then
bmDataPosition 0
End If
End Sub
Public Overrides Sub SetDataGrid()
LoadData()
'定义DataGrid表样式
Dim ts As New DataGridTableStyle
Dim aColumnTextColumn As DataGridTextBoxColumn
Dim numCols As Integer dtDataColumnsCount
Dim i As Integer
For i 0 To 1
aColumnTextColumn New DataGridTextBoxColumn
aColumnTextColumnMappingName _
dtDataColumns(i)ColumnName
aColumnTextColumnHeaderText _
dtDataColumns(i)ColumnName
aColumnTextColumnNullText
aColumnTextColumnReadOnly True
tsGridColumnStylesAdd(aColumnTextColumn)
Next
tsAlternatingBackColor ColorLightGray
tsAllowSorting False
tsMappingName dtDataTableName
dgdListTableStylesClear()
dgdListTableStylesAdd(ts)
Dim dv As DataView dtDataDefaultView
dvAllowNew False
dvAllowDelete False
'dvAllowEdit False
'设置数源
dgdListDataSource dtDataDefaultView
bmData MeBindingContext(DataSet11 科目表)
lblCountText 记录数 + dtDataRowsCountToString()
End Sub
Public Overrides Sub SetTextBoxState(ByVal bState As Boolean)
MetxbCodeReadOnly bState
MetxbHelpCodeReadOnly bState
MetxbNameReadOnly bState
MecbbDirectionEnabled Not bState
MecbbKindEnabled Not bState
End Sub
Public Overrides Sub Clear()
MetxbCodeText
MetxbHelpCodeText
MetxbNameText
End Sub
Public Overrides Sub SaveForUpdate()
Try
Dim row As Integer
row dgdListCurrentCellRowNumber
dgdListCurrentCell _
New DataGridCell((row + 1) Mod bmDataCount 0)
'判断否更新数
If MeDataSet11HasChanges True Then
SqlDataAdapter1Update(DataSet11)
End If
Catch ex As Exception
MessageBoxShow(数修改失败)
End Try
End Sub
Public Overrides Sub SaveForAdd()
Dim drData As DataRow DataSet11Tables(科目表)NewRow()
Try
drData(科目代码) txbCodeTextTrim
drData(科目名称) txbNameTextTrim
drData(助记码) txbHelpCodeTextTrim
drData(科目类) cbbKindTextTrim
drData(余额方) cbbDirectionTextTrim
Catch ex As Exception
MessageBoxShow(数格式正确)
Exit Sub
End Try
Try
DataSet11Tables(科目表)RowsAdd(drData)
If MeDataSet11HasChanges True Then
SqlDataAdapter1Update(DataSet11)
End If
Catch ex As Exception
MessageBoxShow(数添加成功)
End Try
End Sub
会计科目设置功已完成
56 实现帐户设置功
帐户设置功窗体需父窗体继承
(1) 新建窗体name属性改frmzhanghu添加图41示控件
图41 frmzhanghu窗体
(2) 控件属性设置表42示
图42 frmzhanghu窗体控件属性设置
控件类型
象名
属性
取值(说明)
From
Frmzhanghu
Text
帐户录入(期初数录入)
Toolbar
Toolbar1
Buttons
图41
Imagelist
Imagelist1
Images
图41
Groupbox
Grbsearch
Anchor
Topleftright
Button
Btnnew
Text
建立新账簿
Button
Btnstart
Text
启账簿
Button
Btntry
Text
试算衡
Datagird
Dgglist
Anchor
Topbuttonleftright
Datagrid
Dgdright
Anchor
Topbuttonright
(3) 工具箱中拖出sqldataadapter象窗体连接caiwubook数库添加账簿初始化表选择字段:科目代码科目名称余额方累计方累积贷方期初余额
(4) sqldataadapter象右击弹出快捷菜单中选择生成数集命令弹出生成数集话框中单击确定钮
(5) 工具箱中拖动sqldataadapter象窗体连接caiwubook数库添加系统参数表选择字段:编号参数名称取值
(6) sqldataadapter2象右击弹出快捷菜单中选择生成数集命令弹出生成数集话框中单击确定钮
(7) 窗体累frmzhanghu添加私变量
Private dtLeft As DataTable
Private dtRight As DataTable
(8) 窗体类frmzhanghu添加私函数
Private Sub SetLeftDataGrid()
MeSqlConnection1ConnectionString DataBasesConn
SqlDataAdapter1Fill(DataSet11)
dtLeft DataSet11Tables(帐簿初始化表)
Dim ts As New DataGridTableStyle
Dim aColumnTextColumn As DataGridTextBoxColumn
Dim numCols As Integer dtLeftColumnsCount
Dim i As Integer
For i 0 To numCols 1
aColumnTextColumn New DataGridTextBoxColumn
aColumnTextColumnMappingName _
dtLeftColumns(i)ColumnName
aColumnTextColumnHeaderText _
dtLeftColumns(i)ColumnName
aColumnTextColumnNullText
aColumnTextColumnWidth 60
aColumnTextColumnReadOnly True
If i > 2 Then
aColumnTextColumnReadOnly False
aColumnTextColumnHeaderText + (编辑)
aColumnTextColumnWidth 105
End If
tsGridColumnStylesAdd(aColumnTextColumn)
Next
tsAlternatingBackColor ColorLightGray
tsAllowSorting False
tsMappingName dtLeftTableName
dgdLeftTableStylesAdd(ts)
Dim dv As DataView dtLeftDefaultView
dvAllowNew False
dvAllowDelete False
'dvAllowEdit False
'设置数源
dgdLeftDataSource dtLeftDefaultView
End Sub
Private Sub SetRightDataGrid()
MeSqlConnection1ConnectionString DataBasesConn
SqlDataAdapter2Fill(DataSet11)
dtRight DataSet11Tables(系统参数表)
Dim ts As New DataGridTableStyle
Dim aColumnTextColumn As DataGridTextBoxColumn
Dim numCols As Integer dtRightColumnsCount
Dim i As Integer
For i 0 To numCols 1
aColumnTextColumn New DataGridTextBoxColumn
aColumnTextColumnMappingName _
dtRightColumns(i)ColumnName
aColumnTextColumnHeaderText _
dtRightColumns(i)ColumnName
aColumnTextColumnNullText
If i 0 Then
aColumnTextColumnWidth 30
Else
aColumnTextColumnWidth 60
End If
aColumnTextColumnReadOnly True
If i 2 Then
aColumnTextColumnReadOnly False
aColumnTextColumnHeaderText + (编辑)
aColumnTextColumnWidth 80
End If
tsGridColumnStylesAdd(aColumnTextColumn)
Next
tsAlternatingBackColor ColorLightGray
tsAllowSorting False
tsMappingName dtRightTableName
dgdRightTableStylesAdd(ts)
Dim dv As DataView dtRightDefaultView
dvAllowNew False
dvAllowDelete False
'dvAllowEdit False
'设置数源
dgdRightDataSource dtRightDefaultView
End Sub
(9) 窗体frmzhanghuload事件添加事件响应函数
Private Sub frmZhangHu_Load(ByVal sender As Object _
ByVal e As SystemEventArgs) Handles MyBaseLoad
SetLeftDataGrid()
SetRightDataGrid()
End Sub
(10) 工具栏toolbar1buttonclick事件响应函数
Private Sub ToolBar1_ButtonClick(ByVal sender As Object ByVal _
e As ToolBarButtonClickEventArgs) Handles ToolBar1ButtonClick
Dim row As Integer
row dgdLeftCurrentCellRowNumber
dgdLeftCurrentCell _
New DataGridCell((row + 1) _
Mod DataSet11Tables(帐簿初始化表)RowsCount 0)
row dgdRightCurrentCellRowNumber
dgdRightCurrentCell New DataGridCell((row + 1) _
Mod DataSet11Tables(系统参数表)RowsCount 0)
If DataSet11HasChanges True Then
Try
SqlDataAdapter1Update(DataSet11)
SqlDataAdapter2Update(DataSet11)
Catch ex As Exception
MessageBoxShow(更新数出错)
End Try
End If
End Sub
(11) 钮btnnewclick事件添加事件响应函数
Private Sub btnNew_Click(ByVal sender As SystemObject _
ByVal e As SystemEventArgs) Handles btnNewClick
Dim dlgResult As DialogResult _
MessageBoxShow(否清原账簿信息初始化新帐簿? _
删 MessageBoxButtonsOKCancel)
If dlgResult DialogResultOK Then
Dim db As DataBase New DataBase
dbRunDelOrInsSQL(exec sf_初始化帐户)
dbDispose()
End If
SqlDataAdapter1Fill(DataSet11)
dtLeft DataSet11Tables(帐簿初始化表)
dgdLeftDataSource dtLeft
End Sub
(12) 钮btnstartclick事件添事件响应函数
Private Sub btnStart_Click(ByVal sender As SystemObject _
ByVal e As SystemEventArgs) Handles btnStartClick
Dim dlgPingHeng As frmPingHeng New frmPingHeng
'If dlgPingHengCalPingHeng(0) <> True Then
' MessageBoxShow(初始数试算衡请检查数 _
' 确认 MessageBoxButtonsOK)
' Return
'End If
Dim strMsg As String 试算结果衡
strMsg + 启新帐簿删历史数否继续
Dim dlgResult As DialogResult _
MessageBoxShow(strMsg 确认 MessageBoxButtonsOKCancel)
'调sf_初始化帐户存储程建立新帐簿
If dlgResult DialogResultOK Then
Dim db As DataBase New DataBase
dbRunDelOrInsSQL(exec sf_启帐户)
strMsg 新帐簿成功启
MessageBoxShow(strMsg 确认 MessageBoxButtonsOK)
dlgPingHengDispose()
End If
End Sub
(13) 单击试算衡钮时需弹出新窗体显示试算结果新建窗体命名frmpingheng添加图43示控件
图43 frmpingheng窗体
(14) 控件属性设置表44示
图44 frmpingheng窗体控件属性设置
控制类型
象名
属性
取值(说明)
From
Frmpingheng
Text
试算衡
Datagrid
Dgdtop
Anchor
Topbottomleftright
Datagrid
Dgdbottom
Dock
Botton
(15) 窗体类frmpingheng添加私函数
'Private Sub SetTopDataGrid()
' Dim db As DataBase New DataBase
' Dim strSQL As String select 科目代码科目名称(case
' strSQL + when 余额方'方' then 期初余额 else 0 end
' strSQL + 累计方) as 期初方(case when 余额方'贷方'
' strSQL + then 期初余额 else 0 end 累计贷方) as 期初贷方
' strSQL + 累计方 as 期发生方累计贷方 as 期发生贷方
' strSQL + case when 余额方'方' then 期初余额 else 0 end as
' strSQL + 期末方case when 余额方'贷方' then 期初余额 else 0
' strSQL + end as 期末贷方 from 帐簿初始化表 where 累计方<>0 or
' strSQL + 累计贷方<>0 or 期初余额<>0
' dtTop dbRunSelectSQL(strSQL)Table
' Dim ts As New DataGridTableStyle
' Dim aColumnTextColumn As DataGridTextBoxColumn
' Dim numCols As Integer dtTopColumnsCount
' Dim i As Integer
' For i 0 To numCols 1
' aColumnTextColumn New DataGridTextBoxColumn
' aColumnTextColumnMappingName _
' dtTopColumns(i)ColumnName
' aColumnTextColumnHeaderText _
' dtTopColumns(i)ColumnName
' aColumnTextColumnNullText
' aColumnTextColumnWidth 60
' aColumnTextColumnReadOnly True
' tsGridColumnStylesAdd(aColumnTextColumn)
' Next
' tsAlternatingBackColor ColorLightGray
' tsAllowSorting False
' tsMappingName dtTopTableName
' dgdTopTableStylesAdd(ts)
' Dim dv As DataView dtTopDefaultView
' dvAllowNew False
' dvAllowDelete False
' dvAllowEdit False
' '设置数源
' dgdTopDataSource dtTopDefaultView
'End Sub
'Private Sub CreateDataTalbe()
' '创建数表
' dtBottom New DataTable(结果)
' '添加列
' With dtBottomColumns
' Add(否衡 TypeGetType(SystemString))
' Add(期初方合计 TypeGetType(SystemString))
' Add(期初贷方合计 TypeGetType(SystemString))
' Add(期方合计 TypeGetType(SystemString))
' Add(期贷方合计 TypeGetType(SystemString))
' Add(期末方合计 TypeGetType(SystemString))
' Add(期末贷方合计 TypeGetType(SystemString))
' End With
'End Sub
'' 计算否衡显示出计算结果
'' nStatus 0 初始化帐簿时计算
'' 1 正式证计算
'Public Function CalPingHeng(ByVal iStatus As Integer) As Boolean
' Dim bResult As Boolean
' ' 根状态计算衡情况
' Dim strSQL As String
' ' 初始化帐簿试算衡需根初始化信息反算期初
' Dim db As DataBase New DataBase
' If iStatus 0 Then
' strSQL select 科目代码 科目名称
' strSQL + (case when 余额方'方' then 期初余额
' strSQL + else 0 end 累计方) as 期初方
' strSQL + (case when 余额方'贷方' then 期初余额
' strSQL + else 0 end 累计贷方) as 期初贷方
' strSQL + 累计方 as 期发生方累计贷方 as 期发生贷方
' strSQL + case when 余额方'方' then 期初余额
' strSQL + else 0 end as 期末方
' strSQL + case when 余额方'贷方' then 期初余额
' strSQL + else 0 end as 期末贷方
' strSQL + from 帐簿初始化表
' strSQL + where 累计方<>0 or 累计贷方<>0 or 期初余额<>0
' dgdTopDataSource dbRunSelectSQL(strSQL)
' ' 计算合计金额判断否衡
' strSQL select
' strSQL + sum(case when 余额方'方'
' strSQL + then 期初余额 else 0 end累计方) as 期初方合计
' strSQL + sum(case when 余额方'贷方'
' strSQL + then 期初余额 else 0 end累计贷方) as 期初贷方合计
' strSQL + sum(累计方) as 期方合计sum(累计贷方)
' strSQL + as 期贷方合计
' strSQL + sum(case when 余额方'方' then
' strSQL + 期初余额 else 0 end) as 期末方合计
' strSQL + sum(case when 余额方'贷方' then
' strSQL + 期初余额 else 0 end) as 期末贷方合计
' strSQL + from 帐簿初始化表
' strSQL + where 累计方<>0 or 累计贷方<>0 or 期初余额<>0
' Dim dv As DataView dbRunSelectSQL(strSQL)
' bResult AddToDataTable(dv)
' Else
' strSQL select a科目代码 b科目名称
' strSQL + (case when a余额方'方'
' strSQL + then 期初余额 else 0 end ) as 期初方
' strSQL + (case when a余额方'贷方'
' strSQL + then 期初余额 else 0 end) as 期初贷方
' strSQL + 期方合计 as 期发生方 期贷方合计
' strSQL + as 期发生贷方
' strSQL + case when a余额方'方' then 余额 else 0 end
' strSQL + as 期末方
' strSQL + case when a余额方'贷方' then 余额 else 0 end
' strSQL + as 期末贷方
' strSQL + from 期汇总账簿 as a 科目表 as b
' strSQL + where a科目代码 b科目代码 and (期方合计<> 0
' strSQL + or 期贷方合计<>0 or 期初余额<>0 or 余额<>0)
' Dim dvTemp As DataView dbRunSelectSQL(strSQL)
' dvTempAllowEdit False
' dvTempAllowDelete False
' dvTempAllowNew False
' dgdTopDataSource dvTemp
' strSQL select
' strSQL + sum(case when 余额方'方' then 期初余额 else 0 end)
' strSQL + as 期初方合计
' strSQL + sum(case when 余额方'贷方' then 期初余额 else 0 end)
' strSQL + as 期初贷方合计
' strSQL + sum(期方合计) as 期方合计sum(期贷方合计)
' strSQL + as 期贷方合计
' strSQL + sum(case when 余额方'方' then 余额 else 0 end)
' strSQL + as 期末方合计
' strSQL + sum(case when 余额方'贷方' then 余额 else 0 end)
' strSQL + as 期末贷方合计
' strSQL + from 期汇总账簿
' strSQL + where 期方合计<> 0 or 期贷方合计<>0 or
' strSQL + 期初余额<>0 or 余额<>0
' Dim dv As DataView dbRunSelectSQL(strSQL)
' bResult AddToDataTable(dv)
' MedgdBottomDataSource dtBottom
' End If
' dbDispose()
' Return bResult
'End Function
'Private Sub SetBottomDataGrid()
' Dim ts As New DataGridTableStyle
' Dim aColumnTextColumn As DataGridTextBoxColumn
' Dim numCols As Integer dtBottomColumnsCount
' Dim i As Integer
' For i 0 To numCols 1
' aColumnTextColumn New DataGridTextBoxColumn
' aColumnTextColumnMappingName _
' dtBottomColumns(i)ColumnName
' aColumnTextColumnHeaderText _
' dtBottomColumns(i)ColumnName
' aColumnTextColumnNullText
' aColumnTextColumnWidth 80
' aColumnTextColumnReadOnly True
' tsGridColumnStylesAdd(aColumnTextColumn)
' Next
' tsAlternatingBackColor ColorLightGray
' tsAllowSorting False
' tsMappingName dtBottomTableName
' dgdBottomTableStylesAdd(ts)
' Dim dv As DataView dtBottomDefaultView
' dvAllowNew False
' dvAllowDelete False
' dvAllowEdit False
' '设置数源
' dgdBottomDataSource dtBottomDefaultView
'End Sub
'Private Function AddToDataTable(ByRef dv As DataView) As Boolean
' '判断dtBottom否初始化
' If dtBottom Is Nothing Then
' CreateDataTalbe()
' End If
' Dim bResult As Boolean
' '清空数表容
' dtBottomRowsClear()
' Dim dr As DataRow dtBottomNewRow()
' '获取行数
' Try
' dr(期初方合计) SetText(dvItem(0)(期初方合计))
' dr(期初贷方合计) SetText(dvItem(0)(期初贷方合计))
' dr(期方合计) SetText(dvItem(0)(期方合计))
' dr(期贷方合计) SetText(dvItem(0)(期贷方合计))
' dr(期末方合计) SetText(dvItem(0)(期末方合计))
' dr(期末贷方合计) SetText(dvItem(0)(期末贷方合计))
' Catch ex As Exception
' MessageBoxShow(exToString)
' End Try
' dr(期初方合计) SetText(dvItem(0)(期初方合计))
' '判断否衡
' If SetText(dvItem(0)(期初方合计)) _
' <> SetText(dvItem(0)(期初贷方合计)) Or _
' SetText(dvItem(0)(期方合计)) _
' <> SetText(dvItem(0)(期贷方合计)) Or _
' SetText(dvItem(0)(期末方合计)) _
' <> SetText(dvItem(0)(期末贷方合计)) Then
' dr(否衡) 衡
' bResult False
' Else
' dr(否衡) 衡
' bResult True
' End If
' dtBottomRowsAdd(dr)
' Return bResult
'End Function
'Private Function SetText(ByVal obj As Object) As String
' If obj Is Nothing Then
' Return
' Else
' Return objToString()
' End If
'End Function
End Class
(16) 钮btntryclick事件添加事件响应函数
Public sub btntry_click(byual sender as systemobject_byval e as systemeventargs) handles
Dim dlgpingheng as frmpinghengnew frmpingheng
Dlgpinghengshowdialog()
Dlgpinghengdispose()
End sub
帐户设置功已完成
57 实现证输入功
(1) 选择文件|添加新项命令添加新项话框模板列表框中选择继承窗体选项取名frmshuruvb单击开钮弹出继承选择器话框中选择frmbase选项单击确定钮新建窗体图45示控件
图45 终frmshuru窗体
(2) 控件属性设置表46示
表46 frmshuru窗体控件属性设置
控件类型
象名
属性
取值(说明)
From
Frmshuru
Text
会计证输入
Textbox
Txbcode
Readonly
True
Textbox
Txbdate
Text
Textbox
Txbpeople
Text
Textbox
Txbperiod
Readonly
True
Textbox
Txbperiod
Readonly
True
Textbox
Txbstate
Readonly
True
Textbox
Txbdebittotal
Readonly
True
Textbox
Txblendertoyal
Readonly
True
Groupbox
Grabove
Anchor
Topleftright
Groupbox
Grabove
Text
证表
Groupbox
Grbottom
Anchbor
Topbottomleftright
Groupbox
Grbottom
Text
分录表
Textbox
Txbsummary
Text
Textbox
Txbsubjectcode
Text
Textbox
Txbsujectcode
Text
Textbox
Txbdebit
Text
0
Textbox
Txblender
Text
0
Button
Btnadd
Text
添加
Button
Btnsave
Text
修改
Button
Btndal
Text
删
Datagrid
Dgddetail
Anchor
Topbottomleftright
(3) 工具箱中拖动sqldataadapter象窗体连接caiwubook数库添加证表选择字段:证编号会计期间日期证字号账状态方合计贷方合计
(4) sqldataadapter象右击弹出快捷菜单中选择生成数集菜单命令弹出生成数集话框中单击确定钮
(5) textbox控件设置数源
(6) 窗体类frmshuru添加私变量
Private bmDetail As BindingManagerBase
Private dtDetail As DataTable
Private iCurrentLine As Integer 0
(7) 窗体类frmshuru添加私变量
Private Sub SetDetailDataGrid(ByVal iCount As Integer)
' LoadDataForDetail()
' '定义DataGrid表样式
' Dim ts As New DataGridTableStyle
' Dim aColumnTextColumn As DataGridTextBoxColumn
' Dim numCols As Integer dtDetailColumnsCount
' Dim i As Integer
' For i 2 To numCols 1
' aColumnTextColumn New DataGridTextBoxColumn
' aColumnTextColumnMappingName _
' dtDetailColumns(i)ColumnName
' aColumnTextColumnHeaderText _
' dtDetailColumns(i)ColumnName
' aColumnTextColumnNullText
' tsGridColumnStylesAdd(aColumnTextColumn)
' Next
' tsAlternatingBackColor ColorLightGray
' tsAllowSorting False
' tsMappingName dtDetailTableName
' dgdDetailTableStylesAdd(ts)
' Dim dv As DataView dtDetailDefaultView
' dvAllowEdit False
' dvAllowNew False
' dvAllowDelete False
' '设置数源
' dgdDetailDataSource dtDetail
' SetTextBoxData()
' End Sub
' Private Sub dgdDetail_CurrentCellChanged(ByVal sender _
' As Object ByVal e As EventArgs) _
' Handles dgdDetailCurrentCellChanged
' If iCurrentLine <> dgdDetailCurrentCellRowNumber Then
' iCurrentLine dgdDetailCurrentCellRowNumber
' SetTextBoxData()
' End If
' End Sub
' Private Sub SetTextBoxData()
' Try
' If dtDetailRows(iCurrentLine)(科目代码) Is Nothing Then
' Return
' Else
' txbSubjectCodeText _
' dtDetailRows(iCurrentLine)(科目代码)
' txbSubjectNameText _
' dtDetailRows(iCurrentLine)(科目名称)
' txbSummaryText dtDetailRows(iCurrentLine)(摘)
' txbDebitText dtDetailRows(iCurrentLine)(方)
' txbLenderText dtDetailRows(iCurrentLine)(贷方)
' End If
' Catch ex As Exception
' End Try
' End Sub
' Private Sub txbSubjectCode_TextChanged(ByVal sender As Object ByVal e As SystemEventArgs) Handles txbSubjectCodeTextChanged
' Dim strCode As String txbSubjectCodeTextTrim
' If strCode Then
' Return
' End If
' Dim strSQL As String select 科目名称 from 科目表 where 科目代码 + strCode
' Dim db As DataBase New DataBase
' Dim dv As DataView dbRunSelectSQL(strSQL)
' If dvTableRowsCount 0 Then
' MetxbSubjectNameText
' Return
' End If
' MetxbSubjectNameText dv(0)(0)ToString()Trim()
' End Sub
' Private Sub btnAdd_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles btnAddClick
' If ValidateData() False Then
' MessageBoxShow(数格式确)
' Return
' End If
' Try
' Dim dr As DataRow dtDetailNewRow
' dr(摘) txbSummaryTextTrim
' dr(科目代码) txbSubjectCodeTextTrim
' dr(科目名称) txbSubjectNameTextTrim
' dr(方) txbDebitTextTrim
' dr(贷方) txbLenderTextTrim
' dtDetailRowsAdd(dr)
' dgdDetailDataSource dtDetail
' dgdDetailCurrentRowIndex dtDetailRowsCount 1
' UpdateMoney()
' Catch ex As Exception
' MessageBoxShow(数格式正确)
' End Try
' ClearTextBox()
' End Sub
' Private Sub btnSave_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles btnSaveClick
' If ValidateData() False Then
' MessageBoxShow(数格式确)
' Return
' End If
' If dgdDetailCurrentRowIndex 1 Then
' Return
' End If
' Try
' Dim iRow As Integer dgdDetailCurrentRowIndex
' dtDetailRows(iRow)(摘) txbSummaryTextTrim
' dtDetailRows(iRow)(科目代码) txbSubjectCodeTextTrim
' dtDetailRows(iRow)(科目名称) txbSubjectNameTextTrim
' dtDetailRows(iRow)(方) txbDebitTextTrim
' dtDetailRows(iRow)(贷方) txbLenderTextTrim
' UpdateMoney()
' Catch ex As Exception
' MessageBoxShow(数格式正确)
' End Try
' ClearTextBox()
' End Sub
' Private Sub btnDel_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles btnDelClick
' Try
' '获DataGrid前选中行号
' Dim iRow dgdDetailCurrentRowIndex
' '弹出话框户确认删记录
' '果户确认删记录
' If MessageBoxShow(确认删条记录? Confirm MessageBoxButtonsYesNo) DialogResultYes Then
' '商品清单表删前选中记录()
' ClearTextBox()
' dtDetailRowsRemoveAt(iRow)
' Else
' Exit Sub
' End If
' Catch ex As Exception
' MessageBoxShow(删数出错)
' End Try
' UpdateMoney()
' ClearTextBox()
' End Sub
' Private Function ValidateData() As Boolean
' If txbSubjectCodeTextTrim Or _
' txbSubjectNameTextTrim or _
' (txbDebitTextTrim 0 And txbLenderTextTrim 0) Then
' Return False
' End If
' Return TRUE
' End Function
' Private Sub ClearTextBox()
' txbSummaryText
' txbSubjectCodeText
' txbSubjectNameText
' txbDebitText 0
' txbLenderText 0
' End Sub
' Private Function CalMoney() As Single()
' Dim Result(2) As Single
' Result(0) 0
' Result(1) 0
' Dim i As Integer
' For i 0 To dtDetailRowsCount 1
' Result(0) + CSng(dtDetailRows(i)(方))
' Result(1) + CSng(dtDetailRows(i)(贷方))
' Next
' Return Result
' End Function
' Private Sub UpdateMoney()
' Dim Result() As Single CalMoney()
' MetxbDebitTotalText Result(0)ToString(f)
' MetxbLenderTotalText Result(1)ToString(f)
' End Sub
' Private Sub InsertDetail(ByVal code As String)
' If MetxbLenderTotalTextTrim <> MetxbDebitTotalTextTrim Then
' MessageBoxShow(贷双方衡请检查)
' Return
' End If
' If dtDetailRowsCount < 0 Then
' Return
' End If
' '首先删前证编号关联分录表记录
' Dim db As DataBase New DataBase
' Dim strSQL As String delete from 分录表 where 证编号'
' strSQL + code + '
' dbRunDelOrInsSQL(strSQL)
' strSQL
' For Each dr As DataRow In dtDetailRows
' strSQL + insert into 分录表(证编号摘科目代码
' strSQL + 方 贷方) values(' + code + ''
' strSQL + dr(摘)ToString()Trim + ''
' strSQL + dr(科目代码)ToString()Trim + '
' strSQL + dr(方)ToString()Trim +
' strSQL + dr(贷方)ToString()Trim + )
' Next
' dbRunDelOrInsSQL(strSQL)
' dbDispose()
' End Sub
' Private Sub DeleteDetail()
' Dim db As DataBase New DataBase
' Dim strSQL As String delete from 分录表 where 证编号'
' strSQL + txbCodeTextTrim + '
' dbRunDelOrInsSQL(strSQL)
' dbDispose()
' End Sub
(8) 窗体类frmshuru添加私函数
' Public Overrides Sub Prepare()
' MeText 会计输入证
' MeLabel1Text 证编号
' MeLabel2Text 会计期间
' MeLabel3Text 日期
' End Sub
' Public Overrides Sub LoadData()
' Dim strFilter As String
' If txbOneTextTrimLength 0 Then
' If txbTwoTextTrimLength 0 Then
' If txbThreeTextTrimLength 0 Then
' strFilter
' Else
' strFilter where 日期 like '
' strFilter + txbThreeTextTrim + '
' End If
' Else
' strFilter where 会计期间 like ' + txbTwoTextTrim + '
' If txbThreeTextTrimLength <> 0 Then
' strFilter + and 日期 like '
' strFilter + txbThreeTextTrim + '
' End If
' End If
' Else
' strFilter where 证编号 like ' + txbOneTextTrim + '
' If txbTwoTextTrimLength <> 0 Then
' strFilter + and 会计期间 like ' + txbTwoTextTrim + '
' If txbThreeTextTrimLength <> 0 Then
' strFilter + and 日期 like '
' strFilter + txbThreeTextTrim + '
' End If
' Else
' If txbThreeTextTrimLength <> 0 Then
' strFilter + and 日期 like '
' strFilter + txbThreeTextTrim + '
' End If
' End If
' End If
' '清空DataSet11
' DataSet11Clear()
' SqlConnection1ConnectionString DataBasesConn
' SqlDataAdapter1SelectCommandCommandText _
' select * from 证表 + strFilter
' '根查询条件重新填充DataSet11
' SqlDataAdapter1Fill(DataSet11)
' dtData DataSet11Tables(证表)
' bmData MeBindingContext(DataSet11 证表)
' End Sub
' Public Overrides Sub SetDataGrid()
' LoadData()
' '定义DataGrid表样式
' Dim ts As New DataGridTableStyle
' Dim aColumnTextColumn As DataGridTextBoxColumn
' Dim numCols As Integer dtDataColumnsCount
' Dim i As Integer
' For i 0 To 2
' aColumnTextColumn New DataGridTextBoxColumn
' aColumnTextColumnMappingName _
' dtDataColumns(i)ColumnName
' aColumnTextColumnHeaderText _
' dtDataColumns(i)ColumnName
' aColumnTextColumnNullText
' aColumnTextColumnReadOnly True
' aColumnTextColumnWidth 55
' If i 2 Then
' aColumnTextColumnFormat yyyyMd
' End If
' tsGridColumnStylesAdd(aColumnTextColumn)
' Next
' tsAlternatingBackColor ColorLightGray
' tsAllowSorting False
' tsMappingName dtDataTableName
' dgdListTableStylesAdd(ts)
' Dim dv As DataView dtDataDefaultView
' dvAllowNew False
' dvAllowDelete False
' 'dvAllowEdit False
' '设置数源
' dgdListDataSource dtData
' 'dgdListDataMember 证表
' bmData MeBindingContext(DataSet11 证表)
' lblCountText 记录数 + dtDataRowsCountToString()
' MedgdListAllowNavigation False
' SetDetailDataGrid(dtDataRowsCount)
' End Sub
' Public Overrides Sub SetTextBoxState(ByVal bState As Boolean)
' MegrbAboveEnabled Not bState
' MegrbBottomEnabled Not bState
' End Sub
' Public Overrides Sub LoadDataForDetail()
' Dim strSQL As String SELECT 证编号 编号 摘 a科目代码 科目名称方 贷方 FROM 分录表 as a 科目表 as b where a科目代码b科目代码
' If dtDataRowsCount <> 0 Then
' strSQL + and 证编号 + dtDataRows(bmDataPosition)(证编号)
' End If
' Dim db As DataBase New DataBase
' dtDetail dbRunSelectSQL(strSQL)Table
' Dim dv As DataView dtDetailDefaultView
' dvAllowEdit False
' dvAllowNew False
' dvAllowDelete False
' dgdDetailDataSource dv
' End Sub
' Public Overrides Sub SaveForUpdate()
' Try
' InsertDetail(MetxbCodeText)
' Dim row As Integer
' row dgdListCurrentCellRowNumber
' dgdListCurrentCell _
' New DataGridCell((row + 1) Mod bmDataCount 0)
' '判断否更新数
' If MeDataSet11HasChanges True Then
' SqlDataAdapter1Update(DataSet11)
' End If
' Catch ex As Exception
' MessageBoxShow(数修改失败)
' End Try
' End Sub
' Public Overrides Sub Clear()
' ' 计算证编号(Primary key)
' Dim strID strID1 strT strSQL As String
' strID strID1
' strSQL select max(证编号) as 编号 from 证表历史
' Dim db As DataBase New DataBase
' Dim dv As DataView
' dv dbRunSelectSQL(strSQL)
' If dvItem(0)(0)GetType()ToString() SystemDBNull Then
' strID 000001
' Else
' strT 000000
' strID (CInt(dv(0)(0)) + 1)ToString
' strID strTSubstring(0 strTLength strIDLength) + strID
' End If
' strSQL select max(证编号) as 编号 from 证表
' dv dbRunSelectSQL(strSQL)
' If dvItem(0)(0)GetType()ToString() SystemDBNull Then
' strID1 000001
' Else
' strT 000000
' strID1 (CInt(dv(0)(0)) + 1)ToString
' strID1 strTSubstring(0 strTLength strID1Length) + strID1
' End If
' If strID < strID1 Then
' strID strID1
' End If
' txbCodeText strID
' Dim dvTemp As DataView dbRunSelectSQL(select 取值 from 系统参数表 where 参数名称 '前会计期间')
' txbPeriodText dvTemp(0)(0)ToString()Trim
' txbStateText 未
' txbDebitTotalText 0
' txbLenderTotalText 0
' txbDateText NowDateToString(yyyyMd)
' dtDetailRowsClear()
' ClearTextBox()
' cbbZiHaoText
' dbDispose()
' End Sub
' Public Overrides Sub ResetDataGridData()
' If bmDataPosition <> 1 Then
' txbCodeText dtDataRows(bmDataPosition)(证编号)
' End If
' End Sub
' Public Overrides Sub SaveForAdd()
' Dim dr As DataRow DataSet11Tables(证表)NewRow()
' Try
' dr(证编号) txbCodeTextTrim
' dr(证字号) cbbZiHaoTextTrim
' dr(日期) txbDateTextTrim
' dr(会计期间) txbPeriodTextTrim
' dr(账状态) txbStateTextTrim
' dr(方合计) txbDebitTotalTextTrim
' dr(贷方合计) txbLenderTotalTextTrim
' If txbDebitTotalTextTrim <> txbLenderTotalTextTrim Then
' MessageBoxShow(贷双方衡请检查)
' Exit Sub
' End If
' Catch ex As Exception
' MessageBoxShow(数格式正确)
' Exit Sub
' End Try
' Try
' DataSet11Tables(证表)RowsAdd(dr)
' If MeDataSet11HasChanges True Then
' SqlDataAdapter1Update(DataSet11)
' End If
' InsertDetail(dr(证编号)ToString())
' Catch ex As Exception
' MessageBoxShow(数添加失败)
' End Try
' End Sub
' Public Overrides Sub DeleteData()
' Try
' '删前行数
' DeleteDetail()
' MedgdDetailDataSource Nothing
' DataSet11Tables(证表) _
' Rows(bmDataPosition)Delete()
' If MeDataSet11HasChanges True Then
' '更新DataSet11
' SqlDataAdapter1Update(DataSet11)
' End If
' Catch ex As Exception
' MessageBoxShow(数删失败)
' End Try
58 实现总分类账查询功
(1) 新建窗体name属性改frmzongfen添加图47示控件
图47 frmzongfen窗体
(2) 控件属性设置图48示
表48 frmzongfen窗体控件属性设置
控件类型
象名
属性
取值(说明)
Form
Frmzongfen
Text
总分类账查询
Groupbox
Grbsearch
Anchor
Topleft
Imagelist
Imagelist1
Images
Toolbar
Toolbar1
Imagelist
Imagelist1
Label
Lblcount
Text
Datagrid
Dgdlist
Anchor
Topbottomleftright
Textbox
Txbone
Text
Button
Btnsearch
Text
Checkbox
Cbbcheck
Text
发生金额显示
(3) 总分类帐查询部分功前面介绍功相似frmzongfen类添加私函数loaddata
Private Sub LoadData()
Dim strFilter As String
If MetxbOneTextTrimLength 0 Then
If MecbbCheckChecked True Then
strFilter where 期方合计 <>0 or 期贷方合计<>0
End If
Else
strFilter where 科目代码 + MetxbOneTextTrim
If MecbbCheckChecked True Then
strFilter + and (期方合计 <>0 or 期贷方合计<>0)
End If
End If
'清空DataSet11
DataSet11Clear()
SqlConnection1ConnectionString DataBasesConn
SqlDataAdapter1SelectCommandCommandText _
select * from 期汇总账簿 + strFilter
'根查询条件重新填充DataSet11
SqlDataAdapter1Fill(DataSet11)
dtData DataSet11Tables(期汇总账簿)
bmData MeBindingContext(DataSet11 期汇总账簿)
lblCountText 记录数 + dtDataRowsCountToString()
End Sub
59 实现明细帐查询功
建立总分类帐查询查询科目汇总信息明细账查询查询科目前会计期间发生笔业务余额
(1) 新建窗体name属性改frmmingxi添加图49示控件
图49 frmmingxi窗体
(2) 控件属性设置表50示
表50 frmmingxi窗体控件属性设置
控件类型
象名
属性
取值(说明)
Form
Frmmingxi
Text
明细账查询
Groupbox
Grbsearch
Anchor
Topleft
Imagelist
Imagelist1
Images
Toolbar
Toolbar1
Imagelist
Imagelist1
Label
Lblcount
Text
Label
Lblcode
Text
Datagrid
Dgdlist
Anchor
Topbottomleftright
Textbox
Txbone
Text
Button
Btnsearch
Text
明细帐查询功总分类查询功相似
510 实现试算衡表功
试算衡表菜单响应函数新建该窗体实例显示出
Public sub mnpingheng_click(byual sender as systemobject_byval e as systemeventargs) handles mnpinghengClick
If getinstancestate(frmpingheng) then
Exit sub
Dim childfrm as frmpinghengnew frmpingheng
ChildfrmMdiparentme
Childfrmshowdialog()
Childfrmcalpingheng(1)
End sub
511 现期末结账功
期末结账功程序中调sf_期末结账存储程完成程序窗体期末结账菜单响应函数中添加相应处理代码完成期末结账功具体代码
Private Sub mnQimo_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles mnQimoClick
'期末结帐
Dim dlgResult As DialogResult _
MessageBoxShow(结帐进入会计期间否结帐 _
确定 MessageBoxButtonsYesNo)
If dlgResult <> DialogResultYes Then
Return
End If
'Dim db As DataBase New DataBase
'Try
' dbRunDelOrInsSQL(begin tran exec sf_期末结帐)
'Catch ex As Exception
' MessageBoxShow(期末结帐失败)
' dbRunDelOrInsSQL(rollback)
' Return
'End Try
'dbRunDelOrInsSQL(commit)
MessageBoxShow(结帐成功)
End Sub
512 实现资产负债表报表输入功
(1) 新建窗体name属性改frmreport窗体面添加crystalreportviewer控件(图51终完成窗体)
图51 终完成印窗体
(2)工具栏中拖动sqldataadapter象窗体连接mrpbook数库添加资产负债表选择字段单击确定钮完成sqldataadapter象配置
(3)sqldataadapter象右击弹出快捷菜单中选择生成数集菜单命令弹出生成数集话框中单击确定钮
(4)类frmreport添加变量
Private iperiod as into6
(5)类frmreport添加公函数
Public Sub New(ByVal period As Int16)
MeNew()
iPeriod period
End Sub
(6)类load事件添加响应函数
Private Sub frmReport_Load(ByVal sender As Object _
ByVal e As SystemEventArgs) Handles MyBaseLoad
Try
SqlConnection1ConnectionString DataBasesConn
SqlDataAdapter1SelectCommandCommandText _
select * from 资产负债表 where 会计期间 + iPeriodToString()
MeSqlDataAdapter1Fill(MeDataSet11)
Dim obj As ReportDocument New ReportDocument
'obj加载Crystal Report路径设置
objLoad(Reportrpt)
'设置报表数源
objSetDataSource(MeDataSet11)
MeCrystalReportViewer1ReportSource obj
Catch ex As Exception
MessageBoxShow(exToString)
End Try
End Sub
(7) 添加菜单响应函数
Private Sub mnFuzhai_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles mnFuzhaiClick
If GetInstanceState(frmReport) Then
Exit Sub
End If
Dim message title defaultValue As String
Dim myValue As Object
message 请输入统计会计区间
title 输入 ' Set title
' 输入统计会计区间
'Dim db As DataBase New DataBase
'Dim dv As DataView dbRunSelectSQL(select 取值 from 系统参数表 where 参数名称 '前会计期间')
'defaultValue (CInt(dv(0)(0)ToString()Trim) 1)ToString
'myValue InputBox(message title defaultValue)
'Dim strTemp As String
'Try
' strTemp CInt(myValueToStringTrim)
'Catch ex As Exception
' MessageBoxShow(请输入合法会计区间)
' Return
'End Try
'计算
'dbRunDelOrInsSQL(exec sf_计算资产负债表 + strTemp)
'dbDispose()
'显示
'Dim childFrm As frmReport New frmReport(CInt(myValueToStringTrim))
'childFrmMdiParent Me
'childFrmShow()
End Sub
513 编译运行系统
完成整系统制作选择生成|生成解决方案菜单命令编译运行程序
6 系统发布
系统设计完成需包发布应制作成安装程序制作安装程序工具般Visual BasicNET开发应系统Visual BasicNET2003带功进行包Install Shield完成系统安装查询
7 系统扩展
财务理系统作独立系统运行应系统结合起实现数享进销存系统中进货销售应收应付款等会计分录动生成证图52示
分销理系统
销售出库单
采购入库单
库存核算
库存理
销售理
采购系统
销售发票
材料库
采购发票
入库单
出库单
应收账款
总账系统
应付账款
动生成证
动生成证
财务系统
票理
固定资产理
费理
成核算
费
图52 财务理系统系统结合
8 结
掌握知识技巧
l 财务理系统需求
l 利Visual Baisic NET进行数库编程种方法
l Visual Baisic NET类继承概念重载父类函数技巧
l 利类继承封装应功编写方法
l 利Visual Baisic NET编写财务理系统
l 财务理系统扩展
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档