Public Sub StringToPrint_rptLog(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs)
Dim posY As Integer = 115
Dim i As Integer = 0
If (frmLog.ckhbxInjob.Checked = False) Then
AnyString(e.Graphics, "รายการ Login Logout ทั้งหมด", 300, 20)
Else
AnyString(e.Graphics, "รายการ Login ที่ยังไม่ได้ Logout", 300, 20)
End If
AnyString(e.Graphics, "________________________________________________________________________________________________", 20, 35)
AnyString(e.Graphics, "ชื่อพนักงาน", 20, 60)
AnyString(e.Graphics, "เวลา Login", 170, 60)
AnyString(e.Graphics, "ประจำที่", 320, 60)
AnyString(e.Graphics, "IN-OUT", 390, 60)
AnyString(e.Graphics, "เงินที่เก็บได้", 490, 60)
AnyString(e.Graphics, "เวลา Logout", 590, 60)
AnyString(e.Graphics, "________________________________________________________________________________________________", 20, 85)
While (i <= frmLog.loops - 1)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(0).Value.ToString(), 20, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(1).Value.ToString(), 170, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(2).Value.ToString(), 320, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(3).Value.ToString(), 390, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(4).Value.ToString(), 490, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(5).Value.ToString(), 590, posY)
posY = posY + 30
i = i + 1
If (i Mod 34 = 0) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End While
End Sub
Public Sub StringToPrint_rptLog(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs)
Dim posY As Integer = 115
Static i As Integer = 0
Static IsNewPage As Boolean = False
Dim y As Integer = frmLog.loops
If (frmLog.ckhbxInjob.Checked = False) Then
If (i < 1) Then
AnyString(e.Graphics, "รายการ Login Logout ทั้งหมด", 300, 20)
End If
Else
If (i < 1) Then
AnyString(e.Graphics, "รายการ Login ที่ยังไม่ได้ Logout", 300, 20)
End If
End If
AnyString(e.Graphics, "________________________________________________________________________________________________", 20, 35)
AnyString(e.Graphics, "ชื่อพนักงาน", 20, 60)
AnyString(e.Graphics, "เวลา Login", 170, 60)
AnyString(e.Graphics, "ประจำที่", 320, 60)
AnyString(e.Graphics, "IN-OUT", 390, 60)
AnyString(e.Graphics, "เงินที่เก็บได้", 490, 60)
AnyString(e.Graphics, "เวลา Logout", 590, 60)
AnyString(e.Graphics, "________________________________________________________________________________________________", 20, 85)
Do
If (IsNewPage = True) Then
y = frmLog.loops
End If
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(0).Value.ToString(), 20, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(1).Value.ToString(), 170, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(2).Value.ToString(), 320, posY)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(3).Value.ToString(), 390, posY)
AnyNum(e.Graphics, frmLog.dgvLog.Rows(i).Cells(4).Value.ToString(), 490, posY, StringAlignment.Far)
AnyString(e.Graphics, frmLog.dgvLog.Rows(i).Cells(5).Value.ToString(), 590, posY)
posY = posY + 30
i = i + 1
If (i Mod 34 = 0) Then
e.HasMorePages = True
y = 1
IsNewPage = True
Else
e.HasMorePages = False
End If
Loop While (i < y)
If (i >= frmLog.loops) Then
AnyString(e.Graphics, "________________________________________________________________________________________________", 20, posY)
AnyString(e.Graphics, "พิมพ์รายงานเมื่อ : " & Me.get_DateNow.ToString("dd/MM/yyyy hh:mm:ss"), 20, posY + 30)
AnyString(e.Graphics, "ผู้พิมพ์รายงาน : " & Me.get_NameFromLogin(frmMain.txtUsername.Text), 20, posY + 60)
i = 0
y = 0
End If
End Sub
หลักการคือ เราต้องประกาศตัวแปร i เป็น Static มันจะได้จำค่าล่าสุดเอาไว้ โดยตัวแปร i นี่ผมใช้นับ row ใน GridView ส่วนตัวแปร Y เอาไว้
หลอกมันว่ามันอ่านข้อมูลหมดหรือยังครับ
จากนั้นก็เอามาเช็คว่า Mod 34 ลงตัวหรือไม่ ถ้าลงตัวก็ ขึ้นหน้าใหม่โดย e.HasMorePages เป็นตัวเรียกหน้าใหม่