Foxtable(狐表)用户栏目专家坐堂 → [求助]专业报表生成并打印问题


  共有4584人关注过本帖树形打印复制链接

主题:[求助]专业报表生成并打印问题

帅哥哟,离线,有人找我吗?
xietan417
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:731 积分:6493 威望:0 精华:0 注册:2011/6/26 11:45:00
[求助]专业报表生成并打印问题  发帖心情 Post By:2022/4/3 1:19:00 [显示全部帖子]

Dim rs As Row = Tables("Mainsale").Current
        Dim ct As Integer = rs("qtytotal")
        Dim doc As New PrintDoc() '定义一个报表
        Dim cmd As New SQLC
        Dim dt As DataTable
        cmd.C = "yydata"
        cmd.C = "S  {Detailesale}.Item as m,Qty,unit,{label}.*,RCId From {Detailesale} Inner JOIN {label} ON {label}.[item] = {Detailesale}.[Item] Where RCId = '" & rs("RCId") & "'"
        dt = cmd.ExecuteReader()
        
        For Each r As DataRow In dt.DataRows
            If r("m") = "斤装小鲫鱼" Then
                If r("监造商") = Nothing Then
                    For i As Integer = 1 To r("Qty") * 16
                        Functions.Execute("lable01",r,rs,ct,doc)
                    Next
                Else
                    For i As Integer = 1 To r("Qty") * 16
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            Else
                If r("监造商") = Nothing Then
                    For i As Integer = 1 To r("Qty")
                        Functions.Execute("lable01",r,rs,ct,doc)
                    Next
                Else
                    For i As Integer = 1 To r("Qty")
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            End If
        Next
        Doc.PrinterName = "Xprinter XP-DT426B"                         
        Doc.Print()
        
End Select

内部函数是用专业报表来生成标签,历遍dt 里的每一行,根据 r("Qty") 来生成该行数据标签打印的份数
 r("Qty") 的数量大的时候生成打印的速度太慢了,有办法优化一下?

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:731 积分:6493 威望:0 精华:0 注册:2011/6/26 11:45:00
  发帖心情 Post By:2022/4/6 8:45:00 [显示全部帖子]

如果每行数据单独打印的话,应该怎么写?图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:731 积分:6493 威望:0 精华:0 注册:2011/6/26 11:45:00
  发帖心情 Post By:2022/4/6 9:00:00 [显示全部帖子]

Dim ps As new System.Drawing.Printing.PrinterSettings
ps.Copies = r("Qty")
doc.Print(ps)
如果我想按每行数据的数量来按份数打印呢?


 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:731 积分:6493 威望:0 精华:0 注册:2011/6/26 11:45:00
  发帖心情 Post By:2022/4/6 9:22:00 [显示全部帖子]

For Each r As DataRow In dt.DataRows
            If r("m") = "斤装小鲫鱼" Then
                If r("监造商") = Nothing Then
                    For i As Integer = 1 To r("Qty") * 16
                        Functions.Execute("lable01",r,rs,ct,doc)
                    Next
                Else
                    For i As Integer = 1 To r("Qty") * 16
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            Else
                If r("监造商") = Nothing Then
                    For i As Integer = 1 To r("Qty")
                        Functions.Execute("lable01",r,rs,ct,doc)
                    Next
                Else
                    For i As Integer = 1 To r("Qty")
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            End If
        Next

怎么样套到这里面去?

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:731 积分:6493 威望:0 精华:0 注册:2011/6/26 11:45:00
  发帖心情 Post By:2022/4/6 9:30:00 [显示全部帖子]

For Each r As DataRow In dt.DataRows
            If r("m") = "斤装小鲫鱼" Then
                r("Qty")  = r("Qty") * 16
                If r("监造商") = Nothing Then
                    For i As Integer = 1 To r("Qty") 
                        Functions.Execute("lable01",r,rs,ct,doc)
                    Next
                Else
                    For i As Integer = 1 To r("Qty") 
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            Else
                If r("监造商") = Nothing Then
                    For i As Integer = 1 To r("Qty")
                        Functions.Execute("lable01",r,rs,ct,doc)
                    Next
                Else
                    For i As Integer = 1 To r("Qty")
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            End If
        Doc.PrinterName = "Xprinter XP-DT426B"        
          Dim ps As new System.Drawing.Printing.PrinterSettings
          ps.Copies = r("Qty")                 
         Doc.Print(ps)
        Next

不同条件打印份数不一样的话,是不是像红色部份这样处理?

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:731 积分:6493 威望:0 精华:0 注册:2011/6/26 11:45:00
  发帖心情 Post By:2022/4/6 11:07:00 [显示全部帖子]

OK,谢谢蓝版

 回到顶部