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


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

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

帅哥哟,离线,有人找我吗?
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") 的数量大的时候生成打印的速度太慢了,有办法优化一下?

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/5 20:24:00 [只看该作者]

分批打印,比如数量有100个,可以每50打印一次。

或者每行数据单独打印一次

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


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

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

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/6 8:57:00 [只看该作者]

把专业报表放入循环内

Dim rs As Row = Tables("Mainsale").Current
        Dim ct As Integer = rs("qtytotal")

        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
        Dim doc As New PrintDoc() '定义一个报表
            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
……
……
                        Functions.Execute("lable02",r,rs,ct,doc)
                    Next
                End If
            End If
        Doc.PrinterName = "Xprinter XP-DT426B"                         
        Doc.Print()
        Next

End Select

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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)
如果我想按每行数据的数量来按份数打印呢?


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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/6 9:05:00 [只看该作者]

就是什么的用法,有什么问题?

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

怎么样套到这里面去?

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/6 9:23:00 [只看该作者]

                        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

End Select

 回到顶部
帅哥哟,离线,有人找我吗?
xietan417
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/6 11:02:00 [只看该作者]

可以,或者使用一个变量记录也行

 回到顶部
总数 11 1 2 下一页