If anyone is willing to look through all this code I've posted below, it
would be tremendously appreciated.
I can't seem to get the second (or 3rd, etc.) page to print on a new piece
of paper. For instance, I have 15 line items in an order. The header and
the 1st 12 lines print on page 1, then lines 13 thru 15 print on the same
piece of paper directly on top of lines 1 thru 4.
I've review the Microsoft examples, but they don't seem to apply exactly to
the structure of my document which is composed of a header and detail.
Thanks again in advance for any pointers.
Private Sub pd_Print(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim linesPerPage As Single = 1, yPos As Single = 1, count As Integer = 1
Dim AddrLen As Integer = 0, topMargin As Single = 10, leftMargin As Single =
10
Dim line As String = Nothing, detCntr As Integer = 0, header As String =
Nothing, document As String = Nothing
Dim SoldTo As String = Nothing, Status As String = Nothing, lineCNTR As
Integer = 0
Dim MultiplePages As Boolean = False
Try
fnName = "pd Print"
' Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
OHCSNO = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCSNO.ToString
OHORNO = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHORNO.ToString
OHORGN = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHORGN.ToString
OHORGN = Microsoft.VisualBasic.Trim(OHORGN)
OHCSNM = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCSNM.ToString
OHCAD1 = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCAD1.ToString
OHCAD2 =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCAD2.ToString)
OHBLCY =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLCY.ToString)
OHBLST =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLST.ToString)
OHBLZP =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLZP.ToString)
OHBLCT =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLCT.ToString)
OHSHNM =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSHNM.ToString)
OHSAD1 =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSAD1.ToString)
OHSAD2 =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSAD2.ToString)
OHSCTY =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSCTY.ToString)
OHSHST =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSHST.ToString)
OHSZIP =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSZIP.ToString)
OHCSPO = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCSPO.ToString
OHSPIN = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSPIN.ToString
OHNOTE =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHNOTE.ToString)
OHWHID = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHWHID.ToString
OHSLS1 = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSLS1.ToString
OHLUSR =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHLUSR.ToString)
OHETUS =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHETUS.ToString)
OHCACD = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCACD.ToString
DueDate =
Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).DueDate.ToString
OrderDate =
Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OrderDate.ToString
'Get the order status.
Me.SpGetPipeOrderStatusTableAdapter1.Fill(Me.DsGetPipeOrderStatus1.spGetPipeOrderStatus,
OHORNO)
Status = Me.DsGetPipeOrderStatus1.spGetPipeOrderStatus(0).Status.ToString
Dim detCNT As Integer = Me.DsPickTicketDetail1.Tables(0).Rows.Count
Dim bCityStateZip As String = OHBLCY & ", " & OHBLST & " " & OHBLZP
Dim sCityStateZip As String = OHSCTY & ", " & OHSHST & " " & OHSZIP
Dim bLen As Integer = Microsoft.VisualBasic.Len(bCityStateZip)
Dim sLen As Integer = Microsoft.VisualBasic.Len(OHCAD1)
Dim sLen2 As Integer = Microsoft.VisualBasic.Len(OHCAD2)
Dim nLen As Integer = Microsoft.VisualBasic.Len(OHCSNM)
Dim ODORSQ As String = Nothing, ODITNO As String = Nothing, ItemDescription
As String = Nothing
Dim ODUNMS As String = Nothing, Qty As String = Nothing
Dim bLine As Integer = detCNT + 6
SoldTo = "SOLD TO" & Microsoft.VisualBasic.Space(40) & OHCSNO
Dim HDCol1Width As Integer = Microsoft.VisualBasic.Len(SoldTo)
If Status = "Reprint" Then
header = Microsoft.VisualBasic.Space(HDCol1Width - 8) & "***** REPRINT
*****"
Else
header = ""
End If
header = FormatDateTime(Today, DateFormat.ShortDate) &
Microsoft.VisualBasic.Space(10) & OHLUSR & vbCrLf
header = header & FormatDateTime(Now, DateFormat.LongTime) & vbCrLf
header = header & Microsoft.VisualBasic.Space(Col10) &
FormatDateTime(OrderDate, DateFormat.ShortDate) & vbCrLf
header = header & Microsoft.VisualBasic.Space(Col10) &
FormatDateTime(DueDate, DateFormat.ShortDate) & vbCrLf & vbCrLf
header = header & SoldTo & Microsoft.VisualBasic.Space(7) & "SHIP TO" &
vbCrLf
header = header & OHCSNM & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(OHCSNM) + 7) & OHSHNM & vbCrLf
header = header & OHCAD1 & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(OHCAD1) + 7) & OHSAD1 & vbCrLf
If OHCAD2 <> "" Then
header = header & OHCAD2 & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(OHCAD2) + 7) & OHSAD2 & vbCrLf
End If
If OHCAD2 = "" And OHSAD2 <> "" Then
header = header & Microsoft.VisualBasic.Space(HDCol1Width) & OHSAD2 & vbCrLf
End If
header = header & bCityStateZip & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(bCityStateZip) + 7) & sCityStateZip & vbCrLf &
vbCrLf & vbCrLf
header = header & "Customer PO. No."
header = header & Microsoft.VisualBasic.Space(9) & "Order No."
header = header & Microsoft.VisualBasic.Space(17) & "Ship Via"
header = header & Microsoft.VisualBasic.Space(34) & "Whse"
header = header & Microsoft.VisualBasic.Space(10) & "SLSPN" & vbCrLf
header = header & Microsoft.VisualBasic.StrDup(115, "_") & vbCrLf
header = header & OHCSPO
header = header & Microsoft.VisualBasic.Space(25 -
Microsoft.VisualBasic.Len(OHCSPO)) & OHORNO & "/" & OHORGN
header = header & Microsoft.VisualBasic.Space(19) & OHSPIN
header = header & Microsoft.VisualBasic.Space(43 -
Microsoft.VisualBasic.Len(OHSPIN)) & OHWHID
header = header & Microsoft.VisualBasic.Space(15 -
Microsoft.VisualBasic.Len(OHWHID)) & OHSLS1 & vbCrLf
header = header & Microsoft.VisualBasic.StrDup(115, "_") & vbCrLf & vbCrLf
header = header & Microsoft.VisualBasic.StrDup(Col10 - 7, " ") & "Order
Picked" & vbCrLf
header = header & "L. Item No. Description" &
Microsoft.VisualBasic.Space(53) & "UM" & Microsoft.VisualBasic.Space(5) &
"Qty" & Microsoft.VisualBasic.Space(5) & "Qty" & vbCrLf
header = header & Microsoft.VisualBasic.StrDup(115, "_") & vbCrLf & vbCrLf
AdditionalPages:
Do While detCntr < detCNT
If lineCNTR >= 24 And MultiplePages = False Then
MultiplePages = True
line = line & Microsoft.VisualBasic.StrDup(66, "_") & "(continued on next
page)" & Microsoft.VisualBasic.StrDup(66, "_") & vbCrLf
GoTo Print
End If
ODORSQ =
Microsoft.VisualBasic.Trim(Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ODORSQ.ToString)
ODITNO =
Microsoft.VisualBasic.Trim(Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ODITNO.ToString)
ODITNO = Microsoft.VisualBasic.LTrim(ODITNO)
ItemDescription =
Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ItemDescription.ToString
ItemDescription = Microsoft.VisualBasic.LTrim(ItemDescription)
ODUNMS = Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ODUNMS.ToString
Qty = Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).Qty.ToString
If Microsoft.VisualBasic.Val(Qty) = 0 Then
Qty = ""
If Microsoft.VisualBasic.Len(ODORSQ) = 1 Then
line = line & ODORSQ & Microsoft.VisualBasic.Space(3)
End If
If Microsoft.VisualBasic.Len(ODORSQ) <> 1 Then
line = line & ODORSQ & Microsoft.VisualBasic.Space(2)
End If
line = line & ODITNO & Microsoft.VisualBasic.Space(24 -
Microsoft.VisualBasic.Len(ODITNO)) & ItemDescription &
Microsoft.VisualBasic.Space(20) & Microsoft.VisualBasic.StrDup(180 -
Microsoft.VisualBasic.Len(ODITNO & Microsoft.VisualBasic.Space(24 -
Microsoft.VisualBasic.Len(ODITNO)) & ItemDescription), "_") & vbCrLf &
vbCrLf & vbCrLf
Else
If Microsoft.VisualBasic.Len(ODORSQ) = 1 Then
line = line & ODORSQ & Microsoft.VisualBasic.Space(3)
End If
If Microsoft.VisualBasic.Len(ODORSQ) <> 1 Then
line = line & ODORSQ & Microsoft.VisualBasic.Space(2)
End If
line = line & ODITNO & Microsoft.VisualBasic.Space(24 -
Microsoft.VisualBasic.Len(ODITNO)) & ItemDescription
line = line & Microsoft.VisualBasic.Space(62 -
Microsoft.VisualBasic.Len(ItemDescription)) & ODUNMS &
Microsoft.VisualBasic.Space(4) &
Microsoft.VisualBasic.FormatNumber(Microsoft.VisualBasic.Val(Qty), 2,
TriState.UseDefault, TriState.UseDefault, TriState.UseDefault) &
Microsoft.VisualBasic.Space(10 - Microsoft.VisualBasic.Len(Qty)) & "______"
& " " & Microsoft.VisualBasic.StrDup(200 - 115, "_") & vbCrLf & vbCrLf &
vbCrLf
End If
lineCNTR = lineCNTR + 2
detCntr = detCntr + 1
Loop
MultiplePages = False
Print:
line = line & vbCrLf & vbCrLf
If Status = "Reprint" Then
line = line & Microsoft.VisualBasic.Space(HDCol1Width - 8) & "***** REPRINT
*****" & vbCrLf
End If
line = line & Microsoft.VisualBasic.StrDup(155, "_")
document = header & line
yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
ev.Graphics.DrawString(document, printFont, Brushes.Black, leftMargin, yPos,
StringFormat.GenericTypographic) 'New StringFormat()
'If more lines exist, print another page.
If MultiplePages = True Then
ev.HasMorePages = True
line = Nothing
GoTo AdditionalPages
Else
detCntr = 0
ev.HasMorePages = False
End If
Catch ex As Exception
Dim Er As String = "pd Print: " & OrderNo & ": " & ex.Message
MsgBox(Er)
End Try
End Sub