You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataGridView中按商品数量打印条码贴纸并控制打印总数量

解决DataGridView按商品数量打印条码且限制总张数的问题

没问题,我来帮你调整代码实现需求!你的核心问题是两个:一是要根据每行的Quantity列值重复打印对应次数的条码,二是要把总打印量限制在10张以内。

修改后的VB.NET代码

Dim totalPrinted As Integer = 0
Dim targetTotal As Integer = 10 ' 设定总打印上限为10张

For i As Integer = 0 To DGVItem.Rows.Count - 1
    ' 跳过DataGridView自动生成的空行(如果启用了允许添加新行)
    If DGVItem.Rows(i).IsNewRow Then Continue For
    
    ' 获取当前商品需要打印的次数,确保转换为整数
    Dim printCount As Integer
    If Not Integer.TryParse(DGVItem.Rows(i).Cells("Quantity").Value.ToString(), printCount) Then
        ' 如果Quantity值无效,跳过当前行
        Continue For
    End If
    
    ' 内层循环:按数量打印当前商品的条码,但不超过剩余需要打印的数量
    For j As Integer = 1 To printCount
        If totalPrinted >= targetTotal Then
            ' 已经达到总打印上限,直接退出所有循环
            Exit For
        End If
        
        ' 执行条码打印
        PrintBarCode.PrintToPrinter(DGVItem.Rows(i).Cells(3).Value, False, 0, 0)
        totalPrinted += 1
    Next j
    
    ' 外层循环也检查是否达到上限,避免无效遍历
    If totalPrinted >= targetTotal Then
        Exit For
    End If
Next i

代码关键点说明

  • 总打印量控制:用totalPrinted变量跟踪已打印的条码数量,每次打印后递增,一旦达到10就立即终止所有循环,避免多余的打印操作。
  • 按数量重复打印:通过内层循环遍历当前商品的Quantity值,实现多次打印同一商品的条码。
  • 容错处理:用Integer.TryParse验证Quantity列的值是否为有效整数,避免因数据错误导致程序崩溃;同时跳过DataGridView的空行,防止空值异常。
  • 可读性优化:使用列名"Quantity"代替索引,后续如果列顺序调整,代码不需要修改,更易维护(如果你确认列索引3对应的是条码列,那保持索引没问题)。

额外提示

如果你的PrintToPrinter方法支持批量打印,也可以计算每个商品实际需要打印的次数(比如剩余需要打印的数量 = 10 - 已打印数),直接传入批量打印的参数,这样能减少循环次数,提升效率,但上面的代码是最直观的实现方式,适合大多数场景。

内容的提问来源于stack exchange,提问作者M Arafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:37:43