📄 modmain.bas
字号:
Attribute VB_Name = "ModMain"
'强制变量声明
Option Explicit
'定义用于存储系统登陆用户名的全局变量
Public strCurUser As String
'定义存储格式化后的日期的全局变量
Public dteSysDate As Date
'定义存储当前窗体句柄的全局变量
Public intNumWindows As Integer
'定义存储数据库连接字符串的全局变量
Public strConnect As String
Sub main()
'显示系统登陆窗体
frmLogin.Show vbModal
'根据frmLoginLogin窗体的Succeeded变量值来判断输入的用户名和密码是否正确
If Not frmLogin.LoginSucceeded Then
'输入的用户名和密码不正确,结束该系统的执行
End
End If
'输入的用户名和密码正确,释放系统登陆窗体
Unload frmLogin
'装载仓库管理系统的主窗体
Load frmMain
'显示仓库管理系统的主窗体
frmMain.Show
'显示系统当前时间的设置窗体
FrmSysDate.Show vbModal
End Sub
Public Sub SetFormStu(mFrmChi As Form, mFrmFat As Form)
mFrmChi.Top = (mFrmFat.Height - mFrmChi.Height) / 2 - 300
mFrmChi.Left = (mFrmFat.Width - mFrmChi.Width) / 2
End Sub
Public Function OpenWindow(intTmp As Integer)
OpenWindow = intTmp + 1
End Function
Public Function Closewindow(intTmp As Integer)
Closewindow = intTmp - 1
End Function
Public Function Product_Status(strProNum As String) As String
'定义返回product表和mat_head表中的物品信息的记录的数据集对象rsProSta
Dim rsProSta As ADODB.Recordset
'定义返回已审核的入库详细信息表中记录的数据集对象rsOrdDA
Dim rsOrdDA As ADODB.Recordset
'定义返回出库详细信息表中记录的数据集对象rsSalDA
Dim rsSalDA As ADODB.Recordset
'定义存储sql语句的变量strSQL
Dim strSQL As String
'定义存储现有物品的数量的变量sngOrdQty和出库数量的变量sngSalQty
Dim sngOrdQty, sngSalQty As Single
'定义存储现有物品的价格的变量CurOrdPrice和出库价格的变量CurSalPrice
Dim CurOrdPrice, CurSalPrice As Currency
'初始化数据集对象rsProSta、rsOrdDA和rsSalDA
Set rsProSta = New ADODB.Recordset
Set rsOrdDA = New ADODB.Recordset
Set rsSalDA = New ADODB.Recordset
'设置并执行sql语句,以返回数据集对象rsProSta,使其包含物品信息
'(物品名称、规格型号、数量和价钱)的记录
strSQL = "select a.product_name,a.product_model,b.qty,b.price from " & _
"product a,mat_head b where a.p_id=b.p_id and a.p_id='" & strProNum & "'"
rsProSta.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
'设置并执行sql语句,以返回数据集对象rsOrdDA,使其包含已审核的入库
'详细信息表中的strProNum指定的物品数量和价格
strSQL = "select p_id,sum(qty) as oqty,sum(price) as oprice from " & _
"order_detail_b where p_id='" & strProNum & "' group by p_id"
rsOrdDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
'设置并执行sql语句,以返回数据集对象rsSalDA,使其包含出库详细信
'息表中的strProNum指定的物品数量和价格
strSQL = "select p_id,sum(qty) as sqty,sum(price) as sprice from " & _
"sale_detail_a where p_id='" & strProNum & "' group by p_id"
rsSalDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
With rsOrdDA
'判断数据集rsOrdDA中的记录是否为空
If .RecordCount <> 0 Then
'数据集rsOrdDA中的记录不为空,将strProNum指定的物品数量和
'价格分别赋值给变量sngOrdQty和CurOrdPrice
sngOrdQty = !oqty
CurOrdPrice = !oprice
Else
'数据集rsOrdDA中的记录为空,将sngOrdQty和CurOrdPrice代表的
'物品数量和价格分别赋值给0
sngOrdQty = 0
CurOrdPrice = 0
End If
End With
With rsSalDA
'判断数据集rsSalDA中的记录是否为空
If .RecordCount <> 0 Then
'数据集rsSalDA中的记录不为空,将strProNum指定的物品数量和
'价格分别赋值给变量sngSalQty和CurSalPrice
sngSalQty = !sqty
CurSalPrice = !sprice
Else
'数据集rsSalDA中的记录为空,将sngSalQty和CurSalPrice代表的
'物品数量和价格分别赋值给0
sngSalQty = 0
CurSalPrice = 0
End If
End With
'判断数据集rsProSta中的记录是否为空
If rsProSta.RecordCount = 0 Then
'数据集rsProSta中的记录为空,设置函数返回值为空,
'以表示strProNum代表的物品的信息为空
Product_Status = ""
Else
'数据集rsProSta中的记录不为空,用变量strsql的值设置函数的返回值,
'以表示strProNum代表的物品的信息
With rsProSta
.MoveFirst
strSQL = !product_name & " " & !product_model & " 数量:" & _
sngOrdQty + !qty - sngSalQty & " 金额:" & CurOrdPrice + !price - CurSalPrice
End With
Product_Status = strSQL
End If
'关闭数据集对象rsProSta
rsProSta.Close
Set rsProSta = Nothing
End Function
'Public Function Sale_Status(strSalNum As String, strUnPr As String) As String
' Dim rsSalSta As ADODB.Recordset
' Dim strSQL As String
' Set rsSalSta = New ADODB.Recordset
' strSQL = "select a.product_name,a.product_model,b.qty from " & _
' "product a,mat_detail b where a.p_id=b.p_id and a.p_id='" & strSalNum _
' & "' and b.unit_price=ccur('" & strUnPr & "')"
' rsSalSta.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
' If rsSalSta.RecordCount = 0 Then
' Sale_Status = ""
' Else
' With rsSalSta
' .MoveFirst
' strSQL = !product_name & " " & !product_model & " 单价:" & _
' strUnPr & " 数量:" & !qty
' End With
' Sale_Status = strSQL
' End If
' rsSalSta.Close
' Set rsSalSta = Nothing
'End Function
Public Function SaleTooLarge(strSaleID As String, _
strSalPro As String, strSalQty As String) As Boolean
'定义返回物品累计信息表中记录的数据集对象rsMatQty
Dim rsMatQty As ADODB.Recordset
'定义返回已审核的入库详细信息表中记录的数据集对象rsOrdDA
Dim rsOrdDA As ADODB.Recordset
'定义返回未审核的出库详细信息表中记录的数据集对象rsSalDA
Dim rsSalDA As ADODB.Recordset
'定义存储sql语句的变量strSQL
Dim strSQL As String
'定义存储现有物品的数量的变量sngMatQty、存储已审核的入库
'单中的物品数量sngOrdQty和出库数量的变量sngSalQty
Dim sngMatQty, sngOrdQty, sngSalQty As Single
'初始化数据集对象rsMatQty、rsOrdDA和rsSalDA
Set rsMatQty = New ADODB.Recordset
Set rsOrdDA = New ADODB.Recordset
Set rsSalDA = New ADODB.Recordset
'设置并执行sql语句,以返回数据集对象rsMatQty,使其包含物
'品汇总信息表中的物品编号 strSalPro 的物品的可用数量
strSQL = "select qty from mat_head where p_id='" & strSalPro & "'"
rsMatQty.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
'设置并执行sql语句,以返回数据集对象rsOrdDA,使其包含未审核的入
'库详细信息表中的物品编号 strSalPro 的物品的数量
strSQL = "select p_id,sum(qty) as oqty from " & _
"order_detail_b where p_id='" & strSalPro & "' group by p_id"
rsOrdDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
'设置并执行sql语句,以返回数据集对象rsSalDA,使其包含出库详细
'信息表中的物品编号 strSalPro 的物品的数量
strSQL = "select p_id,sum(qty) as sqty from " & _
"sale_detail_a where p_id='" & strSalPro & "' and sale_id<>'" & _
strSaleID & "' group by p_id"
rsSalDA.Open strSQL, DEjxc.Conjxc, adOpenStatic, adLockReadOnly
With rsOrdDA
'判断数据集rsOrdDA中的记录数是否为0
If .RecordCount <> 0 Then
'数据集rsOrdDA中的记录数不为0,将strSalPro指定的物品数量赋值
'给变量sngOrdQty,以表示入库详细信息表中的该种物品的数量
sngOrdQty = !oqty
Else
'数据集rsOrdDA中的记录数为0,将变量sngOrdQty置为0,以表示入库
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -