欢迎光临散文网 会员登陆 & 注册

货品库存管理系统-单机版(2) VBA代码 源代码分析 Access数据库管理系统

2022-09-18 23:43 作者:凌霄百科  | 我要投稿

 

代码较多,建议复制代码至本地文档后可按窗体名称搜索

货品管理

Option Compare Database

Option Explicit

 

Public update_num As Integer

 

 

Private Sub Command更新_Click()

On Error Resume Next

If 货品编号 = "" Or IsNull(货品编号) = True Then

MsgBox "货品编号值为空!"

Exit Sub

End If

update_num = 1

If MsgBox("是否更新该记录", vbYesNo) <> vbYes Then

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

DoCmd.SetWarnings (False)

On Error Resume Next

DoCmd.RunCommand acCmdSaveRecord

 

Exit Sub

If Error.Number <> 0 Then

MsgBox Error.Description

Else

 

End If

End Sub

 

Private Sub Command删除_Click()

If MsgBox("是否删除该记录", vbYesNo) <> vbYes Then

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

DoCmd.RunCommand acCmdDeleteRecord

MsgBox "删除成功"

DoCmd.Close acForm, Me.Name

If Error.Number <> 0 Then

MsgBox Error.Description

End If

End Sub

 

 

Private Sub Form_BeforeUpdate(Cancel As Integer)

On Error GoTo 数据更新前提醒_Err

 

If update_num = 1 Then

update_num = 0

Exit Sub

End If

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

 

Private Sub Form_Close()

On Error Resume Next

Forms("货品查询").数据表子窗体.Requery

End Sub

 

 

 

货品类别数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If gx_num = 0 Then

Exit Sub

End If

 

On Error GoTo 数据更新前提醒_Err

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

货品数据表

Option Compare Database

 

Private Sub Form_BeforeUpdate(Cancel As Integer)

If gx_num = 0 Then

Exit Sub

End If

 

On Error GoTo 数据更新前提醒_Err

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

 

Private Sub 货品编号_DblClick(Cancel As Integer)

If hp_type = 0 Then

DoCmd.OpenForm "货品管理", acNormal, , "货品编号='" & 货品编号 & "'"

Exit Sub

End If

If hp_type = 1 Then     '明细台账

Forms("明细台账").选择货品.Value = Me.货品编号

Forms("明细台账").货品编号.Value = ""

mxtz_a1 = 1

DoCmd.Close acForm, "货品选择"

Exit Sub

End If

 

If hp_type = 2 Then     '明细台账

Forms("出入库统计查询").选择货品.Value = Me.货品编号

Forms("出入库统计查询").数据表子窗体.Form.Filter = "货品编号='" & Me.货品编号 & "'"

Forms("出入库统计查询").数据表子窗体.Form.FilterOn = True

DoCmd.Close acForm, "货品选择"

Exit Sub

End If

 

If hp_type = 3 Then

rkhp_num = 1

rkhp_text = Me.货品编号

DoCmd.Close acForm, "货品选择"

Exit Sub

End If

 

If hp_type = 4 Then

ckhp_num = 1

ckhp_text = Me.货品编号

DoCmd.Close acForm, "货品选择"

Exit Sub

End If

 

End Sub

 

 

货品添加

Option Compare Database

Option Explicit

 

Private Sub Command导入_Click()

On Error GoTo inputerror

Dim upfilename As String

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)

With dlgOpen

.AllowMultiSelect = False

.Filters.Add "Excel", "*.xlsx; *.xlsm", 1

     If .Show = -1 Then

        upfilename = .SelectedItems(1)

     Else

        Exit Sub

     End If

End With

 

'------------------------------------------------清空表数据

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 本地货品表"

DoCmd.RunSQL del_sql

'------------------------------------------

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("本地货品表", dbOpenTable)

'打开创建的表并处理数据

Dim excelopenpathname As String

excelopenpathname = upfilename     '复制粘贴新Excel文件的路径和名称

'处理打开的表数据

Dim xlapp As excel.Application

Dim xlwbk As excel.Workbook

Dim xlwsh As excel.Worksheet

Set xlapp = New excel.Application

Dim CreateExcel As Object

Set CreateExcel = xlapp

xlapp.Visible = True

Set xlwbk = xlapp.WorkBooks.Open(excelopenpathname)

xlwbk.Activate

Set xlwsh = xlwbk.Worksheets(1)

With xlwsh

    Dim i

    On Error Resume Next

    '--------------------------------------------------处理过程

    If .cells(2, 1).Value <> "" Then

    Else

    GoTo exitexcel

    End If

    For i = 2 To .Range("A1").End(xlDown).Row

        add_rs.AddNew

add_rs!货品编号.Value = .cells(i, 1).Value

add_rs!货品名称.Value = .cells(i, 2).Value

add_rs!规格型号.Value = .cells(i, 3).Value

add_rs!单位.Value = .cells(i, 4).Value

add_rs!入库价.Value = .cells(i, 5).Value

add_rs!出库价.Value = .cells(i, 6).Value

add_rs!货品类别.Value = .cells(i, 7).Value

add_rs!期初库存.Value = .cells(i, 8).Value

add_rs!期初金额.Value = .cells(i, 9).Value

add_rs!最低库存.Value = .cells(i, 10).Value

add_rs!最高库存.Value = .cells(i, 11).Value

add_rs!备注.Value = .cells(i, 12).Value

 

 

        add_rs.Update

    Next i

End With

exitexcel:

xlwbk.Save

xlwbk.Close

xlapp.Quit

 

'------------------------------------------

Me.数据表子窗体.Requery

Exit Sub

inputerror:

MsgBox Err.Description

End Sub

 

Private Sub Command清空_Click()

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

入库价.Value = ""

出库价.Value = ""

货品类别.Value = ""

期初库存.Value = ""

期初金额.Value = ""

最低库存.Value = ""

最高库存.Value = ""

备注.Value = ""

 

 

End Sub

 

Private Sub Command上传_Click()

On Error GoTo 上传数据失败错误

 

If MsgBox("是否将数据添加至货品表,注意:重复的货品编号将不会添加", vbOKCancel) <> vbOK Then

Exit Sub

End If

 

If Nz(DCount("货品编号", "本地货品表"), 0) = 0 Then    '上传货品记录数量

Exit Sub

End If

 

'---------------------------------------------------------------查询前端

Dim search_rs As DAO.Recordset

Dim search_sql As String

search_sql = "Select * From 本地货品表"

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

'---------------------------------------------------------------建立查询

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("货品表", dbOpenTable)

'---------------------------------------------------------------

 

On Error Resume Next

Do While search_rs.EOF = False

 

 

If search_rs!货品编号.Value <> "" Then

add_rs.AddNew

 

add_rs!货品编号.Value = search_rs!货品编号.Value

add_rs!货品名称.Value = search_rs!货品名称.Value

add_rs!规格型号.Value = search_rs!规格型号.Value

add_rs!单位.Value = search_rs!单位.Value

add_rs!入库价.Value = search_rs!入库价.Value

add_rs!出库价.Value = search_rs!出库价.Value

add_rs!货品类别.Value = search_rs!货品类别.Value

add_rs!期初库存.Value = search_rs!期初库存.Value

add_rs!期初金额.Value = search_rs!期初金额.Value

add_rs!最低库存.Value = search_rs!最低库存.Value

add_rs!最高库存.Value = search_rs!最高库存.Value

add_rs!备注.Value = search_rs!备注.Value

 

add_rs.Update

End If

 

search_rs.MoveNext

Loop

'---------------------------------------------------------------断开后端链接

 

add_rs.Close

Set add_rs = Nothing

 

'---------------------------------------------------------------断开前端链接

search_rs.Close

Set search_rs = Nothing

 

MsgBox "上传数据完成"

Exit Sub

上传数据失败错误:

MsgBox "上传数据失败!" & vbCrLf & Err.Description

 

End Sub

 

Private Sub Command添加_Click()

On Error GoTo 添加失败错误

 

If 货品编号 = "" Or IsNull(货品编号) = True Then

MsgBox "货品编号值为空!"

Exit Sub

End If

 

 

 

If Nz(DCount("货品编号", "货品表", "货品编号='" & Me.货品编号 & "'"), 0) > 0 Then

MsgBox "该货品编号已存在!"

Exit Sub

End If

 

 

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("货品表", dbOpenTable)

add_rs.AddNew

'--------------------------------------------------------------字段赋值

On Error Resume Next

With add_rs

add_rs!货品编号.Value = 货品编号.Value

add_rs!货品名称.Value = 货品名称.Value

add_rs!规格型号.Value = 规格型号.Value

add_rs!单位.Value = 单位.Value

add_rs!入库价.Value = 入库价.Value

add_rs!出库价.Value = 出库价.Value

add_rs!货品类别.Value = 货品类别.Value

add_rs!期初库存.Value = 期初库存.Value

add_rs!期初金额.Value = 期初金额.Value

add_rs!最低库存.Value = 最低库存.Value

add_rs!最高库存.Value = 最高库存.Value

add_rs!备注.Value = 备注.Value

 

 

End With

'----------------------------------------------------------

add_rs.Update

add_rs.Close

Set add_rs = Nothing

'----------------------------------------------------------

 

MsgBox "添加成功!"

Call Command清空_Click

 

Exit Sub

添加失败错误:

MsgBox Err.Description

End Sub

 

Private Sub Form_Close()

On Error Resume Next

hp_filter = ""

Forms("货品查询").数据表子窗体.Requery

 

End Sub

 

Private Sub Form_Load()

DoCmd.Restore

 

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 本地货品表"

DoCmd.RunSQL del_sql

Me.数据表子窗体.Requery

End Sub

 

 

 

 

 

货品选择

Option Compare Database

Option Explicit

 

 

Private Sub Command查询_Click()

On Error GoTo 结束查询

Dim search_field As String

If Me.查询字段 = "日期" Then

 

    If 起始日期 <> "" And IsNull(起始日期) = False And 截止日期 <> "" And IsNull(截止日期) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

        search_field = Me.查询字段

        hp_filter = search_field & " between #" & Me.起始日期 & "# and #" & Me.截止日期 & "#"

        Me.数据表子窗体.Form.Filter = hp_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

 

    Else

        hp_filter = ""

        Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

 

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

If Me.查询字段 = "入库价" Or Me.查询字段 = "出库价" Or Me.查询字段 = "期初库存" Or Me.查询字段 = "期初金额" Or Me.查询字段 = "最低库存" Or Me.查询字段 = "最高库存" Then

    If 最小 <> "" And IsNull(最小) = False And 最大 <> "" And IsNull(最大) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

 

 

        search_field = Me.查询字段

        hp_filter = search_field & " >= " & Me.最小 & " And " & search_field & " <= " & Me.最大

        Me.数据表子窗体.Form.Filter = hp_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

    Else

        hp_filter = ""

        Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

 

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

 

    search_field = Me.查询字段

    hp_filter = search_field & " like '*" & Me.查询内容 & "*'"

    Me.数据表子窗体.Form.Filter = hp_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

 

Else

    hp_filter = ""

    Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

End If

    Me.数据表子窗体.SetFocus

    Exit Sub

结束查询:

    MsgBox Err.Description

End Sub

 

 

 

 

Private Sub Command全部_Click()

hp_filter = ""

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

 

 

 

Private Sub Command数据导出_Click()

On Error GoTo 导出失败

'------------------------------------------------清空表数据

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 导出货品表"

DoCmd.RunSQL del_sql

 

 

 

Dim dflink_sql As String

 

hp_filter = Me.数据表子窗体.Form.Filter

 

If hp_filter <> "" And Me.数据表子窗体.Form.FilterOn = True Then

dflink_sql = "SELECT * FROM 货品表 " & " Where " & hp_filter

Else

dflink_sql = "SELECT * FROM 货品表"

End If

 

hp_order = Me.数据表子窗体.Form.OrderBy

 

If hp_order <> "" Then

dflink_sql = dflink_sql & " order by " & hp_order

End If

 

Dim dflink_rs As DAO.Recordset

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("导出货品表", dbOpenTable)

Do While .EOF = False

 

add_rs.AddNew

 

add_rs!货品编号.Value = !货品编号.Value

add_rs!货品名称.Value = !货品名称.Value

add_rs!规格型号.Value = !规格型号.Value

add_rs!单位.Value = !单位.Value

add_rs!入库价.Value = !入库价.Value

add_rs!出库价.Value = !出库价.Value

add_rs!货品类别.Value = !货品类别.Value

add_rs!期初库存.Value = !期初库存.Value

add_rs!期初金额.Value = !期初金额.Value

add_rs!最低库存.Value = !最低库存.Value

add_rs!最高库存.Value = !最高库存.Value

add_rs!备注.Value = !备注.Value

 

 

 

add_rs.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

 

Call 导出查询表结果("导出货品表")

 

Exit Sub

导出失败:

MsgBox Err.Description

End Sub

 

Private Sub Command添加_Click()

DoCmd.OpenForm "货品添加", acNormal

End Sub

 

Private Sub Form_Load()

DoCmd.Restore

 

 

hp_filter = ""

hp_order = "货品编号 DESC"

 

 

Me.数据表子窗体.Form.OrderBy = hp_order

Me.数据表子窗体.Form.OrderByOn = True

 

 

Me.查询内容.Visible = True

'-----------------------------隐藏日期控件

