您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页vb 财务管理系统详细分析说明书

vb 财务管理系统详细分析说明书

来源:爱go旅游网
详细设计说明书

计算机bcu08-3 赵子斌 1080417311

组员

计算机bcu08-3 黄海 1080417303 计算机bcu 08-3 陈国韬 1080417308 计算机bcu08-3 左恩坚 1080417325

1. 引言......................................................................

1.1说明 .................................................................. 2系统总体结构 ................................................................

2.1系统总体图预览 ........................................................ 2.2系统各个功能模块设计 .................................................. 2.3数据库设计 ............................................................

2.3.1创建表 .......................................................... 2.3.2设定表关系 ...................................................... 2.3.3链接数据库 ......................................................

3界面设计及其代码分析 ........................................................

3.1用户登录界面及系统主界面设计及其代码分析 .............................. 3.2管理员管理界面设计及其代码分析 ........................................ 3.3应收管理界面设计及其代码分析 .......................................... 3.4应付管理界面设计及其代码分析 .......................................... 5.5客户和供应商管理界面设计及其代码 ...................................... 3.6财务科目管理界面设计及其代码 .......................................... 3.7 财务查询界面设计及其代码………………………………………………………….. 3.8生成报表界面设计及其代码……………………………………………………………

1

引言

1.1说明

系统详细设计在系统架构的基础上对系统功能和结构的细化。根据系统架构,自上而下整个系统被划分成若干层,每一层又被划分成不同的功能模块。系统的业务层被划分成若干独立的功能模块,而系统的功能层又被细分,划分成了小的独立模块。

详细描述本小组的财务管理系统的设计思路与过程,让用户更好了解系统以便作出更好的进一步开发。

系统总体结构

2.1系统总体图

财务管理系统的用例图

2

系统的主要流程图如下所示:

开始 登陆 否 是否登陆 是 系统主界面 财务管理系统 管理员管理 应收管理 应付管理 客户和供应商财务科目管理 财务查询 生成报表 系统主要流程图

管理员登录成功后进入系统主页面流程图,管理员登录成功后,管理员进入系统主页面,对系统主要功能进行操作,登录失败后,退出系统。

3

2.2系统各个功能模块设计

财务管理系统主要有管理员管理、应收管理、应付管理、客户和供应商管理、财务科目管理、财务查询、生成报表等七大功能模块,系统的七大功能模块如图。

财务管理系统 管理员管理 应收管理 应付管理 客户和供应商财务科目管理 财务查询 生成报表

财务管理系统的基本功能模块

管理员管理由添加管理员,更改管理员密码,管理员注销,管理员注销,退出系统组成。

结构图如下:

管理员管理 添加管理员 更改管理员密管理员注销 退出系统

应收管理由日记账的输入,发票输入组成

4

应收管理 添加管理员 管理员注销

客户和供应商管理由客户管理,供应商管理组成

应收管理 添加管理员 管理员注销

应付管理由付款单组成

应付管理 付款单

财务科目由科目管理组成

5

财务科目管理 科目管理

财务查询管理由按日期,按科目组成

财务查询管理 按日期 按科目

财务分析由试算平衡,生成损益表,生成财务指标组成

财务分析 试算平衡 生成损益表码 生成财务指标

6

2.3数据库设计

2.3.1创建表

数据库fiance包含用户登录,币种,客户资料,财务指标,损益表,科目类别,付款单,发票表,供应商资料表,商品表,财务科目,日记账12个表,下面分别介绍这些表的结构。

(1) 用户登录

用户登录表用来保存用户信息

编号 1 2 (2) 币种

币种表用来保存币种信息 编号 1 2 3 字段名称 币种 币种名称 汇率 数据结构 文本 文本 数字 说明 币种缩写 币种名称 设置汇率 字段名称 用户名 密码 数据结构 文本 文本 说明 管理员登录名 登录密码

(3) 客户资料

客户资料表用用于保存客户资料 编号 1 2 3 4 5 6 7 8 9 10 字段名称 客户代码 客户名称 业务员 公司或部门 通讯地址 邮政编码 电话号码 传真号码 E-mail地址 附注 数据结构 自动编号 文本 文本 文本 文本 数字 数字 数字 文本 备注 说明 客户代码关键字 客户名称 记录业务员 公司或部门 记录通讯地址 记录邮政编码 记录电话号码 记录传真号码 记录E-mail地址 备注 (4) 财务指标

财务指标用来储存相关财务指标 编号 1 2 3 4

字段名称 编号 流动比率 速动比率 资产负债率 7

数据结构 自动编号 数字 数字 数字 说明 编号关键字 流动比率 速动比率 资产负债率 5 6 7 8 9 10 产权比率 总资产周转率 流动资产周转率 应收账款周转率 资产净利率 权益报酬率 数字 数字 数字 数字 数字 数字 产权比率 总资产周转率 流动资产周转率 应收账款周转率 资产净利率 权益报酬率

(5) 损益表

损益表是用来储存相关损益信息 编号 1 2 3 4 5 6 7 8 9 10 11 12 字段名称 编号 主营业务收入 营业外收入 投资受益 收入合计 折扣与折让 业务税金及附加 业务成本 营业外支出 业务费用 成本与费用合计 本期损益合计 数据结构 自动编号 货币 货币 货币 货币 货币 货币 货币 货币 货币 货币 货币 说明 编号关键字 主营业务收入 营业外收入 投资受益 收入合计 折扣与折让 业务税金及附加 业务成本 营业外支出 业务费用 成本与费用合计 本期损益合计

(6) 科目类别

科目类别表储存科目类别信息 编号 1 2 字段名称 科目类别ID 科目类别 (7) 付款单

付款单表是用来储存付款单信息 编号 1 2 3 4 5 6 7 8 9 10 11

数据结构 自动编号 文本 说明 科目类别ID关键字 科目类别 字段名称 付款单号 付款日期 发票编号 供应商代码 结算方式 结算科目 摘要 付款金额 业务员 制单员 审核员 8

数据结构 文本 日期 文本 数字 文本 文本 文本 货币 文本 文本 文本 说明 记录付款单号关键字 记录付款日期 记录发票编号 记录供应商代码 记录结算方式 记录结算科目 记录备注 记录付款金额 记录业务员 记录制单员 记录审核员

(8) 发票单

