仓库管理系统设计(陈超 )

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

理工学院
MIS课程设计
课程设计题目:仓库管理系统
专业班级:工业工程062班
学生姓名:陈超
学号: 061641204 指导教师:杨明欣
2009年 6月 20日
摘要
本数据库是一个简单仓库管理系统,通过它可以实现对原料,物料,产品的入库,出库等管理,包含注册用户的信息,可以对原料,物料,产品的分种类,分不同型号进行管理,而且对各种各样的查询,以及对各种各样的组合条件的查询也是非常的方便,可以在实践当中运行。

通过它我们可以很方便的给仓库划分种类,使得什么样仓库存什么样的东西,还可以对各种产品以及物料进行很好的管理,还包括可以自己定义仓库中的剩余容量少于多少时给出很友好的提示。

关键词:仓库管理、数据流、E-R、触发器、存储过程
目录
1设计内容与要求 (1)
1.1设计内容 (1)
1.2设计要求 (1)
2需求分析 (2)
2.1系统需求概述 (2)
2.2系统需求说明 (3)
2.2.1 功能需求 (3)
2.2.2 性能需求 (3)
2.3模块分析 (3)
2.3.1总体模块 (3)
2.3.2分模块功能 (4)
2.4数据流图 (4)
2.5数据字典 (5)
2.5.1具体表 (5)
2.5.2表里的具体清单 (5)
3 概念结构设计 (6)
3.1入出库信息尸体E-R图 (6)
3.2货物信息实体E-R图 (6)
3.3用户信息实体E-R图 (7)
4仓库管理系统应用程序设计 (7)
4.1“登陆”模块详细设计 (7)
4.2“主窗体”模块详细设计 (9)
4.3各项子模块详细设计 (12)
5 设计体会与建议 (63)
致谢 (63)
参考文献 (63)
1 设计内容与要求
1.1 设计内容
本次设计是要求设计一个仓库管理系统,能对原料,物料和产品的入库进行分开管理,还能够进行一种或者多种要求的组合的查询。

1.2 设计要求
这个系统设计出来以后能够在实际当中发挥作用,并能够在实际当中给仓库管理员带来方便,也能够在以后有需要的时候能够很方便的进行扩展,很方便的对这个数据库进行维护,而且用较小的资源消耗就能够实现这些基本功能。

这个系统主要能实现以下的功能:
●该系统能够实现对货物的各种信息的查询,并且查询时可以按照以货单号或日期进
行查询,包括逐个浏览,及对货物出入库信息的增加,删除和编辑操作,另外可以根据输入的信息来检索某货物的信息。

●对库房的货物信息进行汇总,其中汇总的主要内容主要包括日期,货单号,货物名
称,货源地,金额等。

汇总时可以按照各种情况进行汇总,比如说按照日期,或者按照条件组合进行汇总。

●另外,管理人员也可以直接增加和删除用户信息。

系统还可以提供一定的附加功能
来方便用户。

2 需求分析
2.1 系统需求概述
近年来,改革开放使我国企业得到了前所未有的发展机遇,同时也面对市场竞争的严重挑战。

虽然我国制造企业飞速发展。

但是,由于制造企业的管理水平低,导致了生产力的降低和众多企业的倒闭。

随着全球范围内大市场的形成与发展,加剧了企业之间在国内外市场的激烈竞争,迫使企业必须从时间、质量、成本和服务上不断增强自己的竞争力以求得生存与发展。

这就要求企业在生产管理上必须做出新的努力,寻求新的理论和技术。

面临这种严峻的形势,我们国家必须引进先进的企业管理思想和技术并不断创新。

信息技术的广泛应用,正改变着企业生产与管理的面貌,信息技术已成为改善生产力、提高产品质量和增加经济效益的主要力量。

近年来为了适应新的竞争形势出现了一些新型生产方式,如计算机集成制造系统、精益生产方式、敏捷制造、虚拟企业等,都是在计算机系统的支持下得以实现的。

这样,又产生了如何在生产管理中应用计算机技术来改善管理工作的问题。

众所周知,企业是通过向社会提供所需要的产品或服务而获得利润的经济组织。

对工业企业而言,企业生产经过原材料购入、产品加工等环节,产生价值的转移,从而生产出社会所需要的新的产品。

在这样的一个从原材料采购到生产,再由生产到销售的过程中,企业必然要对它的各种物资进行有计划的采购、供应、保管、组织和合理使用等一系列的管理工作,通常将上述工作统称为物资管理,物资管理工作的核心是库存控制工作。

此仓库管理系统为了适应新形势的需要,借鉴了MRPⅡ(制造资源计划Manufacturing Resource Planning)的先进管理思想。

其功能覆盖了物料需求和库存控制两个方面的生产经营过程以及相关的财务活动。

从而为制造业管理提供了比较有效的工具。

2.2 系统需求说明
2.2.1 功能需求分析
1、该系统能够实现对货物的各种信息查询,并且查询时可以按照以货单号或日期进行查询,包括逐个浏览,及时出入库信息的增加,删除和编辑操作,另外可以根据输入的信息来检索某货物的信息。

2、对库房的货物进行汇总,其中汇总的内容主要包括日期,货单号,货物名称,货源地,金额等。

汇总时可以按照各种情况进行汇总,比如说按照日期,或者按照条件组合进行汇总。

3、另外,管理人员也可以直接增加和删除用户信息。

系统还可以提供一定的附加功能来方便用户。

2.2.2 性能需求
在保证质量的情况下,提高运行速度,实现界面友好性、易操作性和跨平台性。

“仓库管理系统”应有良好的安全性,系统管理员通过“用户设置”,可以建立任意多个账户并为其设置权限和密码,保证系统信息的保密性。

2.3 模块分析
2.3.1 总体模块
经过整体分析,此系统主要包含以下几个主要模块如图2.1:
图2.1总体模块
2.3.2 分模块功能
系统的各个模块的功能如表2.1演示:
表2.1
2.4数据流图
图2.2数据流图
2.5 数据字典
2.5.1 具体表
本数据库包含以下几个表,见表2.2:
表2.2
2.5.2 表里的具体的列清单
如表2.3所示:
表2.3
3 概念结构设计
3.1入出库信息实体E-R 图
原料-仓库E-R 图
3.2货物信息实体E-R 图
货物
信息实体E-R 图
3.3用户信息实体E-R图
用户信息实体E-R图
4、仓库管理系统应用程序设计
4.1 “登录”模块详细设计
登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。

登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。

通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。

其代码如下:
Private Sub Command1_Click()
Dim sql As String
Dim rs_login As New ADODB.Recordset
If Trim(txtuser.Text) = "" Then '判断输入的用户名是否为空MsgBox "没有这个用户", vbOKOnly + vbExclamation, ""
txtuser.SetFocus
Else
sql = "select * from 系统管理where 用户名='" & txtuser.Text & "'"
rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic
If rs_login.EOF = True Then
MsgBox "没有这个用户", vbOKOnly + vbExclamation, ""
txtuser.SetFocus
Else '检验密码是否正确If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then
userID = txtuser.Text
userpow = rs_login.Fields(2)
rs_login.Close
Unload Me
MDIForm1.Show
Else
MsgBox "密码不正确", vbOKOnly + vbExclamation, ""
txtpwd.SetFocus
End If
End If
End If
cnt = cnt + 1
If cnt = 3 Then
Unload Me
End If
Exit Sub
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim connectionstring As String
connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _
"data source=cangku.mdb"
conn.Open connectionstring
cnt = 0
End Sub
Private Sub Timer1_Timer()
Label3.Caption = Time
Label4.Caption = Date
End Sub
4.2 “主窗体”模块详细设计
在这个项目中,选择使用多文档界面。

使用这个窗体的好处是可以使程序更加有条理。

对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。

主窗体设计的界面是用菜单编辑器做的,主要由系统管理、出库入库、货物详情、货物汇总和关于这五个大模块组成。

主窗体是进行相关操作的主界面。

在这几个里,管理员有所有的权利进行各种操作。

其代码如下:
Private Sub about_Click()
frmabout.Show
End Sub
Private Sub add_user_Click()
adduser.Show
End Sub
Private Sub check_find_Click()
chaxun.Show
End Sub
Private Sub data_manage_Click()
sqlfind = "select * from 入出库"
rs_data1.Open sqlfind, conn, adOpenKeyset, adLockPessimistic kumanage.Show
End Sub
Private Sub exit_Click()
Unload Me
End Sub
Private Sub in_check_Click() jinku.Caption = "入库"
jinku.Show
End Sub
Private Sub MDIForm_Load() frmdata = False
find = False
End Sub
Private Sub modify_pw_Click() changpwd.Show
End Sub
Private Sub out_check_Click() jinku.Caption = "出库"
jinku.Show
End Sub
Private Sub sum_check_date_Click() summary_menu = "check_date" huizong.Show 1
End Sub
Private Sub sum_date_custom_Click() summary_menu = "date_custom" huizong.Show 1
End Sub
Private Sub summary_check_Click()
summary_menu = "check"
huizong.Show 1
End Sub
Private Sub summary_custom_Click()
summary_menu = "custom"
huizong.Show 1
End Sub
Private Sub summary_date_Click()
summary_menu = "date"
huizong.Show 1
End Sub
4.3各项子模块详细设计
选择“系统管理”—>“添加用户”菜单,在添加用户的窗体里,输入新的用户名称和密码后,单击“确定”按钮,系统将会添加新的用户。

