以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗体连续打印问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65482)

--  作者:bigeng
--  发布时间:2015/3/17 10:26:00
--  [求助]窗体连续打印问题?
甜版,我做了一个凭证打印窗体,按要求筛选,然后打印,打印按钮代码如下:
If Filter > "" Then
    DataTables("记账凭证_主表").loadFilter = Filter
    DataTables("记账凭证_主表").load()
    Dim doc As PrintDoc = Forms("记账凭证").GernatePrintDoc()
    doc.Preview
End If

但单击后预览显示空页,记账凭证窗体和·凭证打印窗体是分着的,不知错在哪里了·。

--  作者:有点甜
--  发布时间:2015/3/17 10:45:00
--  

请注意一点,窗口的打印,所有的label、textbox控件,全部要放在窗口上,但,不能放在容器里面,容器包括 panel、picturebox等等,不然就是空白。

 

打印容器里面内容参考 http://www.foxtable.com/help/topics/2437.htm

 


--  作者:bigeng
--  发布时间:2015/3/17 16:03:00
--  
doc.preview
在连续打印的时候,预览一张打一张,预览一张打一张。
如何实现第一张预览,设置打印机等,后面的直接就打印?
刚才试了一下:
doc.preview
doc.print
第一张预览设置好打印机以后打印出来没有问题,打印第二张就不按第一张设置的·打印机打印了。

--  作者:有点甜
--  发布时间:2015/3/17 16:06:00
--  

 判断,比如

 

If 数字 = 1 Then

    Doc.Preview

    Doc.Print

Else

    Doc.Print

End If


--  作者:bigeng
--  发布时间:2015/3/17 16:09:00
--  
甜版,是不是我的代码有问题:
If Filter > "" Then
    DataTables("记账凭证_主表").loadFilter = Filter
    DataTables("记账凭证_主表").load()
    Dim doc As PrintDoc = e.Form.GernatePrintDoc()
    Dim d As Date
    For Each c As object In Doc.Body.Children
        If c.Gettype.Name Like "*Table*" Then
            Dim t As prt.RenderTable = c
            t.Rows(0).Height = 10
            t.Rows(0).Style.BackColor = Color.white
            t.Rows(0).Style.Font = New Font("宋体", 12, FontStyle.Bold) \'设置字体
            For i As Integer = 0 To t.Cols.Count - 1
                t.Cells(0,i).Style.TextAlignHorz = prt.AlignHorzEnum.Center
            Next
        Else If c.Gettype.name Like "*Text*" AndAlso Date.TryParse(c.text,d) Then
            c.text = Format(cdate(c.text), "yyyy年MM月dd日")
        End If
    Next
    doc.Preview
    doc.print
End If


--  作者:有点甜
--  发布时间:2015/3/17 16:12:00
--  

你这段代码根本就不是连续打印啊。

 

请参考4楼,判断是打几次打印


--  作者:bigeng
--  发布时间:2015/3/17 16:16:00
--  
我用的是窗体打印凭证,按凭证日期和凭证号筛选出来,然后一张一张打印。
--  作者:有点甜
--  发布时间:2015/3/17 16:20:00
--  

 你这段代码,只会打印一张啊。

 

 上传例子。


--  作者:bigeng
--  发布时间:2015/3/18 17:42:00
--  
甜版,我这折腾好几天也没有弄出来,您给看一下吧,原来弄的代码许多
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.rar

都删了。主要是连续打印凭证问题。
--  作者:有点甜
--  发布时间:2015/3/18 18:00:00
--  

 

Dim Filter As String

With e.Form.Controls("textbox2")
    If .Value IsNot Nothing Then
        Filter = "凭证期间>= #" & .Value & "#"
    End If
End With
With e.Form.Controls("textbox5")
    If .Value IsNot Nothing Then
        Filter = "凭证期间<= #" & .Value & "#"
    End If
End With

With e.Form.Controls("textbox3")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "凭证号>= " & .Value & ""
    End If
End With
With e.Form.Controls("textbox4")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "凭证号 <= " & .Value & ""
    End If
End With
msgbox(filter)
If Filter > "" Then
    DataTables("记账凭证_主表").loadFilter = Filter
    DataTables("记账凭证_主表").load()
End If

For j As Integer= 0 To Tables("记账凭证_主表").Rows.count-1
    Tables("记账凭证_主表").Position = j
    Dim doc As PrintDoc = e.Form.GernatePrintDoc()
    Dim d As Date
    For Each c As object In Doc.Body.Children
        If c.Gettype.Name Like "*Table*" Then
            Dim t As prt.RenderTable = c
            t.Rows(0).Height = 10
            t.Rows(0).Style.BackColor = Color.white
            t.Rows(0).Style.Font = New Font("宋体", 12, FontStyle.Bold) \'设置字体
            For i As Integer = 0 To t.Cols.Count - 1
                t.Cells(0,i).Style.TextAlignHorz = prt.AlignHorzEnum.Center
            Next
        Else If c.Gettype.name Like "*Text*" AndAlso Date.TryParse(c.text,d) Then
            c.text = Format(cdate(c.text), "yyyy年MM月dd日")
        End If
    Next
    If j=0 Then
        doc.Preview()
        \'doc.print
    Else
        \'doc.print
    End If
Next