发表单表是用来储存发票信息的 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 字段名称 发票号 发票类型 开票日期 客户ID 供应商ID 商品ID 数量 单价 币种 结算方式 结算金额 制单员 审核员 数据结构 文本 文本 日期 数字 数字 数字 数字 数字 文本 文本 货币 文本 文本 说明 记录发票号关键字 记录发票类型 记录开票日期 记录客户ID 记录供应商ID 记录商品ID 记录数量 记录单价 记录币种 记录结算方式 记录结算金额 记录制单员 记录审核员 (9) 供应商资料表

供应商表用来储存供应商信息 编号 1 2 3 4 5 6 7

(10) 商品表

商品表是用来储存商品的信息 编号 1 2 3 4 5 6 7 字段名称 商品代码 商品名称 商品单价 商品税率 商品类别 供应商代码 商品概要 数据结构 自动编号 文本 货币 数字 文本 文本 文本 说明 商品代码关键字 商品名称 商品单价 商品税率 商品类别 供应商代码 商品概要 字段名称 供应商代码 供应商名称 通信地址 邮政编码 电话 传真 E-mail 数据结构 自动编号 文本 文本 数字 数字 数字 文本 说明 供应商代码关键字 供应商名称 通信地址 邮政编码 电话 传真 E-mail (11) 财务科目

财务科目表是用来储存财务科目信息的

9

编号 1 2 3 4 字段名称 科目代码 科目名称 科目类别ID 备注 数据结构 文本 文本 数字 文本 说明 科目代码关键字 科目名称 科目类别ID 备注

(12) 日记账

日记账表是用来储存每天记账的信息 编号 1 2 3 4 5 6 7 字段名称 记账ID 日记账编号 科目代码 借 贷 记账日期 备注 数据结构 自动编号 文本 文本 货币 货币 日期 文本 说明 记账ID关键字 日记账编号 科目代码 借 贷 记账日期 备注 2.3.2设定表关系

Access作为关系型数据库管理系统,指定表之间的关系是很重要的,财务管理系统数据库的所有表与字段创建完成后,就需要设定表关系了,access将来会凭借表关系来链接两个表或查询中的数据。

表与表之间的关系如下:

2.3.3链接数据库

首先我们应该在windows的odbc数据库源管理器中注册数据库。

10

在系统中注册数据库完毕后,就可以在程序中链接数据库了 我们使用了vb当中的adoc控件来连接数据库,同时我们还专门设计了一个模块处理数据库的连接

具体代码如下:

Option Explicit

Public DbFinance As New ADODB.Connection '设置ADODB连接对象的公共变量

Public Function DbConnection() '打开数据库 Dim e As ADODB.Error

DbConnection = True 'ConnectDB为真时表示打开数据库无误

On Error GoTo errorhandle '出现任何错误将执行errorhandle进行错误处理 DbFinance.Errors.Clear

DbFinance.CommandTimeout = 30 '执行SQL命令的缺省等待时间 DbFinance.ConnectionTimeout = 30 '连接数据库的缺省时间

DbFinance.ConnectionString = \"DSN=Finance\" '打开DSN名为Finance的odbc数据源

On Error GoTo Unconnect '出现数据库连接错误时将进行处理 DbFinance.Open '打开数据库 Exit Function

errorhandle:

If DbFinance.Errors.Count < 1 Then

MsgBox Err.Description, vbOKOnly + vbExclamation '显示错误描述 Else

For Each e In DbFinance.Errors

MsgBox e.Description '显示错误描述 Next e End If

DbConnection = False 'DbConnection为假(False)时表示打开数据库有误 Set DbFinance = Nothing '关闭错误的数据库 Exit Function Unconnect:

MsgBox \"数据库网络连接失败,程序将终止!\显示错误描述 Set DbFinance = Nothing '关闭错误的数据库 DbConnection = False Exit Function End Function

Public Sub DbClose() '关闭数据库 On Error Resume Next

11

DbFinance.Close

Set DbFinance = Nothing End Sub

Public Function resultcount(rs As ADODB.Recordset) As Long '返回结果集中的记录数 On Error Resume Next resultcount = 0

Do While rs.EOF = False

resultcount = resultcount + 1 rs.MoveNext Loop

rs.MoveFirst End Function

3界面设计及其代码分析

财务管理管理系统的界面有一下七部分组成。 1)管理员管理界面设计 2)应收管理界面设计 3)应付管理界面设计

4)客户和供应商管理界面设计 5)财务科目管理界面设计 6)财务查询 7)生成报表

3.1用户登录界面及系统主界面设计

当用户进入系统时,系统会显示用户登录界面。如图所示

12

用户需要输入用户名和密码,系统会通过查找用户登录来验证用户身份的有效性,否则会显示出错信息。如果用户的用户名和密码输入正确,系统将会显示主界面。 主界面如图:

主界面代码如下: Option Explicit

Private Sub Check1_Click()

If Check1.Value Then '启用或者禁止快捷按钮所在的Frame Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Frame4.Enabled = False Frame6.Enabled = False Frame7.Enabled = False Frame8.Enabled = False Else

Frame1.Enabled = True Frame2.Enabled = True Frame3.Enabled = True Frame4.Enabled = True Frame6.Enabled = True Frame7.Enabled = True Frame8.Enabled = True End If End Sub

13

Private Sub Command1_Click()

AddAdmin.Show 1 '显示增加管理员窗体 End Sub

Private Sub Command10_Click() '退付款单

Payment.Show 1 End Sub

Private Sub Command11_Click() QueryBydate.Show 1 '查询按日期 End Sub

Private Sub Command12_Click() '查询按科目

QueryBysubject.Show 1 End Sub

Private Sub Command13_Click() '试算平衡

DataReport3.Show 1 End Sub

Private Sub Command14_Click() '损益表

DataReport1.Show 1 End Sub

Private Sub Command16_Click() '生产财务指标

DataReport4.Show 1 End Sub

Private Sub Command2_Click()

AdminPass.Show 1 '显示修改管理员密码窗体 End Sub

Private Sub Command3_Click() Me.Hide

AdminLogin.User.Text = \"\" '登录窗体信息清空 AdminLogin.Pass.Text = \"\"

AdminLogin.Show '显示注销(登录)窗体 End Sub

14

Private Sub Command4_Click() End '退出管理系统 End Sub

Private Sub Command5_Click()

AddDateAccount.Show 1 '显示日记账 End Sub

Private Sub Command6_Click()

SubjectManage.Show 1 '显示财务科目管理 End Sub