其代码如下:
Private Sub Command1_Click()
Dim sql As String
Dim rs_add As New ADODB.Recordset
If Trim(Text1.Text) = "" Then
MsgBox "用户名不能为空", vbOKOnly + vbExclamation, ""
Exit Sub
Text1.SetFocus
Else
If Trim(Text2.Text) = "" Then
MsgBox "密码不能为空", vbOKOnly + vbExclamation, ""
Exit Sub
Text2.SetFocus
Else
sql = "select * from 系统管理"
rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic
While (rs_add.EOF = False)
If Trim(rs_add.Fields(0)) = Trim(Text1.Text) Then
MsgBox "已有这个用户", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Combo1.Text = ""
Exit Sub
Else
rs_add.MoveNext
End If
Wend
If Trim(Text2.Text) <> Trim(Text3.Text) Then
MsgBox "两次密码不一致", vbOKOnly + vbExclamation, ""
Text2.SetFocus
Text2.Text = ""
Text3.Text = ""
Exit Sub
ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, ""
Combo1.SetFocus
Combo1.Text = ""
Exit Sub
Else
rs_add.AddNew
rs_add.Fields(0) = Text1.Text
rs_add.Fields(1) = Text2.Text
rs_add.Fields(2) = Combo1.Text
rs_add.Update
rs_add.Close
MsgBox "添加用户成功", vbOKOnly + vbExclamation, ""
Unload Me
End If
End If
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Combo1.AddItem "system"
Combo1.AddItem "guest"
End Sub
选择“系统管理”—>“修改密码”菜单,在修改密码的窗体里,输入旧密码和2次输入新密码后,单击“确定”按钮,系统将会更改当前用户的密码。