Me.起始日期.Visible = False

Me.截止日期.Visible = False

'-----------------------------隐藏金额控件

Me.最小.Visible = False

Me.最大.Visible = False

 

End Sub

Private Sub 查询字段_Change()

If Me.查询字段 = "日期" Then

Me.起始日期.Visible = True

Me.截止日期.Visible = True

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = False

Exit Sub

Else

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = True

End If

If Me.查询字段 = "入库价" Or Me.查询字段 = "出库价" Or Me.查询字段 = "期初库存" Or Me.查询字段 = "期初金额" Or Me.查询字段 = "最低库存" Or Me.查询字段 = "最高库存" Then

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = True

Me.最大.Visible = True

Me.查询内容.Visible = False

Exit Sub

Else

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = True

End If

End Sub

 

经办人数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If gx_num = 0 Then

Exit Sub

End If

 

On Error GoTo 数据更新前提醒_Err

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

库存统计查询

Option Compare Database

Option Explicit

 

 

Private Sub Command查询_Click()

On Error GoTo 结束查询

Dim search_field As String

If Me.查询字段 = "日期" Then

 

    If 起始日期 <> "" And IsNull(起始日期) = False And 截止日期 <> "" And IsNull(截止日期) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

        search_field = Me.查询字段

        kc_filter = search_field & " between #" & Me.起始日期 & "# and #" & Me.截止日期 & "#"

        Me.数据表子窗体.Form.Filter = kc_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

 

    Else

        kc_filter = ""

        Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

 

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

If Me.查询字段 = "入库数量" Or Me.查询字段 = "出库数量" Or Me.查询字段 = "当前库存" Or Me.查询字段 = "最低库存" Or Me.查询字段 = "最高库存" Or Me.查询字段 = "期初库存" Then

    If 最小 <> "" And IsNull(最小) = False And 最大 <> "" And IsNull(最大) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

 

 

        search_field = Me.查询字段

        kc_filter = search_field & " >= " & Me.最小 & " And " & search_field & " <= " & Me.最大

        Me.数据表子窗体.Form.Filter = kc_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

    Else

        kc_filter = ""

        Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

 

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

 

    search_field = Me.查询字段

    kc_filter = search_field & " like '*" & Me.查询内容 & "*'"

    Me.数据表子窗体.Form.Filter = kc_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

 

Else

    kc_filter = ""

    Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

End If

    Me.数据表子窗体.SetFocus

    Exit Sub

结束查询:

    MsgBox Err.Description

End Sub

 

 

Private Sub Command全部_Click()

kc_filter = ""

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

 

 

 

Private Sub Command数据导出_Click()

On Error GoTo 导出失败

'------------------------------------------------清空表数据

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 导出库存统计表"

DoCmd.RunSQL del_sql

 

 

 

Dim dflink_sql As String

 

kc_filter = Me.数据表子窗体.Form.Filter

 

If kc_filter <> "" And Me.数据表子窗体.Form.FilterOn = True Then

dflink_sql = "SELECT * FROM 库存统计查询 " & " Where " & kc_filter

Else

dflink_sql = "SELECT * FROM 库存统计查询"

End If

 

kc_order = Me.数据表子窗体.Form.OrderBy

 

If kc_order <> "" Then

dflink_sql = dflink_sql & " order by " & kc_order

End If

 

Dim dflink_rs As DAO.Recordset

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("导出库存统计表", dbOpenTable)

Do While .EOF = False

 

add_rs.AddNew

 

add_rs!货品编号.Value = !货品编号.Value

add_rs!货品名称.Value = !货品名称.Value

add_rs!规格型号.Value = !规格型号.Value

add_rs!单位.Value = !单位.Value

add_rs!入库数量.Value = !入库数量.Value

add_rs!出库数量.Value = !出库数量.Value

add_rs!当前库存.Value = !当前库存.Value

add_rs!最低库存.Value = !最低库存.Value

add_rs!最高库存.Value = !最高库存.Value

add_rs!最低库存状态.Value = !最低库存状态.Value

add_rs!最高库存状态.Value = !最高库存状态.Value

add_rs!货品类别.Value = !货品类别.Value

add_rs!期初库存.Value = !期初库存.Value

 

add_rs.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

 

Call 导出查询表结果("导出库存统计表")

 

Exit Sub

导出失败:

MsgBox Err.Description

End Sub

 

Private Sub Command添加_Click()

DoCmd.OpenForm "库存统计添加", acNormal

End Sub

 

Private Sub Form_Load()

DoCmd.Restore

 

 

kc_filter = ""

kc_order = ""

 

 

Me.查询内容.Visible = True

'-----------------------------隐藏日期控件

Me.起始日期.Visible = False

Me.截止日期.Visible = False

'-----------------------------隐藏金额控件

Me.最小.Visible = False

Me.最大.Visible = False

 

End Sub

Private Sub 查询字段_Change()

If Me.查询字段 = "日期" Then

Me.起始日期.Visible = True

Me.截止日期.Visible = True

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = False

Exit Sub

Else

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = True

End If

If Me.查询字段 = "入库数量" Or Me.查询字段 = "出库数量" Or Me.查询字段 = "当前库存" Or Me.查询字段 = "最低库存" Or Me.查询字段 = "最高库存" Or Me.查询字段 = "期初库存" Then

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = True

Me.最大.Visible = True

Me.查询内容.Visible = False

Exit Sub

Else

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = True

End If

End Sub

 

领用单位数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If gx_num = 0 Then

Exit Sub

End If

 

On Error GoTo 数据更新前提醒_Err

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

明细台账

Option Compare Database

Option Explicit

 

 

Public 期初库存num As Single

Public 期初金额num As Currency

 

 

 

Private Sub Command查询_Click()

If Me.货品编号 <> "" Then

Call 获取货品明细台账(Me.货品编号)

End If

Me.数据表子窗体.Requery

End Sub

 

Private Sub Command打印台账_Click()

On Error GoTo outputerror

 

'------------------------------------------

Dim copyfilename As String

copyfilename = "明细台账.xlsx"    '要复制的源文件(Excel)

'---------------------------------输入文件名

Dim outputname As String

outputname = InputBox("请输入导出的文件名", "导出明细台账", "明细台账:" & Me.货品编号 & " " & Me.货品名称)       '---------------------------------------------------输入要生成的表名

If outputname = "" Or IsNull(outputname) Then   '为空则不执行程序

'GoTo outputerror

Exit Sub

End If

'----------------------------------选择导出的位置(文件夹)

Dim exportpath As String

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog(msoFileDialogFolderPicker)

With dlgOpen

     If .Show = -1 Then

        exportpath = .SelectedItems(1)

        Else

        Exit Sub

     End If