Private Sub Command7_Click() '客户管理

ClientManage.Show 1 End Sub

Private Sub Command8_Click() '发票输入

InvoiceInput.Show 1 End Sub

Private Sub Command9_Click() '供应商管理

SupplierManage.Show 1 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '初始化窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 Me.Height = 8010 Me.Width = 12000 End Sub

Private Sub Form_Unload(Cancel As Integer)

On Error Resume Next '当主窗体关闭时关闭数据库连接 DbHandle.DbClose End End Sub

Private Sub menu_AddAdmin_Click()

AddAdmin.Show 1 '显示增加管理员窗体

15

End Sub

Private Sub menu_addDateAccount_Click() AddDateAccount.Show 1 '显示日记账 End Sub

Private Sub menu_AdminPass_Click()

AdminPass.Show 1 '显示修改管理员密码窗体 End Sub

Private Sub menu_C_Click() '客户管理

ClientManage.Show 1 End Sub

Private Sub menu_Exit_Click() End '退出管理系统 End Sub

Private Sub menu_InvoiceInput_Click() '发票输入

InvoiceInput.Show 1 End Sub

Private Sub menu_Logout_Click() Me.Hide

AdminLogin.User.Text = \"\" '登录窗体信息清空 AdminLogin.Pass.Text = \"\"

AdminLogin.Show '显示注销(登录)窗体 End Sub

Private Sub menu_payment_Click() '退付款单

Payment.Show 1 End Sub

Private Sub menu_s_Click() '供应商管理

SupplierManage.Show 1 End Sub

Private Sub menu_subject_Click()

SubjectManage.Show 1 '显示财务科目管理

16

End Sub

Private Sub 按科目_Click() '查询按科目

QueryBysubject.Show 1 End Sub

Private Sub 按日期_Click() QueryBydate.Show 1 '查询按日期 End Sub

Private Sub 生成财务指标_Click() '生产财务指标

DataReport4.Show 1 End Sub

Private Sub 生成损益表_Click() '损益表

DataReport1.Show 1 End Sub

Private Sub 试算平衡_Click() '试算平衡

DataReport3.Show 1 End Sub

3.2管理员管理界面设计界面设计

管理员管理主要由增加管理员,更改管理员密码,管理员注销,退出系统组成

管理员注销

当用户点管理员注销后,会返回到登陆界面 代码实现如下:

Private Sub Command3_Click() Me.Hide

AdminLogin.User.Text = \"\" '登录窗体信息清空 AdminLogin.Pass.Text = \"\"

AdminLogin.Show '显示注销(登录)窗体 End Sub

退出系统

当用户点退出系统的时候会退出系统 代码实现如下:

Private Sub Command4_Click()

17

End '退出管理系统 End Sub

增加管理员

当用户点增加管理员时会进入增加管理员窗口

当点确定时增加管理员 具体实现代码如下: Option Explicit

Private Sub Command1_Click() Dim sql As String

Dim rs As New ADODB.Recordset

If User.Text = \"\" Then '判断管理员ID输入框不为空 MsgBox \"管理员ID不能为空!\ User.SetFocus Exit Sub End If

If Pass.Text = \"\" Then '判断管理员密码输入框不为空 MsgBox \"管理员密码不能为空!\ Pass.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"用户登录\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"用户名='\" & User.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

18

If DbHandle.resultcount(rs) = 1 Then '如果找到一条存在的管理员记录就报错

MsgBox \"管理员ID已经存在!\ rs.Close

DbHandle.DbClose Exit Sub

Else '否则新建一条管理员记录完成添加 rs.Close

rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"用户名\") = User.Text rs(\"密码\") = Pass.Text rs.Update rs.Close End If

MsgBox \"管理员成功添加!\" Unload Me

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

Private Sub Command2_Click()

Me.Hide '取消按钮返回主窗体 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '把窗体定位居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 End Sub

Private Sub Form_Unload(Cancel As Integer)

On Error Resume Next '窗体关闭时候关闭数据库连接 DbHandle.DbClose End Sub

更该管理员密码

当用户点更该管理员密码会显示相应的窗口 窗口如下:

19

当点确认按钮时实现密码的更改,具体实现代码如下:

Option Explicit

Private Sub Command1_Click() Dim sql As String

Dim rs As New ADODB.Recordset

If NewPass.Text <> ChkPass.Text Then '新密码和验证密码要相同 MsgBox \"新密码不一致!\ NewPass.SetFocus Exit Sub End If

If User = \"\" Then '密码和用户ID输入框不能为空 MsgBox \"管理员ID不能为空!\ User.SetFocus Exit Sub End If

If OldPass.Text = \"\" Then

MsgBox \"管理员密码不能为空!\ OldPass.SetFocus Exit Sub End If

If DbHandle.DbConnection Then

sql = \"用户登录\" '打开管理员表,查看是否要添加的管理员ID已经存在 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"用户名='\" & User.Text & \"'\" rs.Open sql, DbFinance

If DbHandle.resultcount(rs) <> 1 Then '不存在出错退出 MsgBox \"管理员ID不存在!\ rs.Close

DbHandle.DbClose User.SetFocus

20

Exit Sub

Else '存在查看输入的原是密码是否和数据库保存的密码相一致 If rs(\"密码\") <> OldPass.Text Then '不一致要求重新输入原是密码 MsgBox \"管理员密码错误!\ rs.Close

OldPass.SetFocus Exit Sub End If

