Foxtable(狐表)用户栏目专家坐堂 → [求助]打印的代码


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

主题:[求助]打印的代码

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


加好友 发短信
等级:幼狐 帖子:183 积分:1602 威望:0 精华:0 注册:2013/11/14 10:30:00
[求助]打印的代码  发帖心情 Post By:2014/2/21 10:41:00 [只看该作者]

下面的代码实现:
1.提取批签发不重复列表,打印
2.提取通关单不重重列表,打印 (注:表中的批签发都有,通关单有的没有)
问题:打印完批签发后,如果没有通关单也会打印一张空白,但只打印同时有批签发和通关单的一行时,不会有空白.如何修改?
另外:如果打印多行时,先打印所有批签发,再打印通关单,如何实现同一行的批签发和通关单挨着打印?

Dim tb As Table = Tables("出库查询_出库副表")

 

If tb.Current Is Nothing Then   '如果表为空

    MessageBox.Show("请按领取单位和出库时间查询!")

Else

    Dim cnt As Integer = DataTables("出库").GetValues("领取单位",Tables("出库查询_出库副表").Filter).count '列出table 不同项列表

    If Cnt >1 Then  '如果不是同一领取单位

        MessageBox.Show("请分领取单位打印!")

    Else

        Dim Customers As List(Of String)

        Customers = Tables("出库查询_出库副表").DataTable.GetValues("批签发",Tables("出库查询_出库副表").Filter)       

        If Customers.Count >0 Then

            For Each Customer As String In Customers               

                Dim doc As New PrintDoc

                Dim rm As New prt.RenderImage

                rm.image = getimage("D:\用户目录\Documents\Scanned Documents\"& Customer &".JPG")

                rm.y = 10

                rm.x = 10

                rm.Width = "130%Parent" '设置尺寸为容器(页面)尺寸

                rm.Height = "Auto" '高度由图片大小自动决定               

                rm.Style.ImageAlign.KeepAspectRatio = True '保持比例               

                doc.Body.Children.Add(rm) '将图片对象加入报表

                Doc.Preview() '预览

                'Doc.Print()

            Next

        End If

        Dim Customer2s As List(Of String)

        Customer2s = Tables("出库查询_出库副表").DataTable.GetValues("通关单",Tables("出库查询_出库副表").Filter)

        If Customer2s.Count >0 Then

            For Each Customer2 As String In Customer2s

                Dim doc2 As New PrintDoc

                Dim rm2 As New prt.RenderImage

                rm2.image = getimage("D:\用户目录\Documents\Scanned Documents\"& Customer2 &".JPG")

                rm2.y = 10

                rm2.x = 10

                rm2.Width = "130%Parent" '设置尺寸为容器(页面)尺寸

                rm2.Height = "Auto" '高度由图片大小自动决定               

                rm2.Style.ImageAlign.KeepAspectRatio = True '保持比例               

                doc2.Body.Children.Add(rm2) '将图片对象加入报表

                Doc2.Preview() '预览

                'Doc.Print()

            Next

        End If

    End If

End If

 


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/21 10:44:00 [只看该作者]

能否上个例子呢?

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


加好友 发短信
等级:幼狐 帖子:183 积分:1602 威望:0 精华:0 注册:2013/11/14 10:30:00
  发帖心情 Post By:2014/2/21 11:34:00 [只看该作者]

例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.table


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


加好友 发短信
等级:幼狐 帖子:183 积分:1602 威望:0 精华:0 注册:2013/11/14 10:30:00
  发帖心情 Post By:2014/2/21 11:34:00 [只看该作者]

图片不上传了,只预览就行

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/21 11:49:00 [只看该作者]

未能直观的理解你的需求,根据你的描述.
第一个问题可以每次打印前判断一下是否用单
第二个问题,你不要分开循环,而是在第一个循环里每次查找出对应的值来循环打印

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


加好友 发短信
等级:幼狐 帖子:183 积分:1602 威望:0 精华:0 注册:2013/11/14 10:30:00
  发帖心情 Post By:2014/2/21 12:08:00 [只看该作者]

第一个问题,我判断了,没起作用

Dim Customer2s As List(Of String)

        Customer2s = Tables("出库查询_出库副表").DataTable.GetValues("通关单",Tables("出库查询_出库副表").Filter)

        If Customer2s.Count >0 Then


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/21 14:08:00 [只看该作者]

不会不起作用的哦,你可以利用messagebox.show调试一下即可知道 http://www.foxtable.com/help/topics/1485.htm

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


加好友 发短信
等级:幼狐 帖子:183 积分:1602 威望:0 精华:0 注册:2013/11/14 10:30:00
  发帖心情 Post By:2014/2/21 14:35:00 [只看该作者]

老师好,又重做了一下,问题没有解决

我仔细试了一下,
规律是:查询后的行,批签发和通关单都不为空的情况下,批签发和通关单各打印一张,正常;
           查询后的行,只要有一行或者全部行中的通关单为空的情况下,先打印完批签发,出一张空白,然后再打印通关单(如果有的话).
另外:不重复循环,不第二个问题也没解决,是我的思路不对吧,代码出下:

Dim tb As Table = Tables("出库查询_出库副表")
If tb.Current Is Nothing Then   '如果表为空
    MessageBox.Show("请按领取单位和出库时间查询!")
Else
    Dim cnt As Integer = DataTables("出库").GetValues("领取单位",Tables("出库查询_出库副表").Filter).count '列出table 不同项列表
    If Cnt >1 Then  '如果不是同一领取单位
        MessageBox.Show("请分领取单位打印!")
    Else
        Dim cs As List(Of String)
        cs = Tables("出库查询_出库副表").DataTable.GetValues("批签发",Tables("出库查询_出库副表").Filter)
        Dim c2s As List(of String)
        c2s = Tables("出库查询_出库副表").DataTable.GetValues("通关单",Tables("出库查询_出库副表").Filter)
        cs.AddRange(c2s)
        
        If cs.Count >0 Then
            For Each c As String In cs
                Dim doc As New PrintDoc
                Dim rm As New prt.RenderImage
                rm.image = getimage("E:\My Pictures\"& c &".JPG")
                rm.y = 10
                rm.x = 10
                rm.Width = "130%Parent" '设置尺寸为容器(页面)尺寸
                rm.Height = "Auto" '高度由图片大小自动决定
                rm.Style.ImageAlign.KeepAspectRatio = True '保持比例
                doc.Body.Children.Add(rm) '将图片对象加入报表
                Doc.Preview() '预览
                'Doc.Print()
            Next
        End If
     End If
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目444.table


[此贴子已经被作者于2014-2-21 14:38:01编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/21 14:37:00 [只看该作者]

建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行不安预期御座,然后分析原因,搞不定,贴出代码,并告诉我们运行到哪一步出问题。

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


加好友 发短信
等级:幼狐 帖子:183 积分:1602 威望:0 精华:0 注册:2013/11/14 10:30:00
  发帖心情 Post By:2014/2/21 14:39:00 [只看该作者]

我试过了,代码没有错误,完全执行完了,就是多一张空白

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