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

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

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


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

出库单查询

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.查询字段

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

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

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

        Me.数据表子窗体.Requery

 

    Else

        ck_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.查询字段

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

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

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

        Me.数据表子窗体.Requery

    Else

        ck_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.查询字段

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

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

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

        Me.数据表子窗体.Requery

 

Else

    ck_filter = ""

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

        Me.数据表子窗体.Requery

End If

    Me.数据表子窗体.SetFocus

    Exit Sub

结束查询:

    MsgBox Err.Description

End Sub

 

 

 

Private Sub Command全部_Click()

ck_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

 

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

 

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

dflink_sql = "SELECT * FROM 出库单查询 " & " Where " & ck_filter

Else

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

End If

 

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

 

If ck_order <> "" Then

dflink_sql = dflink_sql & " order by " & ck_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

 

 

ck_filter = ""

ck_order = "出库单号 DESC"

 

'Me.数据表子窗体.Form.OrderBy = ck_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)

ck_num = 出库单号

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

 

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

 

ck_num = Me.出库单号

 

 

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()

ck_num = Me.出库单号

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

End Sub

 

Private Sub 选择货品_Change()

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

Me.货品库存 = Nz(DLookup("当前库存", "库存统计查询", "货品编号='" & Me.选择货品 & "'"), 0)

Else

Me.货品库存 = ""

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.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

ck_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 = "CK" & 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

 

Public maxid As Long

 

Private Sub Form_AfterUpdate()

 

On Error Resume Next

 

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

 

If Forms("出库单管理").选择货品 = Me.货品编号 Then

Forms("出库单管理").货品库存 = Nz(DLookup("当前库存", "库存统计查询", "货品编号='" & Me.货品编号 & "'"), 0)

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, "提醒"

'        Me.货品编号.RowSource = ""

'        Me.货品编号.RowSource = "SELECT 货品表.货品编号, 货品表.货品名称, 货品表.货品类别, 库存统计查询.当前库存 FROM 货品表 INNER JOIN 库存统计查询 ON 货品表.货品编号 = 库存统计查询.货品编号"

    maxid = Nz(DMax("出库明细ID", "出库明细表", "出库单号='" & Forms("出库单管理").出库单号 & "'"), 0)

    Else

        DoCmd.RunCommand acCmdUndo

    End If

 

 

数据更新前提醒_Exit:

'    Exit Function

    Exit Sub

 

数据更新前提醒_Err:

    MsgBox Error$

    Resume 数据更新前提醒_Exit

End Sub

 

Private Sub Form_Load()

maxid = Nz(DMax("出库明细ID", "出库明细表", "出库单号='" & Forms("出库单管理").出库单号 & "'"), 0)

 

End Sub

 

Private Sub Form_Timer()

If ckhp_num = 1 Then

 

    If Me.货品编号 <> ckhp_text Then

    Me.货品编号 = ckhp_text

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

    End If

ckhp_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 = 4

DoCmd.OpenForm "货品选择", acNormal

End Sub

 

Private Sub 数量_BeforeUpdate(Cancel As Integer)

If 数量 <> "" And Me.出库明细ID > maxid Then

Dim 货品库存num As Single

货品库存num = Nz(DLookup("当前库存", "库存统计查询", "货品编号='" & Me.货品编号 & "'"), 0)

    If Me.数量 > 货品库存num Then

    MsgBox "注意:出库数量大于当前库存数量" & vbCrLf & "当前货品库存: " & 货品库存num & " " & Me.单位

    End If

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.查询字段

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

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

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

        Me.数据表子窗体.Requery

 

    Else

        crkmx_filter = ""

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

        Me.数据表子窗体.Requery

 

    End If

    Me.数据表子窗体.SetFocus

    Exit Sub

End If

If Me.查询字段 = "单价" Or Me.查询字段 = "数量" Or Me.查询字段 = "货品金额" Then

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

 

 

        search_field = Me.查询字段

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

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

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

        Me.数据表子窗体.Requery

    Else

        crkmx_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.查询字段

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

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

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

        Me.数据表子窗体.Requery

 

Else

    crkmx_filter = ""

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

        Me.数据表子窗体.Requery

End If

    Me.数据表子窗体.SetFocus

    Exit Sub