rs(\"密码\") = NewPass.Text '一致就设置新的管理员密码 rs.Update rs.Close End If

MsgBox \"管理员密码成功修改!\" Unload Me

Else '数据库打开失败退出

MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

Private Sub Command2_Click() Me.Hide '返回主窗体 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 End Sub

Private Sub Form_Unload(Cancel As Integer)

On Error Resume Next '对话框关闭时候关闭数据库连接 DbHandle.DbClose End Sub

3.3应收管理界面设计

应收管理是由日记账输入和发票输入构成的

日记账输入

当用户点日记账输入时进入日记账输入界面,界面如下:

21

用户可以添加新的日记账,打印日记账,具体实现代码如下:

Private Sub cboAccount_Click()

'使cboAccount变动时cboAccountNo也同时变动,调用ListIndex属性使这两个组合框能相互联系。

cboAccountNo.Text = cboAccountNo.List(cboAccount.ListIndex) txtCredit.SetFocus End Sub

Private Sub cboAccountNo_Click()

'使cboAccountNo变动时cboAccount也同时变动

cboAccount.Text = cboAccount.List(cboAccountNo.ListIndex) txtCredit.SetFocus End Sub

Private Sub CmdAdd_Click() '添加这条记录到数据库中

'将当前窗体的内容保存至数据库 SaveJournal

'同一业务的txtDate、txtMemo应相同,设置成不能更改 txtDaybookNo.Enabled = False txtDate.Enabled = False txtMemo.Enabled = False

'借贷相转,在很多情况下可以节省输入劳动。 iTemp = txtCredit txtCredit = txtDebit

22

txtDebit = iTemp

End Sub

Private Sub CmdClose_Click() Me.Hide '返回主窗体 End Sub

Private Sub CmdNext_Click()

'完成此项业务,将窗体清除,以便记录下条记录 SaveJournal

txtDaybookNo.Enabled = True txtDate.Enabled = True txtMemo.Enabled = True cboAccountNo.Text = \"\" cboAccount.Text = \"\" txtDaybookNo = \"\" txtDate = Date txtMemo = \"\" txtCredit = \"\" txtDebit = \"\" End Sub

Private Sub Command1_Click() '打印日记账

DataReport2.Show 1 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 txtDate = Date

Dim sql As String

Dim rs As New ADODB.Recordset

If DbHandle.DbConnection Then '打开数据库连接

sql = \"select * from 财务科目\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"\" '选择条件是符合User.Text的管理员记录 rs.Open sql, DbFinance

Do While rs.EOF = False '循环加入下拉列表中去

23

cboAccountNo.AddItem (rs(\"科目代码\")) cboAccount.AddItem (rs(\"科目名称\")) rs.MoveNext Loop

rs.Close '释放资源 Set rs = Nothing DbHandle.DbClose Else

MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

Private Sub SaveJournal() Dim sql As String

Dim rs As New ADODB.Recordset

If txtDaybookNo = \"\" Then '判断日记账编号输入框不为空 MsgBox \"日记账编号不能为空!\ txtDaybookNo.SetFocus Exit Sub End If

If txtCredit = \"\" Then '判断借输入框不为空 MsgBox \"借输入框不能为空!\ txtCredit.SetFocus Exit Sub End If

If txtDebit = \"\" Then '判断贷输入框不为空 MsgBox \"贷输入框不能为空!\ txtDebit.SetFocus Exit Sub End If

If txtMemo = \"\" Then '判断备注输入框不为空 MsgBox \"备注输入框不能为空!\ txtMemo.SetFocus Exit Sub End If

If Not IsNumeric(txtCredit.Text) Then MsgBox \"借输入框不是数字\ txtCredit.SetFocus Exit Sub

24

End If

If Not IsNumeric(txtDebit.Text) Then MsgBox \"贷输入框不是数字\ txtDebit.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"日记账\" '对表日记账进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"日记账编号\") = txtDaybookNo.Text rs(\"科目代码\") = cboAccountNo.Text rs(\"记账日期\") = txtDate.Text rs(\"借\") = CCur(txtCredit.Text) rs(\"贷\") = CCur(txtDebit.Text) rs(\"备注\") = txtMemo.Text rs.Update rs.Close

DbHandle.DbClose

MsgBox \"成功添加日记账!\" Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

发票输入

当用户点发票输入的时候就会进入发票输入窗口,进行发票的输入

窗口如下:

25

用户可以在此窗口新建,保存发票 具体实现代码如下:

Private Sub cboGoods_Click()

cboPrice.Text = cboPrice.List(cboGoods.ListIndex) End Sub

Private Sub cboPrice_Click()

cboGoods.Text = cboGoods.List(cboPrice.ListIndex) End Sub

Private Sub Command1_Click() '新建

texInvoiceType.Text = \"\" texaudit.Text = \"\"

texbalanceType.Text = \"\" texBalance.Text = \"\"

texbillProducer.Text = \"\" texDate.Text = \"\"

texInvoiceID.Text = \"\" texInvoiceType = \"\" texNum.Text = \"\" cboClient.Text = \"\" cboCurr.Text = \"\" cboGoods.Text = \"\" cboPrice.Text = \"\" cboSupplier.Text = \"\" End Sub

Private Sub Command2_Click() '保存

Dim sql As String

Dim rs As New ADODB.Recordset

26

If texInvoiceType.Text = \"\" Then '判断发票类型输入框不为空 MsgBox \"发票类型不能为空!\ texInvoiceType.SetFocus Exit Sub End If

If texaudit.Text = \"\" Then '判断审核员输入框不为空 MsgBox \"审核员输入框不能为空!\ texaudit.SetFocus Exit Sub End If

If texbalanceType.Text = \"\" Then '判断结算方式名输入框不为空 MsgBox \"结算方式输入框不能为空!\ texbalanceType.SetFocus Exit Sub End If

If texBalance.Text = \"\" Then '判断结算输入框不为空 MsgBox \"结算输入框不能为空!\ texBalance.SetFocus Exit Sub End If

If texbillProducer.Text = \"\" Then '判断制表人输入框不为空 MsgBox \"制表人输入框不能为空!\ texbillProducer.SetFocus Exit Sub End If

If texDate.Text = \"\" Then '判断结算日期输入框不为空 MsgBox \"结算日期输入框不能为空!\ texDate.SetFocus Exit Sub End If

If texInvoiceID.Text = \"\" Then '判断发票号输入框不为空 MsgBox \"发票号输入框不能为空!\ texInvoiceID.SetFocus Exit Sub End If

If texInvoiceType.Text = \"\" Then '判断发票类型输入框不为空 MsgBox \"发票类型输入框不能为空!\

27

texInvoiceType.SetFocus Exit Sub End If

If texNum.Text = \"\" Then '判断金额输入框不为空 MsgBox \"金额输入框不能为空!\ texNum.SetFocus Exit Sub End If

If cboClient.Text = \"\" Then '判断客户输入框不为空 MsgBox \"客户输入框不能为空!\ cboClient.SetFocus Exit Sub End If

If cboCurr.Text = \"\" Then '判断币种输入框不为空 MsgBox \"币种输入框不能为空!\ cboCurr.SetFocus Exit Sub End If

If cboGoods.Text = \"\" Then '判断商品输入框不为空 MsgBox \"商品输入框不能为空!\ cboGoods.SetFocus Exit Sub End If

If cboPrice.Text = \"\" Then '判断商品单价输入框不为空 MsgBox \"商品单价输入框不能为空!\ cboPrice.SetFocus Exit Sub End If

If cboSupplier.Text = \"\" Then '判断供应商输入框不为空 MsgBox \"供应商输入框不能为空!\ cboSupplier.SetFocus Exit Sub End If

If Not IsNumeric(texNum.Text) Then

MsgBox \"数量输入框不是数字\ texNum.SetFocus Exit Sub

28

End If

If Not IsNumeric(texBalance.Text) Then

MsgBox \"结算金额输入框不是数字\ texBalance.SetFocus Exit Sub End If

If Not IsDate(texDate.Text) Then

MsgBox \"日期输入框不是日期例如:2010-1-2\ texDate.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"发票表\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"发票号='\" & texInvoiceID.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

If DbHandle.resultcount(rs) = 1 Then '如果找到一条存在的管理员记录就报错

MsgBox \"发票已经存在!不能添加\ rs.Close

DbHandle.DbClose Exit Sub

Else '否则新建一条管理员记录完成添加 rs.Close

rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"发票号\") = texInvoiceID.Text rs(\"发票类型\") = texInvoiceType.Text rs(\"开票日期\") = CDate(texDate.Text)

rs(\"客户ID\") = cboClient.ItemData(cboClient.ListIndex + 1)

rs(\"供应商ID\") = cboSupplier.ItemData(cboSupplier.ListIndex + 1) rs(\"商品ID\") = cboGoods.ItemData(cboGoods.ListIndex + 1) rs(\"数量\") = CInt(texNum.Text) rs(\"单价\") = CCur(cboPrice.Text) rs(\"币种\") = cboCurr.Text

rs(\"结算方式\") = texbalanceType.Text rs(\"结算金额\") = CCur(texBalance.Text) rs(\"制单员\") = texbillProducer.Text

29

rs(\"审核员\") = texaudit.Text rs.Update rs.Close End If

MsgBox \"新发票信息成功添加!\" DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

Private Sub Command3_Click() Me.Hide '返回主窗体 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2

Dim rs1 As New ADODB.Recordset Set rs1 = Adodc1.Recordset

Do While rs1.EOF = False '循环加入下拉列表中去 cboCurr.AddItem (rs1(\"币种\")) rs1.MoveNext Loop

Dim rs2 As New ADODB.Recordset Set rs2 = Adodc2.Recordset

Do While rs2.EOF = False '循环加入下拉列表中去 cboSupplier.AddItem (rs2(\"供应商名称\"))

cboSupplier.ItemData(rs2(\"供应商代码\") - 1) = rs2(\"供应商代码\") rs2.MoveNext Loop

Dim rs3 As New ADODB.Recordset Set rs3 = Adodc3.Recordset

Do While rs3.EOF = False '循环加入下拉列表中去 cboClient.AddItem (rs3(\"客户名称\"))

cboClient.ItemData(rs3(\"客户代码\") - 1) = rs3(\"客户代码\")

30

rs3.MoveNext Loop

Dim rs4 As New ADODB.Recordset Set rs4 = Adodc4.Recordset

Do While rs4.EOF = False '循环加入下拉列表中去 cboGoods.AddItem (rs4(\"商品名称\"))

cboGoods.ItemData(rs4(\"商品代码\") - 1) = rs4(\"商品代码\") cboPrice.AddItem (rs4(\"商品单价\")) rs4.MoveNext Loop End Sub

3.4客户与供应商管理界面设计

客户与供应商管理是由客户管理和供应商管理两部分构成的,主要是让用户管理供应商和客户信息。

客户管理

该窗体是让用户对客户信息进行添加管理。

窗体如下:

31

用户可以实现添加新的客户信息进数据库中,对客户信息进行管理 具体实现代码如下:

Private Sub Command1_Click() '新建

texAddrease.Text = \"\" texDepartment.Text = \"\" texFax.Text = \"\" texMemo.Text = \"\" texName.Text = \"\" texSaleman.Text = \"\" texTelphone.Text = \"\" texZip.Text = \"\" texEmail.Text = \"\" End Sub

Private Sub Command2_Click() '保存

Dim sql As String

Dim rs As New ADODB.Recordset

If texAddrease.Text = \"\" Then '判断地址输入框不为空 MsgBox \"地址栏不能为空!\ texAddrease.SetFocus Exit Sub End If

If texDepartment.Text = \"\" Then '判断部门输入框不为空 MsgBox \"部门输入框不能为空!\ texDepartment.SetFocus Exit Sub End If

If texFax.Text = \"\" Then '判断传真输入框不为空 MsgBox \"传真输入框不能为空!\ texFax.SetFocus Exit Sub End If

If texName.Text = \"\" Then '判断公司名输入框不为空 MsgBox \"公司名输入框不能为空!\ texFax.SetFocus Exit Sub End If

If texEmail.Text = \"\" Then '判断Email名输入框不为空

32

MsgBox \"Email输入框不能为空!\ texEmail.SetFocus Exit Sub End If

If texSaleman.Text = \"\" Then '判断业务员输入框不为空 MsgBox \"业务员输入框不能为空!\ texSaleman.SetFocus Exit Sub End If

If texMemo.Text = \"\" Then '判断附注输入框不为空 MsgBox \"附注输入框不能为空!\ texMemo.SetFocus Exit Sub End If

If texTelphone.Text = \"\" Then '判断电话号码输入框不为空 MsgBox \"电话号码输入框不能为空!\ texTelphone.SetFocus Exit Sub End If

If texZip.Text = \"\" Then '判断邮政编码输入框不为空 MsgBox \"邮政编码输入框不能为空!\ texZip.SetFocus Exit Sub End If

If Not IsNumeric(texFax.Text) Then

MsgBox \"传真输入框不是数字\ texFax.SetFocus Exit Sub End If

If Not IsNumeric(texZip.Text) Then

MsgBox \"邮政编码输入框不是数字\ texZip.SetFocus Exit Sub End If

If Not IsNumeric(texTelphone.Text) Then MsgBox \"电话号码输入框不是数字\ texTelphone.SetFocus Exit Sub End If

33

If DbHandle.DbConnection Then '打开数据库连接 sql = \"客户资料\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"客户名称='\" & texName.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

If DbHandle.resultcount(rs) = 1 Then '如果找到一条存在的管理员记录就报错

MsgBox \"公司已经存在!不能添加\ rs.Close

DbHandle.DbClose Exit Sub

Else '否则新建一条管理员记录完成添加 rs.Close

rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"客户名称\") = texName.Text rs(\"业务员\") = texSaleman.Text

rs(\"公司或部门\") = texDepartment.Text rs(\"通讯地址\") = texAddrease.Text rs(\"邮政编码\") = CLng(texZip.Text)

rs(\"电话号码\") = CLng(texTelphone.Text) rs(\"传真号码\") = CLng(texFax.Text) rs(\"E-mail地址\") = texEmail.Text rs.Update rs.Close End If

MsgBox \"新客户信息成功添加!\" DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If

End Sub

Private Sub Command3_Click()

34

Me.Hide '返回主窗体 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 End Sub

供应商管理

用户可以更新数据库中的供应商的信息,可以添加新的供应商信息进数据库中

用户可以在此窗口对供应商信息进行添加,添加供应商名称,邮政编码,电话,email地址,通信地址到数据库中。 具体实现代码如下:

Private Sub Command1_Click() '新建

texAddrease.Text = \"\" texFax.Text = \"\" texName.Text = \"\" texTelphone.Text = \"\" texZip.Text = \"\" texEmail.Text = \"\" End Sub

Private Sub Command2_Click() '保存

Dim sql As String

Dim rs As New ADODB.Recordset

35

If texAddrease.Text = \"\" Then '判断地址输入框不为空 MsgBox \"地址栏不能为空!\ texAddrease.SetFocus Exit Sub End If

If texFax.Text = \"\" Then '判断传真输入框不为空 MsgBox \"传真输入框不能为空!\ texFax.SetFocus Exit Sub End If

If texName.Text = \"\" Then '判断供应商公司名输入框不为空 MsgBox \"供应商名输入框不能为空!\ texFax.SetFocus Exit Sub End If

If texEmail.Text = \"\" Then '判断Email名输入框不为空 MsgBox \"Email输入框不能为空!\ texEmail.SetFocus Exit Sub End If

If texTelphone.Text = \"\" Then '判断电话号码输入框不为空 MsgBox \"电话号码输入框不能为空!\ texTelphone.SetFocus Exit Sub End If

If texZip.Text = \"\" Then '判断邮政编码输入框不为空 MsgBox \"邮政编码输入框不能为空!\ texZip.SetFocus Exit Sub End If

If Not IsNumeric(texFax.Text) Then

MsgBox \"传真输入框不是数字\ texFax.SetFocus Exit Sub End If

If Not IsNumeric(texZip.Text) Then

MsgBox \"邮政编码输入框不是数字\

36

texZip.SetFocus Exit Sub End If

If Not IsNumeric(texTelphone.Text) Then MsgBox \"电话号码输入框不是数字\ texTelphone.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"供应商资料表\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"供应商名称='\" & texName.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

If DbHandle.resultcount(rs) = 1 Then '如果找到一条存在的管理员记录就报错

MsgBox \"供应商已经存在!不能添加\ rs.Close

DbHandle.DbClose Exit Sub

Else '否则新建一条管理员记录完成添加 rs.Close

rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"供应商名称\") = texName.Text rs(\"通信地址\") = texAddrease.Text rs(\"邮政编码\") = CLng(texZip.Text) rs(\"电话\") = CLng(texTelphone.Text) rs(\"传真\") = CLng(texFax.Text) rs(\"E-mail\") = texEmail.Text rs.Update rs.Close End If

MsgBox \"新供应商信息成功添加!\" DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose

37

End End If End Sub

Private Sub Command3_Click() Me.Hide '返回主窗体 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 End Sub

3.5应付管理界面设计

应付管理是处理付款单,当中由付款单组成,处理付款单相应的信息

付款单

用户点付款单按钮,弹出付款单窗口,该窗体可以让用户输入新的付款单到数据库中进行保存。

设计界面窗口如下:

该窗口实现了付款单的管理 具体的代码如下:

Private Sub cboInvoiceID_Click()

cboSupplierID.Text = cboSupplierID.List(cboInvoiceID.ListIndex)

38

End Sub

Private Sub cboSupplierID_Click()

cboInvoiceID.Text = cboInvoiceID.List(cboSupplierID.ListIndex) End Sub

Private Sub Command1_Click() '新建

cboSubject.Text = \"\" cboInvoiceID.Text = \"\" cboSupplierID.Text = \"\" texaudit.Text = \"\" texbillMaker.Text = \"\" texDate.Text = \"\" texID.Text = \"\" texMemo.Text = \"\" texPrice.Text = \"\" texsalesman.Text = \"\" texType.Text = \"\" End Sub

Private Sub Command2_Click() '保存

Dim sql As String

Dim rs As New ADODB.Recordset

If cboSubject.Text = \"\" Then '判断结算科目输入框不为空 MsgBox \"结算科目不能为空!\ cboSubject.SetFocus Exit Sub End If

If cboSupplierID.Text = \"\" Then '判断供应商ID输入框不为空 MsgBox \"供应商ID不能为空!\ cboSupplierID.SetFocus Exit Sub End If

If cboInvoiceID.Text = \"\" Then '判断发票编号输入框不为空 MsgBox \"发票编号输入框不能为空!\ cboInvoiceID.SetFocus Exit Sub End If

39

If texType.Text = \"\" Then '判断结算方式名输入框不为空 MsgBox \"结算方式输入框不能为空!\ texType.SetFocus Exit Sub End If

If texaudit.Text = \"\" Then '判断审核员输入框不为空 MsgBox \"审核员输入框不能为空!\ texaudit.SetFocus Exit Sub End If

If texbillMaker.Text = \"\" Then '判断制表人输入框不为空 MsgBox \"制表人输入框不能为空!\ texbillMaker.SetFocus Exit Sub End If

If texDate.Text = \"\" Then '判断付款日期输入框不为空 MsgBox \"付款日期输入框不能为空!\ texDate.SetFocus Exit Sub End If

If texID.Text = \"\" Then '判断付款单号输入框不为空 MsgBox \"付款单号输入框不能为空!\ texID.SetFocus Exit Sub End If

If texMemo.Text = \"\" Then '判断摘要输入框不为空 MsgBox \"摘要输入框不能为空!\ texMemo.SetFocus Exit Sub End If

If texPrice.Text = \"\" Then '判断付款金额输入框不为空 MsgBox \"付款金额输入框不能为空!\ texPrice.SetFocus Exit Sub End If

If texsalesman.Text = \"\" Then '判断业务员输入框不为空 MsgBox \"业务员输入框不能为空!\ texsalesman.SetFocus

40

Exit Sub End If

If Not IsNumeric(texPrice.Text) Then

MsgBox \"付款金额输入框不是数字\ texPrice.SetFocus Exit Sub End If

If Not IsDate(texDate.Text) Then

MsgBox \"日期输入框不是日期例如:2010-1-2\ texDate.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"付款单\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"付款单号='\" & texID.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

If DbHandle.resultcount(rs) = 1 Then '如果找到一条存在的管理员记录就报错

MsgBox \"付款单已经存在!不能添加\ rs.Close

DbHandle.DbClose Exit Sub

Else '否则新建一条管理员记录完成添加 rs.Close

rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"付款单号\") = texID.Text

rs(\"付款日期\") = CDate(texDate.Text) rs(\"发票编号\") = cboInvoiceID.Text rs(\"供应商代码\") = cboSupplierID.Text rs(\"结算方式\") = texType.Text rs(\"结算科目\") = cboSubject.Text rs(\"摘要\") = texMemo.Text

rs(\"付款金额\") = CCur(texPrice.Text) rs(\"业务员\") = texsalesman.Text rs(\"制单员\") = texbillMaker.Text

41

rs(\"审核员\") = texaudit.Text

rs.Update rs.Close End If

MsgBox \"新发票信息成功添加!\" DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

Private Sub Command3_Click() Me.Hide '返回 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 ' Me.Top = (Screen.Height - Me.ScaleHeight) / 2

Dim rs1 As New ADODB.Recordset Set rs1 = Adodc1.Recordset

Do While rs1.EOF = False '循环加入下拉列表中去 cboSubject.AddItem (rs1(\"科目名称\")) rs1.MoveNext Loop

Dim rs2 As New ADODB.Recordset Set rs2 = Adodc2.Recordset

Do While rs2.EOF = False '循环加入下拉列表中去 cboInvoiceID.AddItem (rs2(\"发票号\")) cboSupplierID.AddItem (rs2(\"供应商ID\")) rs2.MoveNext Loop End Sub

42

窗体居中显示 3.6财务科目管理界面设计

财务科目管理是用来管理财务科目信息,具体设计如下:

该窗体是处理财务科目信息,可以添加新的科目到数据库中的财务科目管理表中,可以在下面的列表框中点对应的选项,对应的选项会显示在对应的文本框中,用户可以修改对应的财务科目,删除对应的科目。

在该窗口设计中添加了一个adoc控件来处理科目代码,与科目类别的查询。 具体实现代码如下:

Private Sub Command1_Click() '新建科目

txtSubjectID.Text = \"\" txtSubjectname.Text = \"\" txtMemo.Text = \"\" cboSubject.Text = \"\"

txtSubjectID.Enabled = True txtSubjectID.SetFocus End Sub

Private Sub Command2_Click() '保存科目

Dim sql As String

Dim rs As New ADODB.Recordset

If txtSubjectID.Text = \"\" Then '判断科目代码输入框不为空

43

MsgBox \"科目代码不能为空!\ txtSubjectID.SetFocus Exit Sub End If

If txtSubjectname.Text = \"\" Then '判断科目名称输入框不为空 MsgBox \"科目名称输入框不能为空!\ txtSubjectname.SetFocus Exit Sub End If

If cboSubject.Text = \"\" Then '判断科目名称输入框不为空 MsgBox \"科目名称输入框不能为空!\ cboSubject.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"财务科目\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"科目代码='\" & txtSubjectID.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

If DbHandle.resultcount(rs) = 1 Then '如果找到一条存在的管理员记录就报错

MsgBox \"财务科目代码已经存在!不能添加\ rs.Close

DbHandle.DbClose Exit Sub

Else '否则新建一条管理员记录完成添加 rs.Close

rs.Filter = \"\"

rs.Open sql, DbFinance rs.AddNew

rs(\"科目代码\") = txtSubjectID.Text rs(\"科目名称\") = txtSubjectname.Text

rs(\"科目类别ID\") = cboSubject.ItemData(cboSubject.ListIndex + 1) rs(\"备注\") = txtMemo.Text rs.Update rs.Close End If

MsgBox \"新财务科目成功添加!\"

44

Dim strQuery As String strQuery = \"SELECT 科目代码, 科目名称, 科目类别, 备注 FROM 财务科目 AS a, 科目类别 AS b WHERE a.科目类别ID=b.科目类别ID\" Adodc1.RecordSource = strQuery Adodc1.Refresh DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If

End Sub

Private Sub Command3_Click() '修改科目

Dim sql As String

Dim rs As New ADODB.Recordset

If txtSubjectname.Text = \"\" Then '判断科目名称输入框不为空 MsgBox \"科目名称输入框不能为空!\ txtSubjectname.SetFocus Exit Sub End If

If cboSubject.Text = \"\" Then '判断科目名称输入框不为空 MsgBox \"科目名称输入框不能为空!\ cboSubject.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接 sql = \"财务科目\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"科目代码='\" & txtSubjectID.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

rs(\"科目代码\") = txtSubjectID.Text rs(\"科目名称\") = txtSubjectname.Text

rs(\"科目类别ID\") = cboSubject.ItemData(cboSubject.ListIndex + 1)

45

rs(\"备注\") = txtMemo.Text rs.Update rs.Close

MsgBox \"新财务科目成功修改!\"

Dim strQuery As String strQuery = \"SELECT 科目代码, 科目名称, 科目类别, 备注 FROM 财务科目 AS a, 科目类别 AS b WHERE a.科目类别ID=b.科目类别ID\" Adodc1.RecordSource = strQuery Adodc1.Refresh DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If

End Sub

Private Sub Command4_Click() '删除科目

Dim sql As String

Dim rs As New ADODB.Recordset

If DbHandle.DbConnection Then '打开数据库连接 sql = \"财务科目\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"科目代码='\" & txtSubjectID.Text & \"'\" '选择条件是符合User.Text的管理员记录

rs.Open sql, DbFinance

rs.Filter = \"\" rs.Delete rs.Close

MsgBox \"新财务科目成功删除!\"

Dim strQuery As String

strQuery = \"SELECT 科目代码, 科目名称, 科目类别, 备注 FROM 财务科目 AS a, 科目类别 AS b WHERE a.科目类别ID=b.科目类别ID\" Adodc1.RecordSource = strQuery Adodc1.Refresh

46

DbHandle.DbClose

Else '当数据库连接打不开时候报错 MsgBox \"数据库错误!\ DbHandle.DbClose End End If

End Sub

Private Sub Command5_Click() Me.Hide '返回主窗体 End Sub

Private Sub DataGrid1_Click()

txtSubjectID.Text = DataGrid1.Columns(\"科目代码\").CellValue(DataGrid1.Bookmark) txtSubjectname.Text = DataGrid1.Columns(\"科目名称\").CellValue(DataGrid1.Bookmark)

cboSubject.Text = DataGrid1.Columns(\"科目类别\").CellValue(DataGrid1.Bookmark) txtMemo.Text = DataGrid1.Columns(\"备注\").CellValue(DataGrid1.Bookmark) txtSubjectID.Enabled = False End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2

Dim sql As String

Dim rs As New ADODB.Recordset

If DbHandle.DbConnection Then '打开数据库连接

sql = \"select * from 科目类别\" '对表用户登录进行操作 rs.CursorType = adOpenDynamic rs.LockType = adLockOptimistic

rs.Filter = \"\" '选择条件是符合User.Text的管理员记录 rs.Open sql, DbFinance

Do While rs.EOF = False '循环加入下拉列表中去

cboSubject.AddItem (rs(\"科目类别\"))

cboSubject.ItemData(rs(\"科目类别ID\") - 1) = rs(\"科目类别ID\") rs.MoveNext Loop

47

rs.Close '释放资源 Set rs = Nothing DbHandle.DbClose Else

MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

3.7财务查询界面设计

财务查询是由按日期查询和按财务科目查询两种方式组成。

按日期查询

系统可以要让用户按日期查询,具体设计界面如下:

系统根据开始日期和结束日期到数据库进行查询,看是否有对应的记录,如果没有记录则会提醒用户没找到记录,如果有记录则会在下面的表单提示 该功能的具体实现代码如下:

Private Sub Command1_Click()

If texBegindate.Text = \"\" Then '判断开始日期输入框不为空 MsgBox \"开始日期不能为空!\ texBegindate.SetFocus Exit Sub

48

End If

If texEnddate.Text = \"\" Then '判断结束日期输入框不为空 MsgBox \"结束日期不能为空!\ texEnddate.SetFocus Exit Sub End If

If Not IsDate(texBegindate.Text) Then

MsgBox \"日期输入框不是日期例如:2010-1-2\ texBegindate.SetFocus Exit Sub End If

If Not IsDate(texEnddate.Text) Then

MsgBox \"日期输入框不是日期例如:2010-1-2\ texEnddate.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接

Dim strQuery As String

strQuery = \"SELECT 日记账编号,科目代码,借,贷,记账日期,备注 from 日记账 where 记账日期>= #\" & CDate(texBegindate.Text) & \"# and 记账日期<= #\" & CDate(texEnddate.Text) & \"# order by 日记账编号\" Adodc1.RecordSource = strQuery Adodc1.Refresh

Dim rs As New ADODB.Recordset Set rs = Adodc1.Recordset

If DbHandle.resultcount(rs) = 0 Then '如果找到一条存在的管理员记录就报错

MsgBox \"你所查询的无记录\ rs.Close

DbHandle.DbClose Exit Sub Else

Adodc1.Refresh

'DataGrid1.DataMember= DbHandle.DbClose End If

49

Else

MsgBox \"数据库错误!\ DbHandle.DbClose End End If End Sub

Private Sub Command3_Click() Me.Hide '返回主窗口 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2 End Sub

按科目查询

按科目查询是让用户可以选择对应的科目查询账目 科目查询窗口设计如下:

用户选择对应科目名称或科目代码,系统会到数据库进行查询,如由记录则会显示下面的表格中。

实现功能的代码如下:

Private Sub cboSubjectID_Click()

cboSubjectName.Text = cboSubjectName.List(cboSubjectID.ListIndex) End Sub

Private Sub cboSubjectName_Click()

50

cboSubjectID.Text = cboSubjectID.List(cboSubjectName.ListIndex) End Sub

Private Sub Command1_Click() '查询

If cboSubjectName.Text = \"\" Then '判断科目名称输入框不为空 MsgBox \"科目名称不能为空!\ cboSubjectName.SetFocus Exit Sub End If

If cboSubjectID.Text = \"\" Then '判断科目代码输入框不为空 MsgBox \"科目代码不能为空!\ cboSubjectID.SetFocus Exit Sub End If

If DbHandle.DbConnection Then '打开数据库连接

Dim strQuery As String

strQuery = \"SELECT 日记账编号,科目代码,借,贷,记账日期,备注 from 日记账 where 科目代码= '\" & cboSubjectID.Text & \"'order by 日记账编号\" Adodc2.RecordSource = strQuery Adodc2.Refresh

Dim rs1 As New ADODB.Recordset Set rs1 = Adodc2.Recordset

If DbHandle.resultcount(rs1) = 0 Then '如果找到一条存在的管理员记录就报错

MsgBox \"你所查询的无记录\ rs1.Close

DbHandle.DbClose Exit Sub Else

Adodc2.Refresh DbHandle.DbClose End If Else

MsgBox \"数据库错误!\ DbHandle.DbClose End End If

51

End Sub

Private Sub Command3_Click() Me.Hide '返回主窗口 End Sub

Private Sub Form_Load()

Me.Left = (Screen.Width - Me.ScaleWidth) / 2 '窗体居中显示 Me.Top = (Screen.Height - Me.ScaleHeight) / 2

Dim rs As New ADODB.Recordset Set rs = Adodc1.Recordset

Do While rs.EOF = False '循环加入下拉列表中去 cboSubjectID.AddItem (rs(\"科目代码\")) cboSubjectName.AddItem (rs(\"科目名称\")) rs.MoveNext Loop

End Sub

3.8财务报表生成设计

该模块是让系统将数据库中的试算平衡,损益表,和财务指标以报表的形式显示出来要完成这功能,在系统编写是我添加了一个数据环境来处理与数据库的连接,和对数据的查询,又添加了数据报表来处理生成的数据报表。 对应生成的数据报表如下:

试算平衡生成报表

生成损益表:

52

生成财务指标报表:

53

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务