Dag iedereen,
Ik heb een irritant probleem. Ik probeer de gegevens van mijn sql database te printen maar dit is precies toch niet zo simpel als dat het lijkt. Het printen op zich lukt wel, tot er meer dan 1 bladzijde bij te pas komt. Het lukt met gewoon niet om 2 VERSCHILLENDE bladzijden te maken.
Er zijn twee scenarios:
- Oneindige printloop waarbij slechts de eerste pagina oneindig wordt herhaald
- Slechts 1 pagina
Dit is mijn code:
Code:
Private Sub prntDocument_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles prntDocument.PrintPage
Const maxStudentsPerPage As Integer = 67
Dim strFirstPage As String = ""
Dim strSecondPage As String = ""
Dim intAantalStudenten As Integer = objPrint.TotalStudents
Dim strLeerling As String = String.Empty
Dim scmdCommand As New SqlClient.SqlCommand
Dim cnnLeerlingen As New SqlClient.SqlConnection
Dim sdrReader As SqlClient.SqlDataReader
'fonts
Dim fontHeader As Font
Dim HeaderFontName As String = "Courier New"
Dim HeaderFontSize As Integer = 10
fontHeader = New Font(HeaderFontName, HeaderFontSize, FontStyle.Bold)
Dim fontText As Font
Dim TextFontName As String = "Courier New"
Dim TextFontSize As Integer = 10
fontText = New Font(HeaderFontName, HeaderFontSize, FontStyle.Regular)
'end of fonts
cnnLeerlingen.ConnectionString = My.Settings.LeerlingenConnectionString
scmdCommand.Connection = cnnLeerlingen
scmdCommand.CommandText = "SELECT ID, Voornaam, Achternaam, Klas, Aanmeldtijd, Afmeldtijd FROM tblData"
cnnLeerlingen.Open()
sdrReader = scmdCommand.ExecuteReader
Do While sdrReader.Read
If (CInt(sdrReader.Item("ID")) <= maxStudentsPerPage) Then
strFirstPage &= sdrReader.Item("ID").ToString & vbTab & sdrReader.Item("Voornaam").ToString & vbTab & sdrReader.Item("Achternaam").ToString & _
vbTab & sdrReader.Item("Klas").ToString & vbTab & sdrReader.Item("Aanmeldtijd").ToString & vbTab & sdrReader.Item("Afmeldtijd").ToString & vbNewLine
If (CInt(sdrReader.Item("ID")) <= (maxStudentsPerPage * 2)) Then
strSecondPage &= sdrReader.Item("ID").ToString & vbTab & sdrReader.Item("Voornaam").ToString & vbTab & sdrReader.Item("Achternaam").ToString & _
vbTab & sdrReader.Item("Klas").ToString & vbTab & sdrReader.Item("Aanmeldtijd").ToString & vbTab & sdrReader.Item("Afmeldtijd").ToString & vbNewLine
End If
End If
Loop
sdrReader.Close()
cnnLeerlingen.Close()
e.Graphics.DrawString(strFirstPage, fontText, Brushes.Black, 80, 50)
e.Graphics.DrawString(strSecondPage, fontText, Brushes.Black, 80, 50)
End Sub
Als ik er "e.hasMorePages = True" bijzet, komt de infinite loop in het spel.
Hopelijk kan iemand me hierbij helpen!
Alvast bedankt,
Dries
Favorieten/bladwijzers