End With

Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")

    fs.copyfile fs.BuildPath(CurrentProject.Path, copyfilename), exportpath & "\" & outputname & ".xlsx"

'================================================================================打开创建的表并处理数据

Dim excelopenpathname As String

excelopenpathname = exportpath & "\" & outputname & ".xlsx"     '复制粘贴新Excel文件的路径和名称

'================================================================================处理打开的表数据

 

 

 

 

Dim xlapp As Object

Set xlapp = CreateObject("excel.application")

Dim xlwbk As Object

Dim xlwsh As Object

 

 

Dim CreateExcel As Object

Set CreateExcel = xlapp

xlapp.Visible = False

Set xlwbk = xlapp.WorkBooks.Open(excelopenpathname)

xlwbk.Activate

Set xlwsh = xlwbk.Worksheets(1)

With xlwsh

    '--------------------------------------------------处理过程

    .cells(3, "C").Value = Me.货品编号.Value

    .cells(4, "C").Value = Me.货品名称.Value

    .cells(5, "C").Value = Me.规格型号.Value

    .cells(3, "J").Value = Me.货品类别.Value

    .cells(6, "M").Value = Me.单位.Value

 

End With

 

With xlwsh

'****************************************************************循环采购出库查询

 

Dim search_sql As String

 

search_sql = "SELECT * FROM 明细台账表"

 

Dim search_rs As DAO.Recordset

 

 

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

 

'------------------------------------------------------------------

Dim add_row As Long

add_row = 9

Do While search_rs.EOF = False

 

.cells(add_row, 2).Value = search_rs!日期.Value

.cells(add_row, 3).Value = search_rs!凭证单号.Value

.cells(add_row, 4).Value = search_rs!出入库摘要.Value

.cells(add_row, 5).Value = search_rs!入库数量.Value

.cells(add_row, 6).Value = search_rs!入库单价.Value

.cells(add_row, 9).Value = search_rs!入库金额.Value

.cells(add_row, 7).Value = search_rs!出库数量.Value

.cells(add_row, 8).Value = search_rs!出库单价.Value

.cells(add_row, 10).Value = search_rs!出库金额.Value

.cells(add_row, 11).Value = search_rs!结存数量.Value

.cells(add_row, 12).Value = search_rs!结存均价.Value

.cells(add_row, 13).Value = search_rs!结存金额.Value

 

.Range(.cells(add_row, 2), .cells(add_row, 13)).Borders.LineStyle = 1

add_row = add_row + 1

search_rs.MoveNext

Loop

 

 

'------------------------------------------------------------------

search_rs.Close

Set search_rs = Nothing

 

 

'****************************************************************

.Columns.AutoFit

End With

 

xlwbk.Save

xlwbk.Close

xlapp.Quit

MsgBox "导出完成"

 

'------------------------------------------

Exit Sub

outputerror:

MsgBox "导出数据出错,请检查!可能存在同名工作簿" & vbCrLf & Err.Description

End Sub

 

Private Sub Command全部_Click()

mxtz_filter = ""

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

 

Private Sub Form_Load()

'---------------------------------------初始化删除显示表

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 明细台账表"

DoCmd.RunSQL del_sql

 

'---------------------------------------

Me.数据表子窗体.SourceObject = ""

Me.数据表子窗体.SourceObject = "明细台账数据表"

End Sub

 

Private Sub Form_Timer()

If mxtz_a1 = 1 Then

Call 货品基础信息

mxtz_a1 = 0

End If

End Sub

 

Private Sub 选择货品_AfterUpdate()

If Me.选择货品 <> "" Then

 

Dim search_rs As DAO.Recordset

Dim search_sql As String

search_sql = "Select * From 货品表 Where 货品编号='" & Me.选择货品 & "'"

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

 

If search_rs.EOF = False Then

 

货品编号.Value = search_rs!货品编号.Value

货品名称.Value = search_rs!货品名称.Value

规格型号.Value = search_rs!规格型号.Value

单位.Value = search_rs!单位.Value

 

货品类别.Value = search_rs!货品类别.Value

'----------------------------------------------------

期初库存num = Nz(search_rs!期初库存.Value, 0)

期初金额num = Nz(search_rs!期初金额.Value, 0)

'----------------------------------------------------

Else

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

货品类别.Value = ""

'----------------------------------------------------

期初库存num = 0

期初金额num = 0

'----------------------------------------------------

End If

search_rs.Close

 

Set search_rs = Nothing

 

Else

 

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

货品类别.Value = ""

'----------------------------------------------------

期初库存num = 0

期初金额num = 0

'----------------------------------------------------

End If

End Sub

 

Private Sub 选择货品_Change()

If Me.选择货品 <> "" Then

 

Dim search_rs As DAO.Recordset

Dim search_sql As String

search_sql = "Select * From 货品表 Where 货品编号='" & Me.选择货品 & "'"

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

 

If search_rs.EOF = False Then

 

货品编号.Value = search_rs!货品编号.Value

货品名称.Value = search_rs!货品名称.Value

规格型号.Value = search_rs!规格型号.Value

单位.Value = search_rs!单位.Value

 

货品类别.Value = search_rs!货品类别.Value

'----------------------------------------------------

期初库存num = Nz(search_rs!期初库存.Value, 0)

期初金额num = Nz(search_rs!期初金额.Value, 0)

'----------------------------------------------------

Else

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

货品类别.Value = ""

'----------------------------------------------------

期初库存num = 0

期初金额num = 0

'----------------------------------------------------

End If

search_rs.Close

 

Set search_rs = Nothing

 

Else

 

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

货品类别.Value = ""

'----------------------------------------------------

期初库存num = 0

期初金额num = 0

'----------------------------------------------------

End If

End Sub

 

 

Sub 获取货品明细台账(ByVal hpname As String)

'----------------------------------------------------删除原表记录

On Error GoTo 导出失败

 

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 明细台账表"

DoCmd.RunSQL del_sql

 

 

 

'----------------------------------------------------获取明细记录循环计算添加

Dim dflink_sql As String

dflink_sql = "SELECT * FROM 出入库明细查询 where 货品编号='" & Me.货品编号 & "' order by 出入库日期 ASC"

 

 

Dim dflink_rs As DAO.Recordset

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("明细台账表", dbOpenTable)

'-------------------------添加期初数据

add_rs.AddNew

 

 

add_rs!凭证单号.Value = "期初"

add_rs!出入库摘要.Value = "期初"

add_rs!入库数量.Value = 0

add_rs!入库单价.Value = 0

add_rs!入库金额.Value = 0

add_rs!出库数量.Value = 0

add_rs!出库单价.Value = 0

add_rs!出库金额.Value = 0

add_rs!结存数量.Value = 期初库存num

If 期初库存num <> 0 Then

add_rs!结存均价.Value = CCur(期初金额num / 期初库存num)

