[EXCEL]商品保质期管理

先看看界面

首页

数据库

已售数据库

信息录入

功能介绍:

      根据录入的商品信息,查询是否过期。盘存后点击过期日期,将已售罄商品信息保存到已售数据库中并删除数据库中信息。

代码:

ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call clear_Click
    ActiveWorkbook.Save
End Sub

UserForm1

Private Sub btn_tj_Click()
    Application.ScreenUpdating = False  '关闭屏幕刷新
    Dim n%
    Dim ctl
    txt_pch.Value = txt_txm.Value & "-" & txt_scrq.Value
    If Not Sheets("Data").[A:A].Find(txt_pch.Value) Is Nothing Then
        MsgBox "该批次号商品已存在!"
    Else
        
        n = Sheets("Data").[A65536].End(xlUp).Row + 1
        With Sheets("Data")
            .Cells(n, "A").Value = txt_pch.Value '批次号
            .Cells(n, "B").Value = txt_txm.Value '条形码
            .Cells(n, "C").Value = txt_spmc.Value '商品名称
            .Cells(n, "D").Value = txt_sl.Value '数量
            .Cells(n, "E").Value = txt_jhsj.Value '进货时间
            .Cells(n, "F").Value = txt_scrq.Value '生产日期
            .Cells(n, "G").Value = txt_bzq.Value '保质期
            .Cells(n, "H").Value = txt_gqrq.Value '过期时间
            .Cells(n, "I").Value = txt_txts.Value '提醒天数
            .Cells(n, "J").Value = txt_txrq.Value '提醒日期
        End With
        MsgBox "商品信息已添加!"
        ActiveWorkbook.Save
        Application.ScreenUpdating = True   '开启屏幕刷新
    End If
    For Each ctl In Me.Controls
        If ctl.Name Like "txt*" Then
            'MsgBox c.Name
            ctl.Text = ""
        End If
    Next
    Me.txt_txm.SetFocus

End Sub

Private Sub txt_bzq_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim scrq, gqrq
    If Me.txt_bzq <> "" And IsNumeric(Me.txt_bzq) Then
        scrq = Left(Me.txt_scrq, 4) & "/" & Mid(Me.txt_scrq, 5, 2) & "/" & Right(Me.txt_scrq, 2)
        gqrq = DateAdd("d", Me.txt_bzq, scrq)
        Me.txt_gqrq = Format(gqrq, "YYYYMMDD")
    Else
        MsgBox "保质期必须为数字!"
        Cancel = True
        Me.txt_bzq = ""
        Me.txt_bzq.SetFocus
    End If
    
End Sub

Private Sub txt_scrq_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    
    Dim scrq, gqrq
    scrq = Left(Me.txt_scrq, 4) & "/" & Mid(Me.txt_scrq, 5, 2) & "/" & Right(Me.txt_scrq, 2)
    If IsDate(scrq) And Len(Me.txt_scrq) = 8 Then
        Me.txt_pch = Me.txt_txm & "-" & Me.txt_scrq
    Else
        MsgBox "日期格式错误!"
        Cancel = True
        Me.txt_scrq = ""
        Me.txt_scrq.SetFocus
    End If

End Sub

Private Sub txt_txts_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim gqrq, txrq, txts
    gqrq = Left(Me.txt_gqrq, 4) & "/" & Mid(Me.txt_gqrq, 5, 2) & "/" & Right(Me.txt_gqrq, 2)
    If IsNumeric(Me.txt_txts) = False Then
        MsgBox "提醒天数必须是数字!"
        Cancel = True
        Me.txt_txts = ""
        Me.txt_txts.SetFocus
    ElseIf IsDate(gqrq) And Len(Me.txt_gqrq) = 8 Then
        txts = CInt(Me.txt_txts) * -1
        txrq = DateAdd("d", txts, gqrq)
        Me.txt_txrq = Format(txrq, "YYYYMMDD")
    Else
        MsgBox "日期格式错误!"
        Cancel = True
        Me.txt_scrq = ""
        Me.txt_scrq.SetFocus
    End If

End Sub

模块1


Sub add_Click()
    Worksheets("Data").Activate
    Worksheets("Data").Select
    UserForm1.Show
End Sub