其代码如下:
Private Sub Command1_Click()
'Dim rs_chang As New ADODB.Recordset
'Dim sql As String
If Trim(Text3.Text = "") Then
MsgBox "旧密码不能为空,请重新输入!", vbOKOnly + vbExclamation, "警告"
Text3.SetFocus
Text3.Text = ""
Exit Sub
End If
If Trim(Text1.Text = "") Then
MsgBox "新密码不能为空,请重新输入!", vbOKOnly + vbExclamation, "警告"
Text1.Text = ""
Exit Sub
End If
If Text1.Text <> Text2.Text Then
MsgBox "两次输入的新密码不同,请重新输入!", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Exit Sub
End If
Dim strSql As String
Dim rs As New ADODB.Recordset
strSql = "Select * from 系统管理where 用户名= '" & userID & "'"
rs.Open strSql, conn, adOpenForwardOnly, adLockReadOnly
If Trim(rs.Fields("密码")) <> Trim(Text3.Text) Then
MsgBox "旧密码不对,请重新输入!", vbOKOnly + vbExclamation, "警告"
Text3.SetFocus
Text3.Text = ""
Else
strSql = "Update 系统管理set 密码= '" & Text2.Text & "' where 用户名= '" & userID & "'"
conn.Execute strSql
MsgBox "密码修改成功!", vbOKOnly + vbInformation, "提示"
Text3.Text = ""
Text2.Text = ""
Unload Me
End If
rs.Close
Set rs = Nothing
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
选择“入库出库”—>“入库出库”菜单进入界面
其代码如下:
Option Explicit
Dim rs_checkname As New ADODB.Recordset '货源地对应的数据对象Dim rs_custom As New ADODB.Recordset '客户名对应的数据对象Const row_num = 10 '表格行数
Const col_num = 6 '表格列数
Private Sub Combo2_Click()
MSFlexGrid1.Text = Combo2.Text
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
MSFlexGrid1.Col = 0
Combo2.Visible = False
Text5.Visible = True
nextposition MSFlexGrid1.Row, MSFlexGrid1.Col
End Sub
Private Sub Command1_Click()
Dim rs_save As New ADODB.Recordset
Dim sql As String
Dim i As Integer
Dim s As String '转化数据用On Error GoTo saveerror
If Trim(Text1.Text) = "" Then
MsgBox "货单不能为空!", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Exit Sub
End If
If Combo1.Text = "" Then
MsgBox "请选择货源地!", vbOKOnly + vbExclamation, ""
Combo1.SetFocus
Exit Sub
End If
If comboy.Text = "" Then
MsgBox "请选择年份!", vbOKOnly + vbExclamation, ""
comboy.SetFocus
Exit Sub
End If
If combom.Text = "" Then
MsgBox "请选择月份!", vbOKOnly + vbExclamation, ""
combom.SetFocus
Exit Sub
End If
If combod.Text = "" Then
MsgBox "请选择日期!", vbOKOnly + vbExclamation, ""
combod.SetFocus
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "请填写凭证号!", vbOKOnly + vbExclamation, ""
Text2.SetFocus
Exit Sub
End If
If Text3.Text = "" Then
MsgBox "请填写经手人!", vbOKOnly + vbExclamation, ""
Text3.SetFocus
Exit Sub
End If
If MSFlexGrid1.Col <> 0 Then
MsgBox "请输入完整的物品信息!", vbOKOnly + vbExclamation, ""
MSFlexGrid1.SetFocus
Exit Sub
End If
sql = "select * from 入出库where 货单号='" & Text1.Text & "'"
rs_save.Open sql, conn, adOpenKeyset, adLockPessimistic
If rs_save.EOF Then
rs_save.AddNew
rs_save.Fields(0) = Trim(Text1.Text)
rs_save.Fields(1) = CDate(Trim(comboy.Text) & "-" & Trim(combom.Text) & "-" & Trim(combod.Text))
rs_save.Fields(2) = Trim(Combo1.Text)
rs_save.Fields(3) = Trim(Text2.Text)
rs_save.Fields(4) = Trim(Text3.Text)
rs_save.Fields(5) = Trim(Text4.Text)
If jinku.Caption = "入库" Then '入出库标记
rs_save.Fields(6) = True
Else
rs_save.Fields(6) = False
End If
rs_save.Update
rs_save.Close
Else
MsgBox "货单号重复!", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1.Text = ""
rs_save.Close
Exit Sub
End If
sql = "select * from 货物详况"
rs_save.Open sql, conn, adOpenKeyset, adLockPessimistic
For i = 1 To MSFlexGrid1.Row - 1
rs_save.AddNew
rs_save.Fields(0) = Trim(Text1.Text)
rs_save.Fields(1) = CDate(Trim(comboy.Text) & "-" & Trim(combom.Text) & "-" & Trim(combod.Text))
rs_save.Fields(2) = Trim(Combo1.Text)
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0
rs_save.Fields(3) = Trim(MSFlexGrid1.Text)
MSFlexGrid1.Col = 1
If jinku.Caption = "出库" Then
s = "-" & Trim(MSFlexGrid1.Text)
rs_save.Fields(4) = CDbl(s)
Else
rs_save.Fields(4) = CDbl(Trim(MSFlexGrid1.Text))
End If
MSFlexGrid1.Col = 2
rs_save.Fields(5) = Trim(MSFlexGrid1.Text)
MSFlexGrid1.Col = 3
rs_save.Fields(6) = Trim(MSFlexGrid1.Text)
MSFlexGrid1.Col = 4
If jinku.Caption = "出库" Then
s = "-" & Trim(MSFlexGrid1.Text)
rs_save.Fields(7) = CDbl(s)
Else
rs_save.Fields(7) = CDbl(Trim(MSFlexGrid1.Text)) End If
MSFlexGrid1.Col = 5
rs_save.Fields(8) = Trim(MSFlexGrid1.Text)
Next i
rs_save.Update
rs_save.Close
MsgBox "添加成功!", vbOKOnly + vbExclamation, "" Unload Me
Exit Sub
saveerror:
MsgBox Err.Description
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim sql As String
Dim i As Integer
On Error GoTo loaderror
sql = "select * from 货源地"
rs_checkname.CursorLocation = adUseClient
rs_checkname.Open sql, conn, adOpenKeyset, adLockPessimistic
sql = "select * from 客户名"
rs_custom.CursorLocation = adUseClient
rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic
While Not rs_custom.EOF
Combo2.AddItem rs_custom.Fields(0)
rs_custom.MoveNext
Wend
If Not rs_checkname.EOF Then
rs_checkname.MoveFirst
While Not rs_checkname.EOF '添加可选择的货源地Combo1.AddItem rs_checkname.Fields(0)
rs_checkname.MoveNext
Wend
End If
comboy.AddItem 2002 '添加年份comboy.AddItem 2003
comboy.AddItem 2004
comboy.AddItem 2005
For i = 1 To 12 '添加月份combom.AddItem i
Next i
For i = 1 To 31 '添加日期combod.AddItem i
Next i
setgrid
setgrid_head
Text5.Visible = False
clear_grid
Exit Sub
loaderror:
MsgBox Err.Description
End Sub
Private Sub Form_Unload(Cancel As Integer)
'关闭数据对象
rs_checkname.Close
rs_custom.Close
End Sub
Public Sub setgrid() '设置表格子程序Dim i As Integer
On Error GoTo seterror
MSFlexGrid1.ScrollBars = flexScrollBarBoth MSFlexGrid1.FixedCols = 0
MSFlexGrid1.Rows = row_num
MSFlexGrid1.Cols = col_num
MSFlexGrid1.SelectionMode = flexSelectionByRow For i = 0 To row_num - 1
MSFlexGrid1.RowHeight(i) = 315
Next
For i = 0 To col_num - 1
MSFlexGrid1.ColWidth(i) = 1300 Next i
Exit Sub
seterror:
MsgBox Err.Description
End Sub
Public Sub setgrid_head()
On Error GoTo setheaderror MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "物品名称" MSFlexGrid1.Col = 1
MSFlexGrid1.Text = " 单价" MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "数量" MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "单位" MSFlexGrid1.Col = 4
MSFlexGrid1.Text = " 金额" MSFlexGrid1.Col = 5
MSFlexGrid1.Text = "客户名"
Exit Sub
setheaderror:
MsgBox Err.Description
End Sub
Public Sub clear_grid()
Dim i As Integer, j As Integer
For i = 1 To row_num - 1
MSFlexGrid1.Row = i
For j = 0 To col_num - 1
MSFlexGrid1.Col = j
MSFlexGrid1.Text = ""
Next j
Next i
End Sub
Public Sub nextposition(ByVal r As Integer, ByVal c As Integer) On Error GoTo nexterror
Text5.Width = MSFlexGrid1.CellWidth
Text5.Height = MSFlexGrid1.CellHeight
Text5.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(c) Text5.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(r) Text5.Text = MSFlexGrid1.Text
Text5.Visible = True
Text5.SetFocus
Exit Sub
nexterror:
MsgBox Err.Description
End Sub
Private Sub MSFlexGrid1_Click()
If Combo2.Visible = True Then
Exit Sub
End If
nextposition MSFlexGrid1.Row, MSFlexGrid1.Col
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
Dim i As Integer, j As Integer
Dim price As Double, coun As Integer
On Error GoTo texterror
If KeyAscii = keyenter Then
MSFlexGrid1.Text = Text5.Text
i = MSFlexGrid1.Row
j = MSFlexGrid1.Col
If j = 0 And Trim(Text5.Text) = "" Then
MsgBox "物品名称不能为空", vbOKOnly + vbExclamation, ""
Text5.SetFocus
Exit Sub
End If
If j = 1 And Not IsNumeric(Text5.Text) Then
MsgBox "单价请输入数字!", vbOKOnly + vbExclamation, ""
Text5.SetFocus
Exit Sub
End If
If j = 2 And Not IsNumeric(Text5.Text) Then
MsgBox "数量请输入数字!", vbOKOnly + vbExclamation, ""
Text5.SetFocus
Exit Sub
End If
If j = 3 And Trim(Text5.Text) = "" Then
MsgBox "单位不能为空!", vbOKOnly + vbExclamation, ""
Text5.SetFocus
Exit Sub
End If
If j = 3 And Not IsNull(Text5.Text) Then
MSFlexGrid1.Col = 1 '金额由程序算出
price = CDbl(MSFlexGrid1.Text)
MSFlexGrid1.Col = 2
coun = CInt(MSFlexGrid1.Text)
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = price * coun
MSFlexGrid1.Col = MSFlexGrid1.Col + 1
Text5.Visible = False
setcombo2 MSFlexGrid1.Row, MSFlexGrid1.Col
KeyAscii = 0
Exit Sub
End If
MSFlexGrid1.Col = MSFlexGrid1.Col + 1
KeyAscii = 0
nextposition MSFlexGrid1.Row, MSFlexGrid1.Col
End If
Exit Sub
texterror:
MsgBox Err.Description
End Sub
Public Sub setcombo2(ByVal r As Integer, ByVal c As Integer)
On Error GoTo seterror
Combo2.Width = MSFlexGrid1.CellWidth
Combo2.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(c)
Combo2.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(r)
Combo2.Text = MSFlexGrid1.Text
Combo2.Visible = True
Combo2.SetFocus
Exit Sub
seterror:
MsgBox Err.Description
End Sub
选择“货物详况”—>“货物管理”菜单,在其他项目设置的窗体中,查看货物管理情况。