结束查询:

    MsgBox Err.Description

End Sub

 

 

Private Sub Command全部_Click()

crkmx_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

 

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

 

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

dflink_sql = "SELECT * FROM 出入库明细查询 " & " Where " & crkmx_filter

Else

dflink_sql = "SELECT * FROM 出入库明细查询"

End If

 

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

 

If crkmx_order <> "" Then

dflink_sql = dflink_sql & " order by " & crkmx_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!供领单位.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

 

 

crkmx_filter = ""

crkmx_order = "出入库日期 DESC"

 

 

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.查询字段 = "货品金额" 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

出入库明细查询数据表

Option Compare Database

Option Explicit

 

 

 

 

Private Sub Command查询_Click()

If Me.起始日期 <> "" And Me.截止日期 <> "" Then

 

Call 复制入库单明细表(Me.起始日期, Me.截止日期)

Call 复制出库单明细表(Me.起始日期, Me.截止日期)

Call 货品出入库汇总

 

Else

MsgBox "请选择日期"

Exit Sub

End If

 

Me.数据表子窗体.Requery

End Sub

 

Private Sub Command全部_Click()

crkcx_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

 

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

 

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

dflink_sql = "SELECT * FROM 出入库统计查询 " & " Where " & crkcx_filter

Else

dflink_sql = "SELECT * FROM 出入库统计查询"

End If

 

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

 

If crkcx_order <> "" Then

dflink_sql = dflink_sql & " order by " & crkcx_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 Form_Load()

Dim rfdate As Date

Dim rldate As Date

Dim rftext As String

Dim rltext As String

 

Dim cfdate As Date

Dim cldate As Date

Dim cftext As String

Dim cltext As String

 

 

rftext = Nz(DMin("最早入库日期", "入库日期查询"), "")

rltext = Nz(DMax("最后入库日期", "入库日期查询"), "")

 

 

cftext = Nz(DMin("最早出库日期", "出库日期查询"), "")

cltext = Nz(DMax("最后出库日期", "出库日期查询"), "")

 

 

If (rftext <> "" And rltext <> "") Or (cftext <> "" And cltext <> "") Then

 

rfdate = CDate(rftext)

rldate = CDate(rltext)

 

cfdate = CDate(cftext)

cldate = CDate(cltext)

 

If rfdate < cfdate Then

Me.起始日期 = rfdate

Else

Me.起始日期 = cfdate

End If

 

 

If rldate > cldate Then

Me.截止日期 = rldate

Else

Me.截止日期 = cldate

End If

 

Else

Me.起始日期 = ""

Me.截止日期 = ""

End If

 

 

 

'---------------------------如果日期不为空

If Me.起始日期 <> "" And Me.截止日期 <> "" Then

Call 复制入库单明细表(Me.起始日期, Me.截止日期)

Call 复制出库单明细表(Me.起始日期, Me.截止日期)

Call 货品出入库汇总

 

 

Me.数据表子窗体.Requery

End If

 

 

End Sub

 

 

 

 

Sub 复制入库单明细表(ByVal fd As Date, ByVal ld As Date)

 

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 出入库日期 <#" & fd & "#"

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

'------------------------------------------------------期中

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 期中入库明细表"

DoCmd.RunSQL del_sql

 

 

 

dflink_sql = "SELECT * FROM 入库单明细查询 Where 出入库日期 >=#" & fd & "# and 出入库日期 <=#" & ld & "#"

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

'------------------------------------------------------后期

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 后期入库明细表"

DoCmd.RunSQL del_sql

 

 

 

 

dflink_sql = "SELECT * FROM 入库单明细查询 Where 出入库日期 >#" & ld & "#"

 

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

 

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.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

 

 

 

 

Sub 复制出库单明细表(ByVal fd As Date, ByVal ld As Date)

 

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 出入库日期 <#" & fd & "#"

 

 

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

'------------------------------------------------------期中

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 期中出库明细表"

DoCmd.RunSQL del_sql

 

 

 

 

 

dflink_sql = "SELECT * FROM 出库单明细查询 Where 出入库日期 >=#" & fd & "# and 出入库日期 <=#" & ld & "#"

 

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

'------------------------------------------------------后期

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 后期出库明细表"