Sub query_Click()
    Call clear_Click
    Dim n%, i%, txrq, y, m, d 'txrq提醒日期
    Application.ScreenUpdating = False  '关闭屏幕刷新
    'MsgBox Format(Now(), "YYYY年" & "MM月" & "DD日")
    n = Sheets("Data").Range("J" & Rows.Count).End(xlUp).Row    '获取表 Data J列最大行数
    'MsgBox n
    For i = n To 2 Step -1
        txrq = Sheets("Data").Cells(i, "J")
        y = Left(txrq, 4)
        m = Mid(txrq, 5, 2)
        d = Right(txrq, 2)
        txrq = DateSerial(y, m, d)
        If Now() > txrq Then
            Sheets("Main").Rows(6).Insert
            Sheets("Data").Rows(i).Copy Sheets("Main").Rows(6)
        End If
    Next i
    Application.ScreenUpdating = True   '开启屏幕刷新
    Range("A1").Select
End Sub

Sub clear_Click()
    Dim n%
    Application.ScreenUpdating = False  '关闭屏幕刷新
    n = Sheets("Main").[A65536].End(xlUp).Row   '获取最大数据行数
    If n > 5 Then Range(Rows(6), Rows(n)).Delete    '删除第6行到最大数据行
    Application.ScreenUpdating = True  '开启屏幕刷新
End Sub

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
不带单价、金额管理。只适用于单纯管理数量、重量的纯仓库管理模式。批号是唯一索引,以批号为管理标识。 需要使用office2007或者office2010. 如果不适合你的情况,请勿下载。 一、进仓操作: 《进出存》:在这里进行入库信息的录入。该表同时以报表形式反映产品的进、出、存情况。 二、出仓操作: 《出货记录表》:在这里进行出库信息的录入。 1、填入出库单号、批次、出库日期、数量、重量 2、填入批次后会自动带出该批次的产品信息,如名称、品牌、规格等 三、调拨操作: 《货位转移》:记录产品在不同仓位间转移的情况。 1、填入批次、新仓位、日期即可,会自动更改“进出存”表中对应批次的仓位。 四、基础资料: 《资料》:记录产品名称、品牌信息 五《报表》:各种报表 1、汇总日报表:所有产品的进、出、存情况按日进行汇总。 2、汇总月报表:所有产品的进、出、存情况按月份进行汇总。 3、某产品日报表:某一产品的进、出、存情况按日进行汇总。 4、某品牌日报表:某一品牌的进、出、存情况按月份进行汇总。 5、某品牌月报表:某一品牌的进、出、存情况按月份进行汇总。 6、某产品月报表:某一产品的进、出、存情况按月份进行汇总 7、按产品名称分类日报表:按产品名称分类按日统计。 8、接品牌分类日报表:接品牌分类按日统计。 9、按产品名称分类月报表:按产品名称分类按月统计。 10、按品牌分类月报表:按品牌分类按月统计。 11、任意条件分析进出存:包含所有的进、出货流水账,可以进行多条件组合分析。
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
使用分批次读取和处理图像是避免MemoryError的一种有效方法。具体来说,可以将数据框中的图像文件路径分成若干批次,每次读取一批图像进行处理,处理完毕后释放内存,然后再读取下一批图像进行处理,直到处理完所有图像。可以使用Python中的生成器来实现这个过程,以下是一个示例代码: ```python import numpy as np from PIL import Image def image_generator(file_paths, batch_size=32): """ 生成器函数,每次返回一个批次的图像数组和标签数组 """ start_index = 0 end_index = batch_size while start_index < len(file_paths): batch_paths = file_paths[start_index:end_index] images = [] for path in batch_paths: img = Image.open(path) img = img.resize((450, 600)) img = np.asarray(img) images.append(img) images = np.array(images) yield images start_index = end_index end_index += batch_size # 示例用法 file_paths = ["path/to/image1.jpg", "path/to/image2.jpg", ...] batch_size = 32 img_gen = image_generator(file_paths, batch_size) for batch_images in img_gen: # 对批次图像进行处理 ... ``` 在这个示例代码中,我们定义了一个生成器函数 `image_generator`,它接受一个图像文件路径列表 `file_paths` 和一个批次大小 `batch_size`。在生成器函数内部,我们使用一个循环来逐批次读取和处理图像。具体来说,我们从 `file_paths` 列表中取出一批次的图像文件路径,并使用PIL库中的 `Image.open()` 函数和NumPy库中的 `np.asarray()` 函数将每个图像读取并转换为NumPy数组。然后,我们将这一批次的图像数组存储在一个NumPy数组中,并使用 `yield` 语句将其返回。在主程序中,我们可以使用 `for` 循环来逐批次处理图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值