其代码如下:
Option Explicit
Dim rs_data2 As New ADODB.Recordset
Dim select_row As String
Dim showgrid2 As Boolean
Dim rs_custom As New ADODB.Recordset
Dim jinchu As String '入出库标志
Dim modify As Boolean '修改状态标志Private Sub cmdadd_Click()
On Error GoTo adderror
Dim r As Integer
Dim i As Integer
If rs_data2.BOF = True Then
MsgBox "没有明细记录无法添加!", vbOKOnly
Exit Sub
ElseIf cmdadd.Caption = "增加明细" Then
cmdadd.Caption = "确定"
cmdexit.Enabled = False
cmdmodify.Enabled = False
cmddel.Enabled = False
cmdcancel.Enabled = True
Text1.Text = ""
With MSFlexGrid2
.Rows = rs_data2.RecordCount + 2
.Row = rs_data2.RecordCount + 1
.Col = 0
.Text = rs_data2.Fields("货单号")
.Col = 1
.Text = rs_data2.Fields("日期")
.Col = 2
.Text = rs_data2.Fields("货源地")
.Col = 3
End With
nextpos MSFlexGrid2.Row, MSFlexGrid2.Col
Else
rs_data2.AddNew
For i = 0 To 8
MSFlexGrid2.Col = i
If i = 4 Or i = 7 Then
If jinchu = "出库" Then
rs_data2.Fields(i) = -CDbl(Trim(MSFlexGrid2.Text))
Else
rs_data2.Fields(i) = CDbl(Trim(MSFlexGrid2.Text))
End If
Else
rs_data2.Fields(i) = MSFlexGrid2.Text
End If
Next i
rs_data2.Update
MsgBox "增加信息成功!", vbOKOnly + vbExclamation, ""
cmdadd.Caption = "增加明细"
cmdmodify.Enabled = True
cmddel.Enabled = True
cmdexit.Enabled = True
cmdcancel.Enabled = False
Combo1.Visible = False
End If
Exit Sub
adderror:
MsgBox Err.Description
'End If
'End If
End Sub
Private Sub cmdcancel_Click()
If cmdadd.Caption = "确定" Then
cmdadd.Caption = "增加明细"
cmdmodify.Enabled = True
ElseIf cmdmodify.Caption = "确定" Then
cmdmodify.Caption = "修改明细"
cmdadd.Enabled = True
End If
Text1.Visible = False
cmddel.Enabled = True
cmdexit.Enabled = True
cmdcancel.Enabled = False
showdata
End Sub
Private Sub cmddel_Click()
Dim answer As String
Dim delete_row As String
Dim cmd As New Command
Dim sql As String
On Error GoTo delerror
Set cmd.ActiveConnection = conn
If rs_data2.BOF = True Then
MsgBox "已经没有明细记录,只能删除当前进出清单", vbOKOnly delete_row = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0)
sql = "Delete from 入出库where 货单号='" & delete_row & "'"
mandText = sql
cmd.Execute
Unload Me
Else
answer = MsgBox("确定要删除吗?", vbYesNo, "")
If answer = vbYes Then
delete_row = MSFlexGrid2.TextMatrix(MSFlexGrid2.Row, 3)
sql = "Delete from 货物详况where 物品名称='" & delete_row & "'"
mandText = sql
cmd.Execute
MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
MSFlexGrid1_Click
Else
Exit Sub
End If
End If
Exit Sub
delerror:
MsgBox Err.Description
End Sub
Private Sub cmdexit_Click()
Unload Me
End Sub
Private Sub cmdmodify_Click()
On Error GoTo modifyerror
Dim i As Integer
Dim j As Integer
If rs_data2.BOF = True Then
MsgBox "没有明细记录无法修改!", vbOKOnly
Exit Sub
Else
If modify = False Then
MsgBox "无法修改,请选择货物!", vbOKOnly + vbExclamation, ""
Exit Sub
Else
If cmdmodify.Caption = "修改明细" Then
cmdmodify.Caption = "确定"
cmdexit.Enabled = False
cmdadd.Enabled = False
cmddel.Enabled = False
cmdcancel.Enabled = True
MSFlexGrid2.Row = 1
MSFlexGrid2.Col = 3
Text1.Text = MSFlexGrid2.Text
nextpos MSFlexGrid2.Row, MSFlexGrid2.Col
Else
MSFlexGrid2.Row = 1
For i = 0 To rs_data2.RecordCount - 1
MSFlexGrid2.Row = i + 1
For j = 0 To 8
MSFlexGrid2.Col = j
If j = 4 Or j = 7 Then
If jinchu = "出库" Then
rs_data2.Fields(j) = -CDbl(Trim(MSFlexGrid2.Text))
Else
rs_data2.Fields(j) = CDbl(Trim(MSFlexGrid2.Text))
End If
Else
rs_data2.Fields(j) = MSFlexGrid2.Text
End If
Next j
Next i
rs_data2.Update
MsgBox "修改信息成功!", vbOKOnly + vbExclamation, ""
cmdmodify.Caption = "修改明细"
cmdadd.Enabled = True
cmddel.Enabled = True
cmdexit.Enabled = True
cmdcancel.Enabled = False
Combo1.Visible = False
Text1.Visible = False
End If
End If
End If
modifyerror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Private Sub Combo1_Click()
MSFlexGrid2.Text = Combo1.Text
Combo1.Visible = False
If MSFlexGrid2.Row <> MSFlexGrid2.Rows - 1 Then '如果不是最后一行MSFlexGrid2.Row = MSFlexGrid2.Row + 1
MSFlexGrid2.Col = 3
nextpos MSFlexGrid2.Row, MSFlexGrid2.Col
End If
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Combo1.Visible = False
If KeyAscii = 13 And MSFlexGrid2.Row <> MSFlexGrid2.Rows - 1 Then MSFlexGrid2.Row = MSFlexGrid2.Row + 1
MSFlexGrid2.Col = 3
nextpos MSFlexGrid2.Row, MSFlexGrid2.Col
End If
End Sub
Private Sub Form_Load()
On Error GoTo loaderror
Dim sql As String
sql = "select * from 客户名"
rs_custom.CursorLocation = adUseClient
rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic
While Not rs_custom.EOF
Combo1.AddItem rs_custom.Fields(0)
rs_custom.MoveNext
Wend
findok = True
modify = False '非修改状态
showgrid2 = False
cmdcancel.Enabled = False
displaygrid1 '调用显示Datagrid1子程序setgrid2head
loaderror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
'显示msflexgrid1子程序
Public Sub displaygrid1()
Dim i As Integer
On Error GoTo displayerror
setgrid
setgridhead
MSFlexGrid1.Row = 0
If Not rs_data1.EOF Then
rs_data1.MoveFirst
Do While Not rs_data1.EOF
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
MSFlexGrid1.Col = 0
If Not IsNull(rs_data1.Fields(0)) Then MSFlexGrid1.Text = rs_data1.Fields(0) Else MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 1
If Not IsNull(rs_data1.Fields(1)) Then MSFlexGrid1.Text = rs_data1.Fields(1) Else MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 2
If Not IsNull(rs_data1.Fields(2)) Then MSFlexGrid1.Text = rs_data1.Fields(2) Else MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 3
If Not IsNull(rs_data1.Fields(3)) Then MSFlexGrid1.Text = rs_data1.Fields(3) Else MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 4
If Not IsNull(rs_data1.Fields(4)) Then MSFlexGrid1.Text = rs_data1.Fields(4) Else MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 5
If Not IsNull(rs_data1.Fields(5)) Then MSFlexGrid1.Text = rs_data1.Fields(5) Else MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 6
If rs_data1.Fields(6) = True Then MSFlexGrid1.Text = "入库" Else MSFlexGrid1.Text = "出库"
rs_data1.MoveNext
Loop
End If
displayerror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Public Sub setgrid()
Dim i As Integer
On Error GoTo seterror
With MSFlexGrid1
.ScrollBars = flexScrollBarBoth
.FixedCols = 0
.Rows = rs_data1.RecordCount + 1
.Cols = 7
.SelectionMode = flexSelectionByRow For i = 0 To .Rows - 1
.RowHeight(i) = 315
Next
For i = 0 To .Cols - 1
.ColWidth(i) = 1300
Next i
End With
Exit Sub
seterror:
MsgBox Err.Description
End Sub
Public Sub setgridhead()
On Error GoTo setheaderror MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "货单号"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "日期"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "货源地"
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "编号"
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = " 经手人"
MSFlexGrid1.Col = 5
MSFlexGrid1.Text = "备注"
MSFlexGrid1.Col = 6
MSFlexGrid1.Text = "入出库"
Exit Sub
setheaderror:
MsgBox Err.Description
End Sub
Private Sub MSFlexGrid1_Click()
On Error GoTo griderror
Dim getrow As Long
If showgrid2 = True Then
rs_data2.Close
End If
getrow = MSFlexGrid1.Row
If MSFlexGrid1.Rows = 1 Then
MsgBox "无相关纪录", vbOKOnly + vbExclamation, ""
Else
select_row = MSFlexGrid1.TextMatrix(getrow, 0)
'入出库标志
jinchu = MSFlexGrid1.TextMatrix(getrow, 6)
displaygrid2
modify = True
End If
griderror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Public Sub displaygrid2()
Dim sql As String
Dim i As Integer
On Error GoTo displaybasicerror
sql = "select * from 货物详况where 货单号=" & "'" & select_row & "'" rs_data2.Open sql, conn, adOpenKeyset, adLockPessimistic
showdata
showgrid2 = True
Exit Sub
displaybasicerror:
MsgBox Err.Description
End Sub
Public Sub setgrid2head()
Dim i As Integer
On Error GoTo set2error
With MSFlexGrid2
.ScrollBars = flexScrollBarBoth
.FixedCols = 0
.Cols = 9
.SelectionMode = flexSelectionByRow For i = 0 To .Rows - 1
.RowHeight(i) = 315
Next
For i = 0 To .Cols - 1
.ColWidth(i) = 1000
Next i
.Row = 0
.Col = 0
.Text = "货单号"
.Col = 1
.Text = "日期"
.Col = 2
.Text = "货源地"
.Col = 3
.Text = "物品名称"
.Col = 4
.Text = "单价"
.Col = 5
.Text = "数量"
.Col = 6
.Text = "单位"
.Col = 7
.Text = "金额"
.Col = 8
.Text = "客户名"
End With
Exit Sub
set2error:
MsgBox Err.Description
End Sub
Public Sub showdata()
With MSFlexGrid2
.Rows = rs_data2.RecordCount + 1
.Row = 0
'rs_data2.RecordCount.Open
'MSFlexGrid2.Rows = rs_data2.RecordCount + 1
'MSFlexGrid2.Row = 0
If Not rs_data2.EOF Then
rs_data2.MoveFirst
Do While Not rs_data2.EOF
.Row = .Row + 1
.Col = 0
If Not IsNull(rs_data2.Fields(0)) Then .Text = rs_data2.Fields(0) Else .Text = ""
.Col = 1
If Not IsNull(rs_data2.Fields(1)) Then .Text = rs_data2.Fields(1) Else .Text = ""
.Col = 2
If Not IsNull(rs_data2.Fields(2)) Then .Text = rs_data2.Fields(2) Else .Text = ""
.Col = 3
If Not IsNull(rs_data2.Fields(3)) Then .Text = rs_data2.Fields(3) Else .Text = ""
.Col = 4
If Not IsNull(rs_data2.Fields(4)) And CDbl(rs_data2.Fields(4)) < 0 Then
.Text = -CDbl(rs_data2.Fields(4))
Else
.Text = rs_data2.Fields(4)
End If
.Col = 5
If Not IsNull(rs_data2.Fields(5)) Then .Text = rs_data2.Fields(5) Else .Text = ""
.Col = 6
If Not IsNull(rs_data2.Fields(6)) Then .Text = rs_data2.Fields(6) Else .Text = ""
.Col = 7
If Not IsNull(rs_data2.Fields(7)) And CDbl(rs_data2.Fields(4)) < 0 Then
.Text = -CDbl(rs_data2.Fields(7))
Else
.Text = rs_data2.Fields(7)
End If
.Col = 8。

相关文档
最新文档