找回密码
 立即注册

QQ登录

只需一步,快速开始

rongqiye

注册会员

3

主题

9

帖子

28

积分

注册会员

积分
28
  • 100

    金币

  • 3

    主题

  • 9

    帖子

最新发帖
rongqiye
注册会员   /  发表于:2023-7-6 14:51  /   查看:2865  /  回复:4
1金币
本帖最后由 rongqiye 于 2023-7-6 14:54 编辑

代码的想法是,每个客户的资料格式化好后,调用打印,然后清除再打印第二个客户的资料。但在循环中调用打印动作,实际只打印最后一次的页面。
代码如下:

  ……
            For Each vRow As DataRow In vTable.Rows

                vSQL = String.Format("SELECT T.CUS_NAME,T.ITEM_NO,T.WIDTH,T.LENGTH,T.TOTAL,ROUND((TO_NUMBER(T.WIDTH)/12)*TO_NUMBER(T.LENGTH)*T.TOTAL*2,2) AS FT,A.ADDRESS,A.TEL FROM ETERNALM.TEMGDEL01 T,ETERNALM.CUSTOMER_M A WHERE T.DEL_DATE='{0}' AND T.CUS_NO='{1}' AND T.CUS_NO=A.CUS_NO ORDER BY T.ITEM_NO,TO_NUMBER(T.WIDTH),TO_NUMBER(T.LENGTH),T.TOTAL",
                                 Me.txt_DEL_DATE10.Text.Trim, vRow.Item(0).ToString)
                vDT = Nothing
                vDT = objSCH.ANYTABLE_BYANY(vSQL)
                If vDT.Rows.Count > 0 Then
                    getJJCHD(vDT) ‘这个函数作用是把数据格式化写入页面。
                End If


                PrintAllJJCHD()‘这个设置打印。

            Next
……


   Private Sub PrintAllJJCHD()

        Try


            'If fSpread8.Sheets.Count = 0 Then
            '    MsgBox("請先導出資料再列印")
            '    Exit Sub
            'End If

            Dim printset As New FarPoint.Win.Spread.PrintInfo()
            Dim printmar As New FarPoint.Win.Spread.PrintMargin

            printmar.Left = 15
            printmar.Right = 10
            printmar.Top = 20
            printmar.Bottom = 40

            printset.FirstPageNumber = 1
            printset.Margin = printmar
            printset.Opacity = 60
            printset.Orientation = FarPoint.Win.Spread.PrintOrientation.Portrait
            printset.ShowBorder = False
            printset.ShowColor = True
            printset.ShowColumnHeader = FarPoint.Win.Spread.PrintHeader.Hide
            printset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide
            printset.ShowGrid = False
            printset.ShowShadows = False
            printset.PaperSize = New System.Drawing.Printing.PaperSize("Letter", 950, 550)
            fSpread8.Sheets(0).PrintInfo = printset
            printset.ShowPrintDialog = True
            fSpread8.PrintSheet(0)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

4 个回复

倒序浏览
rongqiye
注册会员   /  发表于:2023-7-6 14:55:20
沙发
那句SQL可以忽略,作用就是取得数据。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-6 18:56:58
板凳
你可以尝试一下单线程打印看看

fpSpread1.PrintSheet(0, false);
回复 使用道具 举报
rongqiye
注册会员   /  发表于:2023-7-6 19:04:46
地板
Richard.Ma 发表于 2023-7-6 18:56
你可以尝试一下单线程打印看看

fpSpread1.PrintSheet(0, false);

比较老的版本是不是没有这个参数,我昨天好像尝试加入这个参数提示说不行。现在不在电脑旁边 明天再试一下。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-7 10:35:45
5#
早期的版本我们也没法协助验证了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部