Else

add_rs!结存均价.Value = 0

End If

add_rs!结存金额.Value = 期初金额num

add_rs.Update

'-------------------------

Dim 上期金额num As Currency

Dim 入库金额num As Currency

Dim 出库金额num As Currency

 

Dim 入库数量num As Single

Dim 出库数量num As Single

 

Dim 入库单价num As Currency

Dim 出库单价num As Currency

 

Dim 出入库摘要text As String

上期金额num = 期初金额num

 

Dim 结存数量num As Single

Dim 结存均价num As Currency

Dim 结存金额num As Currency

 

Dim 上期数量num As Single

Dim 上期均价num As Currency

 

上期数量num = 期初库存num

    If 期初库存num <> 0 Then

    上期均价num = Nz(CCur(期初金额num / 期初库存num), 0)

    Else

    上期均价num = 0

    End If

Do While .EOF = False

入库金额num = 0

入库数量num = 0

入库单价num = 0

 

出库金额num = 0

出库数量num = 0

出库单价num = 0

If !出入库.Value = "入库" Then

 

入库金额num = !货品金额.Value

入库数量num = !数量.Value

入库单价num = !单价.Value

 

出库金额num = 0

出库数量num = 0

出库单价num = 0

End If

If !出入库.Value = "出库" Then

出库金额num = !货品金额.Value

出库数量num = !数量.Value

出库单价num = !单价.Value

 

入库金额num = 0

入库数量num = 0

入库单价num = 0

End If

 

 

出入库摘要text = !出入库类别.Value & "-" & !出入库.Value

'--------------------------------计算结存

结存金额num = 上期金额num + 入库金额num - 出库金额num

上期金额num = 结存金额num

结存数量num = 上期数量num + 入库数量num - 出库数量num

上期数量num = 结存数量num

If 结存数量num <> 0 Then

结存均价num = Nz(结存金额num / 结存数量num)

Else

结存均价num = 0

End If

'--------------------------------

 

 

add_rs.AddNew

 

add_rs!日期.Value = !出入库日期.Value

add_rs!凭证单号.Value = !凭证单号.Value

add_rs!出入库摘要.Value = 出入库摘要text

add_rs!入库数量.Value = 入库数量num

add_rs!入库单价.Value = 入库单价num

add_rs!入库金额.Value = 入库金额num

add_rs!出库数量.Value = 出库数量num

add_rs!出库单价.Value = 出库单价num

add_rs!出库金额.Value = 出库金额num

add_rs!结存数量.Value = 结存数量num

add_rs!结存均价.Value = 结存均价num

add_rs!结存金额.Value = 结存金额num

 

add_rs.Update

 

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

 

'------------------------------------------------------

Exit Sub

导出失败:

MsgBox Err.Description

End Sub

 

Private Sub 选择货品_DblClick(Cancel As Integer)

hp_type = 1

DoCmd.OpenForm "货品选择", acNormal

End Sub

 

 

 

Sub 货品基础信息()

If Me.选择货品 <> "" Then

 

Dim search_rs As DAO.Recordset

Dim search_sql As String

search_sql = "Select * From 货品表 Where 货品编号='" & Me.选择货品 & "'"

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

 

If search_rs.EOF = False Then

 

货品编号.Value = search_rs!货品编号.Value

货品名称.Value = search_rs!货品名称.Value

规格型号.Value = search_rs!规格型号.Value

单位.Value = search_rs!单位.Value

 

货品类别.Value = search_rs!货品类别.Value

'----------------------------------------------------

期初库存num = Nz(search_rs!期初库存.Value, 0)

期初金额num = Nz(search_rs!期初金额.Value, 0)

'----------------------------------------------------

Else

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

货品类别.Value = ""

'----------------------------------------------------

期初库存num = 0

期初金额num = 0

'----------------------------------------------------

End If

search_rs.Close

 

Set search_rs = Nothing

 

Else

 

货品编号.Value = ""

货品名称.Value = ""

规格型号.Value = ""

单位.Value = ""

货品类别.Value = ""

'----------------------------------------------------

期初库存num = 0

期初金额num = 0

'----------------------------------------------------

End If

End Sub

 

入库单查询

Option Compare Database

Option Explicit

 

 

Private Sub Command查询_Click()

On Error GoTo 结束查询

Dim search_field As String

If Me.查询字段 = "入库日期" Then

 

    If 起始日期 <> "" And IsNull(起始日期) = False And 截止日期 <> "" And IsNull(截止日期) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

        search_field = Me.查询字段

        rk_filter = search_field & " between #" & Me.起始日期 & "# and #" & Me.截止日期 & "#"

        Me.数据表子窗体.Form.Filter = rk_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

 

    Else

        rk_filter = ""

        Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

 

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

If Me.查询字段 = "金额" Then

    If 最小 <> "" And IsNull(最小) = False And 最大 <> "" And IsNull(最大) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

 

 

        search_field = Me.查询字段

        rk_filter = search_field & " >= " & Me.最小 & " And " & search_field & " <= " & Me.最大

        Me.数据表子窗体.Form.Filter = rk_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

    Else

        rk_filter = ""

        Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

 

If 查询内容 <> "" And IsNull(查询内容) = False And 查询字段 <> "" And IsNull(查询字段) = False Then

 

    search_field = Me.查询字段

    rk_filter = search_field & " like '*" & Me.查询内容 & "*'"

    Me.数据表子窗体.Form.Filter = rk_filter

        Me.数据表子窗体.Form.FilterOn = True

        Me.数据表子窗体.Requery

 

Else

    rk_filter = ""

    Me.数据表子窗体.Form.FilterOn = False

        Me.数据表子窗体.Requery

End If

    Me.数据表子窗体.SetFocus

    Exit Sub

结束查询:

    MsgBox Err.Description

End Sub

 

 

 

 

 

Private Sub Command全部_Click()

rk_filter = ""

Me.数据表子窗体.Form.FilterOn = False

Me.数据表子窗体.Requery

End Sub

 

 

 

Private Sub Command数据导出_Click()

On Error GoTo 导出失败

'------------------------------------------------清空表数据

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 导出入库单表"

DoCmd.RunSQL del_sql

 

 

 

Dim dflink_sql As String

 

rk_filter = Me.数据表子窗体.Form.Filter

 

If rk_filter <> "" And Me.数据表子窗体.Form.FilterOn = True Then

dflink_sql = "SELECT * FROM 入库单查询 " & " Where " & rk_filter

Else

dflink_sql = "SELECT * FROM 入库单查询"

End If

 

rk_order = Me.数据表子窗体.Form.OrderBy

 

If rk_order <> "" Then

dflink_sql = dflink_sql & " order by " & rk_order

End If

 