DoCmd.RunSQL del_sql

 

 

 

 

dflink_sql = "SELECT * FROM 出库单明细查询 Where 出入库日期 >#" & ld & "#"

 

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

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.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

 

 

 

Sub 货品出入库汇总()

 

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 货品表"

 

 

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)

 

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

Dim 入库数量num As Single

Dim 出库数量num As Single

 

Dim 期初库存num As Single

Dim 期初金额num As Currency

 

 

Dim 前期入库数量num As Single

Dim 前期入库金额num As Currency

 

Dim 期中入库数量num As Single

Dim 期中入库金额num As Currency

 

Dim 成本均价num As Currency

 

Do While .EOF = False

 

入库数量num = Nz(DLookup("期中入库数量", "期中入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

出库数量num = Nz(DLookup("期中出库数量", "期中出库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

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

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

 

前期入库数量num = Nz(DLookup("前期入库数量", "前期入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

前期入库金额num = Nz(DLookup("前期入库金额", "前期入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

 

期中入库数量num = 入库数量num

期中入库金额num = Nz(DLookup("期中入库金额", "期中入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

 

If 期中入库数量num + 前期入库数量num + 期初库存num > 0 Then

    成本均价num = (期初金额num + 前期入库金额num + 期中入库金额num) / (期中入库数量num + 前期入库数量num + 期初库存num)

Else

    成本均价num = 0     '是0还是出库均价

End If

 

If 入库数量num <> 0 Or 出库数量num <> 0 Then

add_rs.AddNew

 

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

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

add_rs!入库均价.Value = Nz(DLookup("期中入库均价", "期中入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

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

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

add_rs!出库均价.Value = Nz(DLookup("期中出库均价", "期中出库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

add_rs!出库金额.Value = Nz(DLookup("期中出库金额", "期中出库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

add_rs!成本均价.Value = 成本均价num

add_rs!成本金额.Value = 成本均价num * 出库数量num

 

add_rs.Update

End If

 

.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 选择货品_Change()

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

Me.数据表子窗体.Form.Filter = "货品编号='" & Me.选择货品 & "'"

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

Else

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

End If

End Sub

 

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

'hp_type = 2

'DoCmd.OpenForm "货品选择", acNormal

'End Sub

出入库统计查询

Option Compare Database

Option Explicit

 

 

 

 

Private Sub Command查询_Click()

If Me.起始日期 <> "" And Me.截止日期 <> "" Then

 

Call 复制入库单明细表(Me.起始日期, Me.截止日期)

Call 复制出库单明细表(Me.起始日期, Me.截止日期)

Call 货品出入库汇总

 

Else

MsgBox "请选择日期"

Exit Sub

End If

 

Me.数据表子窗体.Requery

End Sub

 

Private Sub Command全部_Click()

crkcx_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

 

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

 

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

dflink_sql = "SELECT * FROM 出入库统计查询 " & " Where " & crkcx_filter

Else

dflink_sql = "SELECT * FROM 出入库统计查询"

End If

 

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

 

If crkcx_order <> "" Then

dflink_sql = dflink_sql & " order by " & crkcx_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 Form_Load()

Dim rfdate As Date

Dim rldate As Date

Dim rftext As String

Dim rltext As String

 

Dim cfdate As Date

Dim cldate As Date

Dim cftext As String

Dim cltext As String

 

 

rftext = Nz(DMin("最早入库日期", "入库日期查询"), "")

rltext = Nz(DMax("最后入库日期", "入库日期查询"), "")

 

 

cftext = Nz(DMin("最早出库日期", "出库日期查询"), "")

cltext = Nz(DMax("最后出库日期", "出库日期查询"), "")

 

 

If (rftext <> "" And rltext <> "") Or (cftext <> "" And cltext <> "") Then

 

rfdate = CDate(rftext)

rldate = CDate(rltext)

 

cfdate = CDate(cftext)

cldate = CDate(cltext)

 

If rfdate < cfdate Then

Me.起始日期 = rfdate

Else

Me.起始日期 = cfdate

End If

 

 

If rldate > cldate Then

Me.截止日期 = rldate

Else

Me.截止日期 = cldate

End If

 

Else

Me.起始日期 = ""

Me.截止日期 = ""

End If

 

 

 

'---------------------------如果日期不为空

If Me.起始日期 <> "" And Me.截止日期 <> "" Then

Call 复制入库单明细表(Me.起始日期, Me.截止日期)

Call 复制出库单明细表(Me.起始日期, Me.截止日期)

Call 货品出入库汇总

 

 

Me.数据表子窗体.Requery

End If

 

 

End Sub

 

 

 

 

Sub 复制入库单明细表(ByVal fd As Date, ByVal ld As Date)

 

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 出入库日期 <#" & fd & "#"

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

'------------------------------------------------------期中

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 期中入库明细表"

DoCmd.RunSQL del_sql

 

 

 

dflink_sql = "SELECT * FROM 入库单明细查询 Where 出入库日期 >=#" & fd & "# and 出入库日期 <=#" & ld & "#"

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

'------------------------------------------------------后期

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 后期入库明细表"

DoCmd.RunSQL del_sql

 

 

 

 

dflink_sql = "SELECT * FROM 入库单明细查询 Where 出入库日期 >#" & ld & "#"

 

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

 

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.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

 

 

 

 

Sub 复制出库单明细表(ByVal fd As Date, ByVal ld As Date)

 

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 出入库日期 <#" & fd & "#"

 

 

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

 

'------------------------------------------------------期中

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 期中出库明细表"

DoCmd.RunSQL del_sql

 

 

 

 

 

dflink_sql = "SELECT * FROM 出库单明细查询 Where 出入库日期 >=#" & fd & "# and 出入库日期 <=#" & ld & "#"

 

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

 

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.Update

.MoveNext

Loop

End With

 

add_rs.Close

Set add_rs = Nothing

 

dflink_rs.Close

Set dflink_rs = Nothing

'------------------------------------------------------后期

DoCmd.SetWarnings (False)

 

del_sql = "Delete From 后期出库明细表"

DoCmd.RunSQL del_sql

 

 

 

 

dflink_sql = "SELECT * FROM 出库单明细查询 Where 出入库日期 >#" & ld & "#"

 

 

 

Set dflink_rs = CurrentDb.OpenRecordset(dflink_sql, dbOpenDynaset)

 

With dflink_rs

 

 

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.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

 

 

 

Sub 货品出入库汇总()

 

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 货品表"

 

 

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)

 

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

Dim 入库数量num As Single

Dim 出库数量num As Single

 

Dim 期初库存num As Single

Dim 期初金额num As Currency

 

 

Dim 前期入库数量num As Single

Dim 前期入库金额num As Currency

 

Dim 期中入库数量num As Single

Dim 期中入库金额num As Currency

 

Dim 成本均价num As Currency

 

Do While .EOF = False

 

入库数量num = Nz(DLookup("期中入库数量", "期中入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

出库数量num = Nz(DLookup("期中出库数量", "期中出库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

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

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

 

前期入库数量num = Nz(DLookup("前期入库数量", "前期入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

前期入库金额num = Nz(DLookup("前期入库金额", "前期入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

 

期中入库数量num = 入库数量num

期中入库金额num = Nz(DLookup("期中入库金额", "期中入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

 

If 期中入库数量num + 前期入库数量num + 期初库存num > 0 Then

    成本均价num = (期初金额num + 前期入库金额num + 期中入库金额num) / (期中入库数量num + 前期入库数量num + 期初库存num)

Else

    成本均价num = 0     '是0还是出库均价

End If

 

If 入库数量num <> 0 Or 出库数量num <> 0 Then

add_rs.AddNew

 

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

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

add_rs!入库均价.Value = Nz(DLookup("期中入库均价", "期中入库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

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

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

add_rs!出库均价.Value = Nz(DLookup("期中出库均价", "期中出库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

add_rs!出库金额.Value = Nz(DLookup("期中出库金额", "期中出库统计查询", "货品编号='" & !货品编号.Value & "'"), 0)

add_rs!成本均价.Value = 成本均价num

add_rs!成本金额.Value = 成本均价num * 出库数量num

 

add_rs.Update

End If

 

.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 选择货品_Change()

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

Me.数据表子窗体.Form.Filter = "货品编号='" & Me.选择货品 & "'"

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

Else

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

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.查询字段

        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_type = 0

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


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

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