Hola necesito ayuda con un listado en un programa que estoy haciendo. Tengo una actividad para cada actividad tengo una colección de movimientos, los movimientos tienen personas que lo hacen. Necesito imprimir por cada persona los movimientos que tiene, la consulta esta pronta, pero el problema es cuando llego al final de la pagina en ves de agregarme una pagina nueva lo que hace es seguir imprimiendo en la misma pagina en la parte de arriba. Si alguien puede darme una ayuda, lo agradezco.
Aquí les dejo el segmento de código:
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim ObjAct As Actividades = Nothing
ObjAct = ComboBox1.SelectedItem
If Not ObjAct Is Nothing Then
' Definir fuente para imprimir
Dim fuenteimpresion As System.Drawing.Font = New Font("Arial", 12)
Dim fuenteT As System.Drawing.Font = New Font("Arial", 12, FontStyle.Bold)
Dim DE As DictionaryEntry
Dim DE2 As DictionaryEntry
Dim topMargin As Double = e.MarginBounds.Top
Dim yPos As Double = 0
Dim lineasXpagina As Double = 0
Dim count As Integer = 0
Dim texto As String = ""
Dim linea As LineasMov
Dim ObjMov As Movimientos
Dim ColP As New Hashtable
lineasXpagina = e.MarginBounds.Height / fuenteimpresion.GetHeight(e.Graphics)
texto = vbTab & vbTab & ObjAct.Descripcion & " de la fecha " & ObjAct.Fecha
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
e.Graphics.DrawString(texto, fuenteT, System.Drawing.Brushes.Black, 12, yPos)
count += 2
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
Dim Col As Hashtable = Administrador.DevolverInstancia.ObtenerMovimientos(ObjAct)
For Each DE In Col
ObjMov = DE.Value
Dim total As Integer = 0
total = (ObjMov.Cantidad * ObjMov.PrecioV) / ObjMov.Articulo.Unidad
If ColP.ContainsKey(ObjMov.Persona.Id) = True Then
linea = Nothing
linea = ColP(ObjMov.Persona.Id)
If Not linea Is Nothing Then
linea.Total += total
End If
Else
linea = New LineasMov(ObjMov.Id, ObjMov.Persona, total)
ColP.Add(linea.Persona.Id, linea)
End If
Next
Col.Clear()
For Each DE In ColP
linea = DE.Value
Col = Administrador.DevolverInstancia.ObtenerMovPersonas(linea.Persona, ObjAct)
Dim fuente2 As System.Drawing.Font = New Font("Arial", 12, FontStyle.Bold)
texto = vbTab & linea.Persona.Apellido & ", " & linea.Persona.Nombre
e.Graphics.DrawString(texto, fuente2, System.Drawing.Brushes.Black, 12, yPos)
count += 1
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
texto = vbTab & "Cantidad"
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
texto = vbTab & vbTab & vbTab & "Descripción"
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
texto = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & "Monto"
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
count += 1
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
For Each DE2 In Col
ObjMov = DE2.Value
texto = vbTab & ObjMov.Cantidad
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
texto = vbTab & vbTab & vbTab & ObjMov.Articulo.Descripcion
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
texto = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & (ObjMov.PrecioV * ObjMov.Cantidad) / ObjMov.Articulo.Unidad
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
count += 1
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
xi += 1
If count > lineasXpagina Then
e.HasMorePages = True
count = 0
Else
e.HasMorePages = False
End If
Next
texto = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & "Total"
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
count += 1
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
texto = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & linea.Total
e.Graphics.DrawString(texto, fuenteimpresion, System.Drawing.Brushes.Black, 12, yPos)
count += 2
yPos = topMargin + (count * fuenteimpresion.GetHeight(e.Graphics))
If count > lineasXpagina Then
e.HasMorePages = True
count = 0
Else
e.HasMorePages = False
End If
Next
End If
End Sub