Dim dflink_rs As DAO.Recordset

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("导出入库单表", dbOpenTable)

Do While .EOF = False

 

add_rs.AddNew

 

add_rs!入库单号.Value = !入库单号.Value

add_rs!供货单位.Value = !供货单位.Value

add_rs!入库类别.Value = !入库类别.Value

add_rs!入库日期.Value = !入库日期.Value

add_rs!供货人.Value = !供货人.Value

add_rs!经办人.Value = !经办人.Value

add_rs!备注.Value = !备注.Value

add_rs!金额.Value = !金额.Value

 

add_rs.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

 

Call 导出查询表结果("导出入库单表")

 

Exit Sub

导出失败:

MsgBox Err.Description

End Sub

 

Private Sub Command添加_Click()

DoCmd.OpenForm "入库单添加", acNormal

End Sub

 

Private Sub Form_Load()

DoCmd.Restore

 

 

rk_filter = ""

rk_order = "入库单号 DESC"

 

'Me.数据表子窗体.Form.OrderBy = rk_order

'Me.数据表子窗体.Form.OrderByOn = True

 

Me.查询内容.Visible = True

'-----------------------------隐藏日期控件

Me.起始日期.Visible = False

Me.截止日期.Visible = False

'-----------------------------隐藏金额控件

Me.最小.Visible = False

Me.最大.Visible = False

 

End Sub

Private Sub 查询字段_Change()

If Me.查询字段 = "入库日期" Then

Me.起始日期.Visible = True

Me.截止日期.Visible = True

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = False

Exit Sub

Else

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = True

End If

If Me.查询字段 = "金额" Then

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = True

Me.最大.Visible = True

Me.查询内容.Visible = False

Exit Sub

Else

Me.起始日期.Visible = False

Me.截止日期.Visible = False

Me.最小.Visible = False

Me.最大.Visible = False

Me.查询内容.Visible = True

End If

End Sub

 

入库单查询数据表

Private Sub 入库单号_DblClick(Cancel As Integer)

DoCmd.OpenForm "入库单管理", acNormal, , "入库单号='" & 入库单号 & "'"

End Sub

入库单管理

Option Compare Database

Option Explicit

 

Public update_num As Integer

 

 

 

Private Sub Command更新_Click()

On Error Resume Next

If 入库单号 = "" Or IsNull(入库单号) = True Then

MsgBox "入库单号值为空!"

Exit Sub

End If

 

update_num = 1

If MsgBox("是否更新该记录", vbYesNo) <> vbYes Then

DoCmd.RunCommand acCmdUndo

Exit Sub

End If

DoCmd.SetWarnings (False)

On Error Resume Next

DoCmd.RunCommand acCmdSaveRecord

 

Exit Sub

If Error.Number <> 0 Then

MsgBox Error.Description

Else

 

End If

End Sub

 

Private Sub Command入库单_Click()

On Error GoTo outputerror

 

'------------------------------------------

Dim copyfilename As String

copyfilename = "入库单.xlsx"    '要复制的源文件(Excel)

'---------------------------------输入文件名

Dim outputname As String

outputname = InputBox("请输入导出的文件名", "导出入库单", "入库单" & Me.入库单号)       '---------------------------------------------------输入要生成的表名

If outputname = "" Or IsNull(outputname) Then   '为空则不执行程序

'GoTo outputerror

Exit Sub

End If

'----------------------------------选择导出的位置(文件夹)

Dim exportpath As String

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog(msoFileDialogFolderPicker)

With dlgOpen

     If .Show = -1 Then

        exportpath = .SelectedItems(1)

        Else

        Exit Sub

     End If

End With

Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")

    fs.copyfile fs.BuildPath(CurrentProject.Path, copyfilename), exportpath & "\" & outputname & ".xlsx"

'================================================================================打开创建的表并处理数据

Dim excelopenpathname As String

excelopenpathname = exportpath & "\" & outputname & ".xlsx"     '复制粘贴新Excel文件的路径和名称

'================================================================================处理打开的表数据

 

 

 

 

Dim xlapp As Object

Set xlapp = CreateObject("excel.application")

Dim xlwbk As Object

Dim xlwsh As Object

 

 

Dim CreateExcel As Object

Set CreateExcel = xlapp

xlapp.Visible = False

Set xlwbk = xlapp.WorkBooks.Open(excelopenpathname)

xlwbk.Activate

Set xlwsh = xlwbk.Worksheets(1)

With xlwsh

    '--------------------------------------------------处理过程

    .cells(1, "K").Value = Me.入库单号.Value

    .cells(3, "D").Value = Me.供货单位.Value

    .cells(3, "H").Value = Me.入库类别.Value

    .cells(3, "K").Value = Me.入库日期.Value

    .cells(6, "K").Value = Me.金额.Value

    .cells(7, "D").Value = Me.供货人.Value

    .cells(7, "K").Value = Me.经办人.Value

    .cells(8, "D").Value = Me.备注.Value

    .cells(6, "D").Value = rmb(Me.金额)

End With

'Set xlwsh = xlwbk.Worksheets(2)

With xlwsh

'****************************************************************循环采购入库查询

 

Dim search_sql As String

 

search_sql = "SELECT * FROM 入库明细查询 " & " Where 入库单号='" & Me.入库单号 & "' Order by 入库序号 ASC"

 

Dim search_rs As DAO.Recordset

 

'MsgBox search_sql

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

 

'------------------------------------------------------------------

Dim add_row As Long

add_row = 5

Do While search_rs.EOF = False

.rows(add_row).Insert

 

.cells(add_row, 2).Value = search_rs!入库序号.Value

.cells(add_row, 3).Value = search_rs!货品编号.Value

.cells(add_row, 4).Value = search_rs!货品名称.Value

.cells(add_row, 5).Value = search_rs!规格型号.Value

.cells(add_row, 6).Value = search_rs!货品类别.Value

.cells(add_row, 9).Value = search_rs!单位.Value

.cells(add_row, 7).Value = search_rs!单价.Value

.cells(add_row, 8).Value = search_rs!数量.Value

.cells(add_row, 10).Value = search_rs!货品金额.Value

.cells(add_row, 11).Value = search_rs!明细备注.Value

 

add_row = add_row + 1

search_rs.MoveNext

Loop

 

 

'------------------------------------------------------------------

search_rs.Close

Set search_rs = Nothing

 

 

'****************************************************************

End With

xlwbk.Save

xlwbk.Close

xlapp.Quit

MsgBox "导出完成"

 

'------------------------------------------

Exit Sub

outputerror:

MsgBox "导出数据出错,请检查!可能存在同名工作簿" & vbCrLf & Err.Description

End Sub

 

Private Sub Command删除_Click()

If MsgBox("是否删除该记录", vbYesNo) <> vbYes Then

