计算机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
因篇幅问题不能全部显示,请点此查看更多更全内容