第 6章 小型财务软件
本章介绍一个 小型财务软件, 可用于单位或个人财务收
支管理 。 其主要 特点,
(1)使用 Access 2002数据库, 便于维护管理, 可设置密
码;
(2)收支类型可随时定义和修改, 输入或修改基本收支
数据时, 可从弹出菜单中直接选取收支类型, 提高效率;
(3)以表格和饼图两种形式输出统计信息 。
本章涉及的主要技术包括:下拉列表项的自动添加, 下拉数据窗口的使用, 数据颜色控制,, Set Carry on”功
能的实现, 汇总信息的表格和图形显示等 。
6.1 系统功能和数据库设计
6.2 数据维护和查询
6.3 统计表
6.4 统计图
6.5 发布和使用
? 6.1.1 系统功能与主菜单
? 6.1.2 多文档界面框架窗口与应用程序对象代码
? 6.1.3 数据库与表
返回
6.1.1 系统功能与主菜单
? 本系统用于单位或个人财务收支管理 。 主要 功
能 包括,收支类型定义, 基本收支数据输入或
修改, 按年度和收支类型制作 统计表, 统计图 。
? 建立 目标 jtsz.pbt,对象库 xxcw.pbl和 应用程
序对象 jtsz。
? 下面根据功能要求, 设计一个如图 6.1所示的
系统菜单 m_main,并对各项进行编码 。
返回
6.1.2 多文档界面框架窗口与应用程
序对象代码
? 建立 一个 MDI框架窗口, 取名为 w_main,。
? 打开 应用程序对象 jtsz,对它的 open事件编写
代码,
返回
6.1.3 数据库与表
? 系统采用 Access 2002数据库。在 Access
2002中,建立一个数据库文件 xxcw.mdb,
在里面 1定义 jtsz和 dic_szlx两个 表 。
? 其中,jtsz用来存放收支基本信息,
dic_szlx存放收支类型定义。
结构如下:
返回
表 6.1 jtsz表结构
字段名 类型 宽度 含义
bh VARCHAR 8 编号,UNIQUE INDEX
jtsz_x
rq VARCHAR 7 日期
srje CURRENC
Y
收入金额
zcje CURRENC
Y
支出金额
szlx VARCHAR 10 收支类型
bz VARCHAR 60 备注
表 6.2 dic_szlx表结构
字段名 类型 宽度 含义
szlx VARCHAR 10 收支类型,UNIQUE INDEX dic1
返回
6.2 数据维护和查询
程序运行后,当用户选择,维护查询,菜单的
,基本信息,项时,打开一个窗口,w_d_in”,
这个窗口用来对基本信息进行 维护和查询 。如
果用户选择“维护查询”菜单的,收支项目,
项,则打开窗口,w_szlx”,对收支类型信息
进行 维护 。信息维护包括增、删、改等功能。
下面重点介绍窗口 w_d_in的设计及有关技术,
w_szlx与 w_d_in很相似,只作简单介绍。
返回进入本节学习
?6.2.1 收支类型的输入与文本颜色的控制
?6.2.2 窗口 w_d_in布局及部分代码
?6.2.3 查询的实现
?6.2.4 Set Carry on功能的实现
?6.2.5 数据有效性检验
?6.2.6其它功能
?6.2.7 收支类型维护窗口 (本节从略 )
返回
6.2.1 收支类型的输入与文本颜色的控制
? 为了便于对收支类型信息进行 维护, 并且在对基本
信息维护时利用 下拉数据窗口 输入收支类型, 需要
针对表 dic_szlx建立一个 数据窗口对象 d_szlx。 该
数据窗口对象通过上移标题带隐蔽标题, 设置字体,
颜色等属性 。
? 针对表 jtsz设计一个数据窗口对象 d_jbxx。 其中,
szlx的 Edit属性使用了下拉数据窗口 ( DropDownDW)
d_szlx,总结区分别求出收入金额和支出金额的合
计 。
如图 6.3所示
返回
图 6.3 数据窗口对象 d_jbxx布局和属性
这样,在数据窗口对象 d_jbxx中,就可以用下拉数据窗口 d_szlx作为
弹出菜单实现收支类型的输入。
此外,在 d_jbxx中,还利用表达式对 szlx,srje,zcje的文本颜色进行动
态控制,使数据易于分辨。
6.2.2 窗口 w_d_in布局及部分代码
? 1,窗口布局
? 2,open事件代码
? 3,closequery事件代码
返回
6.2.3 查询的实现
? 在本 窗口 w_d_in中, 可按 收支类型, 年份
( 或年月 ) 进行 查询 。 当下拉列表 ddlb_1
或 ddlb_2 的 选 项 发 生 改 变 时, 产生
selectionchanged( 或 modified) 事件,
通过代码 Parent.TriggerEvent(“u_serch”)
触发窗口 用户事件 u_serch实现查询 。
? 给用户事件 u_serch编写如下代码:
窗口中, 全部, 命令按钮用来清除 ddlb_1和
ddlb_2内容并进行过滤, 以显示全部记录 。
返回
6.2.4 Set Carry on功能的实现
? 相当于 FoxPro中的 Set Carry on功能。
返回
6.2.5 数据有效性检验
在窗口 w_d_in中,对数据窗口控件的 dw_1
的 itemfocuschanged事件编写如下代码,
与此相关,在 dw_1的 retrieveend事件(
数据检索结束时产生)中编写如下代码
返回
6.2.6其它功能
? 1,在窗口 w_d_in的数据窗口控件 dw_1中,
当前记录改变时, 产生 rowfocuschanged事
件, 通过代码
sle_2.text=string(dw_1.GetRow())
可以显示 当前记录号 。
? 2,数据窗口中发生 数据库错误, 产生
dberror事件, 下面程序段根据错误代码显
示相应的信息, 跳过系统错误信息提示 。
? 3,数据窗口 的数据项未通过 合法性检查 时,
产生 itemerror事件,通过代码
MessageBox("数据错误 ","数据未通
过合法性检验 ")
Return 1
显示错误信息,跳过系统错误信息提示。
? 4,最后, 给出 窗 口 w_d_in上几个 命 令按 钮
clicked事件的代码:
,首行,
,上行,
,下行,
,末行,
,删除,
,保存,
,退出,
返回
6.3 统计表
6.3.1 数据窗口对象 d_tjb
6.3.2 统计表窗口 w_tjb
返回
6.3.1 数据窗口对象 d_tjb
为了能 按某一年 份或所有年份 统计 各项收
入和支出数据,我们首先针对表 jtsz建立
一个如图 6.6所示的数据窗口对象 d_tjb。
如图 6.6所示
返回
图 6.6 数据窗口对象 d_tjb
6.3.2 统计表窗口 w_tjb
? 统计表窗口 w_tjb的外观和控件如图 6.7所示 。 窗口类型为
main!,标题为, 统计表,, 图标为 Form!,取消 MaxBox和
Resizable选项, 即不允许最大化和改变大小 。
? 窗口上放置一个数据窗口控件 dw_1,设置它的 DataObject
属性为 d_tjb,即把前面设计的数据窗口对象 d_tjb挂接到
数据窗口控件上 。
? 下拉列表 ddlb_1的作用是按年份对数据进行 过滤, 即统计
指定年份的收支数据 。 通过 ddlb_1的 items属性, 设置下
拉列表项为, 全部,,, 2002”,, 2000”,
,1999”...“1972”,也可以象 w_d_in窗口那样用代码设置
下拉列表项 。
如图 6.7所示 返回
图 6.7 统计表窗口 w_tjb
在该窗口的 open事件代码中,设置下拉列表 ddlb_1的 text属性为, 全部,,
并触发其, Selectionchanged”事件。
单击, 打印, 命令按钮的,产生 clicked事件。
,退出, 命令按钮的 clicked事件代码。
6.4 统计图
? 6.4.1数据窗口对象 d_tjt
? 6.4.2 统计图窗口 w_tjt
返回
6.4.1数据窗口对象 d_tjt
为了能 按某一年 份或所有年份绘制各项收
入或支出的 比例图,我们在数据窗口对象
d_tjb的基础上添加一个 图表( Graph) 对象
建立数据窗口对象 d_tjt。图表标题设置为
“统计图”,名字为 gr_1,图标类型设置
为 Pie(13)
如图 6.8所示
返回
图 6.8 数据窗口对象 d_tjt布局及部分属性
返回
? 设置 gr_1的 Category属性为 mid(szlx,2),
Rows为 All,Value为 sum(srje for graph)。
? 上移所有带,使细节、标题、分组数据、合计
数据均不显示。用 gr_1覆盖各带,并调整到足
够大,最后得到调整后的数据窗口对象。
如图 6.9所示
返回
图 6.9 调整后的数据窗口对象 d_tjt
布局及部分属性
返回
6.4.2 统计图窗口 w_tjt
? 统计图窗口 w_tjt的外观和控件如图 6.10所示。窗口类型
为 main!,标题为“统计图”,图标为 UserObject5!,取
消 MaxBox和 Resizable选项,即不允许最大化和改变大小。
? 窗口上放置一个 数据窗口控件 dw_1,设置它的 DataObject
属性为 d_tjt,即把前面设计的数据窗口对象 d_tjt挂接到
数据窗口控件上。
? 下拉列表框 ddlb_1的作用与统计表窗口 w_tjb中 ddbl_1一
样,列表项也相同。
? 窗口上还放置两个单选按钮 rb_1和 rb_2,其作用是选择按
收入项还是按支出项生成统计图。
? 在窗口 w_tjt的 open事件 中,通过如下 代码
? 单选按钮 rb_1和 rb_2的 clicked事件 代码
? 下拉列表框 ddlb_1的 selectchanged事件 代码
如图 6.10所示
返回
图 6.10 统计图窗口 w_tjt
返回
6.5 发布和使用
? 系统调试, 运行成功后, 建立一
个 工程, 编译生成 exe文件, 这
里不需要资源文件, 也不必生成
DLL文件 。
? 需要发布的文件在表 6.3中列出 。
如表 6.3所示
返回
表 6.3 PB 8.0配 Access数据库发布文件
文件 类别 说明
PBVM80.DLL
PB分发文件
所有功能必须LIBJCC.DLL
PBDWE80.D
LL 数据窗口
PBODB80.DL
L ODBC接口及驱动程序
语法文件PBODB80.INI
ODBC32.DLL ODBC驱动管理
ODBCJT32.D
LL Access驱动程序
XXCW.EXE 用户应用程序
XXCW.MDB 用户数据库
? 安装 到一个新的系统后, 要 配置 ODBC数据源 。 方法是:
在 Windows控制面板中双击 ODBC数据源图标, 在打开 ODBC
数据源管理窗口中, 单击, Add...” 按钮, 选择
,Microsoft Access Driver(*.mdb)”数据库驱动程序后,
在, ODBC MicroSoft Access Setup”窗口中输入数据源
名 xxcw,单击, Select”按钮选择需要的数据库即可 。
? 软件运行后,在“维护查询”菜单中选“基本信息”项,
或单击工具栏上的“基本信息”按钮,打开“基本信息
维护查询窗口” 。
如图 6.12所示
返回
图 6.12 基本信息维护查询窗口
返回
? 通过在下拉列表中选择, 年份, 和, 收支类型,,
数据窗口的内容将发生变化, 过滤出相应的内容 。
单击, 插入,,, 删除,,, 保存, 按钮完成相
应的操作 。 值得一提 的是, 在 插入 一条 新记录 时,
系统自动将最末记录值 传递过来, 编号自动加 1。
日期每月改变一次, 可以提高输入效率 。 当 收入
金额 和 支出金额 同时 为零 或同时 非零 时, 系统 提
示, 数据未通过合法性检验, 。 收支类型可以直
接从 下拉数据窗口 选择, 而且系统会自动选中上
次选择的值 。
返回
? 在, 维护查询, 菜单中选, 收支项目, 项,或单
击工具栏上的, 收支项目, 按钮,打开, 收支类
型维护窗口, 如图 6.13所示。拖动数据窗口右侧
的滚动条或单击, 首行,,, 上行,,, 下行,,
,末行, 按钮,可查看已有的收支项目。单击
,插入,,, 删除,,, 保存, 按钮完成相应的
操作。操作方式与, 基本信息维护查询窗口, 类
似。在, 统计对比, 菜单中选, 统计表, 项,或
单击工具栏上的, 统计表, 按钮,打开, 统计表,
窗口 。
如图 6.14所示 返回
图 6.14 运行时的统计表窗口
返回
? 在, 年份, 下拉列表中选择某一年份, 系统将统
计并显示出该年各项收入小计, 各项支出小计,
收入合计, 支出合计和总余额 。 如果在, 年份,
下拉列表中选择, 全部,, 系统将统计并显示出
所有年份各项收入小计, 各项支出小计, 收入合
计, 支出合计和总余额, 此时,, 年份, 列输出
为空白 。
? 单击, 打印, 按钮, 可以打印统计结果 。
? 在, 统计对比, 菜单中选, 统计图, 项, 或单击
工具栏上的, 统计图, 按钮, 打开, 统计图, 窗
口 。
返回
本章的学习到此结束 !
同学们再见 !
返回首页