Exit Sub

End If

On Error Resume Next

DoCmd.SetWarnings (False)

DoCmd.RunCommand acCmdDeleteRecord

MsgBox "删除成功"

DoCmd.Close acForm, Me.Name

If Error.Number <> 0 Then

MsgBox Error.Description

End If

End Sub

 

 

 

 

Private Sub Form_BeforeUpdate(Cancel As Integer)

On Error GoTo 数据更新前提醒_Err

 

If update_num = 1 Then

update_num = 0

Exit Sub

End If

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

 

Private Sub Form_Close()

On Error Resume Next

Forms("入库单查询").数据表子窗体.Requery

End Sub

 

 

 

Private Sub Form_Load()

Me.金额 = Nz(DLookup("金额", "入库单金额查询", "入库单号='" & Me.入库单号 & "'"), 0)

End Sub

 

入库单添加

Option Compare Database

Option Explicit

 

Private Sub Command导入_Click()

On Error GoTo inputerror

Dim upfilename As String

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)

With dlgOpen

.AllowMultiSelect = False

.Filters.Add "Excel", "*.xlsx; *.xlsm", 1

     If .Show = -1 Then

        upfilename = .SelectedItems(1)

     Else

        Exit Sub

     End If

End With

 

'------------------------------------------------清空表数据

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 本地入库单表"

DoCmd.RunSQL del_sql

'------------------------------------------

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("本地入库单表", dbOpenTable)

'打开创建的表并处理数据

Dim excelopenpathname As String

excelopenpathname = upfilename     '复制粘贴新Excel文件的路径和名称

'处理打开的表数据

Dim xlapp As excel.Application

Dim xlwbk As excel.Workbook

Dim xlwsh As excel.Worksheet

Set xlapp = New excel.Application

Dim CreateExcel As Object

Set CreateExcel = xlapp

xlapp.Visible = True

Set xlwbk = xlapp.WorkBooks.Open(excelopenpathname)

xlwbk.Activate

Set xlwsh = xlwbk.Worksheets(1)

With xlwsh

    Dim i

    On Error Resume Next

    '--------------------------------------------------处理过程

    If .cells(2, 1).Value <> "" Then

    Else

    GoTo exitexcel

    End If

    For i = 2 To .Range("A1").End(xlDown).Row

        add_rs.AddNew

add_rs!入库单号.Value = .cells(i, 1).Value

add_rs!供货单位.Value = .cells(i, 2).Value

add_rs!入库类别.Value = .cells(i, 3).Value

add_rs!入库日期.Value = .cells(i, 4).Value

add_rs!供货人.Value = .cells(i, 5).Value

add_rs!经办人.Value = .cells(i, 6).Value

add_rs!备注.Value = .cells(i, 7).Value

 

        add_rs.Update

    Next i

End With

exitexcel:

xlwbk.Save

xlwbk.Close

xlapp.Quit

 

'------------------------------------------

Me.数据表子窗体.Requery

Exit Sub

inputerror:

MsgBox Err.Description

End Sub

 

Private Sub Command清空_Click()

入库单号.Value = 生成入库单号(Date)

供货单位.Value = ""

入库类别.Value = ""

入库日期.Value = Date

供货人.Value = ""

经办人.Value = ""

备注.Value = ""

 

End Sub

 

Private Sub Command上传_Click()

On Error GoTo 上传数据失败错误

 

If MsgBox("是否将数据添加至入库单表,注意:重复的入库单号将不会添加", vbOKCancel) <> vbOK Then

Exit Sub

End If

 

If Nz(DCount("入库单号", "本地入库单表"), 0) = 0 Then    '上传入库单记录数量

Exit Sub

End If

 

'---------------------------------------------------------------查询前端

Dim search_rs As DAO.Recordset

Dim search_sql As String

search_sql = "Select * From 本地入库单表"

Set search_rs = CurrentDb.OpenRecordset(search_sql, dbOpenDynaset)

'---------------------------------------------------------------建立查询

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("入库单表", dbOpenTable)

'---------------------------------------------------------------

 

On Error Resume Next

Do While search_rs.EOF = False

 

add_rs.AddNew

 

add_rs!入库单号.Value = search_rs!入库单号.Value

add_rs!供货单位.Value = search_rs!供货单位.Value

add_rs!入库类别.Value = search_rs!入库类别.Value

add_rs!入库日期.Value = search_rs!入库日期.Value

add_rs!供货人.Value = search_rs!供货人.Value

add_rs!经办人.Value = search_rs!经办人.Value

add_rs!备注.Value = search_rs!备注.Value

 

 

add_rs.Update

 

search_rs.MoveNext

Loop

'---------------------------------------------------------------断开后端链接

 

add_rs.Close

Set add_rs = Nothing

 

'---------------------------------------------------------------断开前端链接

search_rs.Close

Set search_rs = Nothing

 

MsgBox "上传数据完成"

Exit Sub

上传数据失败错误:

MsgBox "上传数据失败!" & vbCrLf & Err.Description

 

End Sub

 

Private Sub Command添加_Click()

On Error GoTo 添加失败错误

 

If 入库单号 = "" Or IsNull(入库单号) = True Then

MsgBox "入库单号值为空!"

Exit Sub

End If

 

If 入库日期 = "" Or IsNull(入库日期) = True Then

MsgBox "入库日期值为空!"

Exit Sub

End If

 

If Nz(DCount("入库单号", "入库单表", "入库单号='" & Me.入库单号 & "'"), 0) > 0 Then

MsgBox "该入库单号已存在!"

Exit Sub

End If

 

 

Dim add_rs As DAO.Recordset

Set add_rs = CurrentDb.OpenRecordset("入库单表", dbOpenTable)

add_rs.AddNew

'--------------------------------------------------------------字段赋值

On Error Resume Next

With add_rs

add_rs!入库单号.Value = 入库单号.Value

add_rs!供货单位.Value = 供货单位.Value

add_rs!入库类别.Value = 入库类别.Value

add_rs!入库日期.Value = 入库日期.Value

add_rs!供货人.Value = 供货人.Value

add_rs!经办人.Value = 经办人.Value

add_rs!备注.Value = 备注.Value

 

'add_rs!金额.Value = 金额.Value

 

 

End With

'----------------------------------------------------------

add_rs.Update

add_rs.Close

Set add_rs = Nothing

'----------------------------------------------------------

 

MsgBox "添加成功!"

Call Command清空_Click

 

Exit Sub

添加失败错误:

MsgBox Err.Description

End Sub

 

Private Sub Form_Close()

On Error Resume Next

rk_filter = ""

Forms("入库单查询").数据表子窗体.Requery

 

End Sub

 

Private Sub Form_Load()

DoCmd.Restore

Me.入库日期 = Date

 

 

Me.入库单号 = 生成入库单号(Date)

DoCmd.SetWarnings (False)

Dim del_sql As String

del_sql = "Delete From 本地入库单表"

DoCmd.RunSQL del_sql

Me.数据表子窗体.Requery

End Sub

 

 

 

 

 

Private Sub 入库单号_DblClick(Cancel As Integer)

If Me.入库日期 <> "" Then

Me.入库单号 = 生成入库单号(Me.入库日期)

Else

Me.入库单号 = 生成入库单号(Date)

End If

End Sub

 

Private Sub 入库日期_DblClick(Cancel As Integer)

Me.入库日期 = Date

End Sub

 

 

 

Function 生成入库单号(ByVal numdate As Date) As String

On Error GoTo 错误

Dim search_num As String

 

search_num = "RK" & Format(numdate, "YYYYMMDD")

 

Dim num_count As Long

num_count = Nz(DCount("入库单号", "入库单表", "入库单号 like '*" & search_num & "*'"), 0) + 1

生成入库单号 = search_num & "" & Format(num_count, "000")

Exit Function

错误:

生成入库单号 = ""

 

End Function

入库类别数据表

Private Sub Form_BeforeUpdate(Cancel As Integer)

If gx_num = 0 Then

Exit Sub

End If

 

On Error GoTo 数据更新前提醒_Err

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

入库明细查询数据表

Option Compare Database

 

Private Sub Form_AfterUpdate()

On Error Resume Next

Forms("入库单管理").金额 = Nz(DLookup("金额", "入库单金额查询", "入库单号='" & Forms("入库单管理").入库单号 & "'"), 0)

End Sub

 

Private Sub Form_BeforeUpdate(Cancel As Integer)

If gx_num = 0 Then

Exit Sub

End If

 

On Error GoTo 数据更新前提醒_Err

 

    If (MsgBox("是否保存对记录的修改", 1, "修改记录提醒") = 1) Then

        Beep

'        MsgBox "记录修改成功", vbyesOnly, "提醒"

        Me.货品编号.Requery

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

 

Private Sub Form_Timer()

 

If rkhp_num = 1 Then

 

    If Me.货品编号 <> rkhp_text Then

   

    Me.货品编号 = rkhp_text

    Me.单价 = Nz(DLookup("入库价", "货品表", "货品编号='" & Me.货品编号 & "'"), 0)

    End If

rkhp_num = 0

End If

End Sub

 

Private Sub 货品编号_AfterUpdate()

Me.单价 = Nz(DLookup("入库价", "货品表", "货品编号='" & Me.货品编号 & "'"), 0)

End Sub

 

Private Sub 货品编号_Change()

Me.单价 = Nz(DLookup("入库价", "货品表", "货品编号='" & Me.货品编号 & "'"), 0)

End Sub

 

Private Sub 货品编号_DblClick(Cancel As Integer)

hp_type = 3

DoCmd.OpenForm "货品选择", acNormal

End Sub

系统主页

Private Sub Command更新提醒_Click()

If gx_num = 1 Then

    If MsgBox("是否关闭记录更新时提醒", vbYesNo) = vbYes Then

    gx_num = 0

    End If

Exit Sub

End If

 

If gx_num = 0 Then

    If MsgBox("是否打开记录更新时提醒", vbYesNo) = vbYes Then

    gx_num = 1

    End If

Exit Sub

End If

 

End Sub

 

Private Sub Command退出系统_Click()

If MsgBox("是否退出系统", vbYesNo) <> vbYes Then

Exit Sub

End If

Application.Quit acQuitSaveAll

End Sub

 

Private Sub Command系统后台_Click()

DoCmd.Close acForm, Me.Name

DoCmd.SelectObject acForm, , True

End Sub

 

Private Sub Form_Load()

gx_num = 1

End Sub

 

 

公告函数变量(模块)

Option Compare Database

 

 

'更新提醒

Public gx_num As Integer

 

'货品

Public hp_filter As String      '货品筛选

Public hp_order As String      '货品排序

Public hp_num As String   '货品主键

 

'入库

Public rk_filter As String      '入库筛选

Public rk_order As String      '入库排序

Public rk_num As String   '入库主键

 

 

'出库

Public ck_filter As String      '出库筛选

Public ck_order As String      '出库排序

Public ck_num As String   '出库主键

 

'出入库明细

Public crkmx_filter As String      '出入库明细筛选

Public crkmx_order As String      '出入库明细排序

 

'库存统计

Public kc_filter As String      '库存筛选

Public kc_order As String      '库存排序

 

'出入库查询

Public crkcx_filter As String      '出入库查询

Public crkcx_order As String      '出入库排序

 

 

'明细台账

Public mxtz_filter As String      '出入库查询

Public mxtz_order As String      '出入库排序

 

Public mxtz_a1 As Integer

 

'选择货品

Public hp_type As Integer

 

 

'出库明细货品选择

Public ckhp_text As String

Public ckhp_num As Integer

 

'入库明细货品选择

Public rkhp_text As String

Public rkhp_num As Integer

 

 

Function IsFileExists(ByVal strFileName As String) As Boolean   '判断文件是否存在

  If Len(Dir(strFileName)) <> 0 Then

    IsFileExists = True

  Else

    IsFileExists = False

  End If

End Function

 

 

Public Sub 导出查询表结果(ByVal tablename As String)

On Error GoTo 导出查询_Err

 

    DoCmd.OutputTo acOutputTable, tablename, "", "", False, "", , acExportQualityPrint

 

 

导出查询_Exit:

    Exit Sub

 

导出查询_Err:

 

    Resume 导出查询_Exit

End Sub

 

Public Function rmb(s As Currency) As String    '人民币转大写

Dim s1, s2, l, x

    s1 = LTrim(CStr(Abs(s)))

    l = Len(s1)

    Select Case l - InStrRev(s1, ".")

    '双引号内是小数点

       Case l

         s2 = s1 + ".00"

       Case 1

         s2 = s1 + "0"

       Case 2

         s2 = s1

    End Select

    l = Len(s2)

    Dim dx, c1, c2

    dx = ""

    c1 = "零壹贰叁肆伍陆柒捌玖"

    c2 = "分角 元拾佰仟万拾佰仟亿拾佰"

    '角和元之间留一个空格

     Do While l >= 1

     x = Mid(s2, Len(s2) - l + 1, 1)

    

   

    If x <> "." Then

    dx = dx + Mid(c1, Val(x) + 1, 1) + Trim(Mid(c2, (l - 1) + 1, 1))

    End If

     l = l - 1

     Loop

     rmb = dx + "整"

End Function

 


货品库存管理系统-单机版(2) VBA代码 源代码分析 Access数据库管理系统的评论 (共 条)

分享到微博请遵守国家法律