Visual Basic.NET - Salto de pagina

 
Vista:
sin imagen de perfil

Salto de pagina

Publicado por Guillermo (4 intervenciones) el 15/07/2015 03:32:43
Buen dia a todos.

Estoy solicitando su ayuda ya que tengo un printdocument en visual basic 2008 y en el hago una consulta a mi base de datos pero cuando los datos son muchos no me los muestra ya que no pasan a la otra pagina, Me podrian ayudar a entender como hacer el salto de pagina.

Gracias.

Este es el codigo que tengo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Dim i As Integer
        Dim yPos As Integer = 110
        Dim fuente As System.Drawing.Font
        Dim titulos As System.Drawing.Font
        Dim encabezados As System.Drawing.Font
 
        Dim stringFormat As New StringFormat()
        stringFormat.Alignment = StringAlignment.Center
        stringFormat.LineAlignment = StringAlignment.Near
 
        'Dim xRect As New Rectangle(35, 35, 800, 800)
 
        Dim dt As New DataTable()
 
        Dim strSQL As String = " SELECT codigo, descripcion, categoria,cantidad, zona FROM EXISTENCIAS ORDER BY codigo, zona"
 
        Dim da As New OleDb.OleDbDataAdapter(strSQL, conn)
 
        da.Fill(dt)
        da.Dispose()
 
        fuente = New System.Drawing.Font("Microsoft Sans Serif", 7)
        titulos = New System.Drawing.Font("Microsoft Sans Serif", 10, FontStyle.Bold)
        encabezados = New System.Drawing.Font("Microsoft Sans Serif", 7, FontStyle.Bold)
 
        'e.Graphics.DrawImage(frm_logo.PictureBox1.Image, 120, 30)
 
        e.Graphics.DrawString("EXISTENCIAS EN INVENTARIO", titulos, Brushes.Black, 20, 70)
 
        'Ajuste de los encabezados
        e.Graphics.DrawString("CODIGO", encabezados, Brushes.Black, 30, 100)
        e.Graphics.DrawString("DESCRIPCION", encabezados, Brushes.Black, 90, 100)
        e.Graphics.DrawString("CATEGORIA", encabezados, Brushes.Black, 575, 100)
        e.Graphics.DrawString("CANTIDAD", encabezados, Brushes.Black, 690, 100)
        e.Graphics.DrawString("ZONA", encabezados, Brushes.Black, 760, 100)
 
        yPos += 20
 
        'Ajuste de las filas
        For i = 0 To dt.Rows.Count - 1
            e.Graphics.DrawString(CStr(dt.Rows(i)("CODIGO")), fuente, Brushes.Black, 30, yPos)
            e.Graphics.DrawString(CStr(dt.Rows(i)("DESCRIPCION")), fuente, Brushes.Black, 90, yPos)
            e.Graphics.DrawString(CStr(dt.Rows(i)("CATEGORIA")), fuente, Brushes.Black, 610, yPos, stringFormat)
            e.Graphics.DrawString(CStr(dt.Rows(i)("CANTIDAD")), fuente, Brushes.Black, 720, yPos, stringFormat)
            e.Graphics.DrawString(CStr(dt.Rows(i)("ZONA")), fuente, Brushes.Black, 780, yPos, stringFormat)
 
            yPos += 25
 
        Next
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Salto de pagina

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 15/07/2015 18:19:24
copio tu codigo y le agrego:

'Ajuste de las filas
For i = 0 To dt.Rows.Count - 1
e.Graphics.DrawString(CStr(dt.Rows(i)("CODIGO")), fuente, Brushes.Black, 30, yPos)
e.Graphics.DrawString(CStr(dt.Rows(i)("DESCRIPCION")), fuente, Brushes.Black, 90, yPos)
e.Graphics.DrawString(CStr(dt.Rows(i)("CATEGORIA")), fuente, Brushes.Black, 610, yPos, stringFormat)
e.Graphics.DrawString(CStr(dt.Rows(i)("CANTIDAD")), fuente, Brushes.Black, 720, yPos, stringFormat)
e.Graphics.DrawString(CStr(dt.Rows(i)("ZONA")), fuente, Brushes.Black, 780, yPos, stringFormat)

yPos += 25

if i> unacantidaddefilas then
e.HasMorePages=true
endif

Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Salto de pagina

Publicado por Guillermo (4 intervenciones) el 15/07/2015 20:21:47
Buen dia Wilfredo


Ya probe tu codigo y si se crea el salto de pagina pero no se detiene, es decir crea mas de los que necesito tengo que cancelar el procedimiento para que pare y una ves que para puedo ver los datos sin embargo se repiten los mismos datos en cada hoja.

Me explico, el dt.rows me cuenta el total de filas que tengo en la consulta y al imprimirlo me los envia todos en una sola hoja no se como hacerle para indicarle al ciclo que cuando llegue a 45 registros me de el salto de pagina y siga en el registro que se quedo hasta que termine con el total de filas (registros)que tiene el dt.

Gracais por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Salto de pagina

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 15/07/2015 20:52:13
Pues ya se te hace mas facil:
If i>45 then
e.hasmorepages=true
ypos=posicion inicial en la siguiente pagina, con lo cual en la isguiente página empezará al inicio.

No tiene porqué repetirse si es que estás programando eso en el evento print_page

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Salto de pagina

Publicado por Guillermo (4 intervenciones) el 16/07/2015 03:03:15
Al ejecutarse el e.hasmorepages = true efectivante da el salto de pagina pero cuando da el salto de pagina vuelve a entrar al ciclo for y comienza desde o.

Es decir inicia de nuevo con el primer registro que hay almacenado en mi datatale.

Ahora con lo que estoy trabajando es con el for para que cuando de el salto este recuerde en ultimo registro de la pagina anterior y continue en la siguiente donde se quedo.

Es decir si en la primer hoja va de la linea 1 a la 45 que al dar el salto de pagina comience con el 46 y no con el 1 como lo hace cada vez que se ejecuta el e.hasmorepages.

Muchas gracias por compartir tu conocimiento.


Saludso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Salto de pagina

Publicado por Guillermo (4 intervenciones) el 16/07/2015 18:33:15
Este es el codigo completo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Private Sub btn_rpExistencias_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_rpExistencias.Click
 
        PrintPreviewDialog1.Document = PrintDocumentExistencias
        PrintPreviewDialog1.ShowDialog()
 
End Sub
 
Private Sub PrintDocumentExistencias_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocumentExistencias.PrintPage
 
        Dim i As Integer
        Dim yPos As Integer = 110
        Dim fuente As System.Drawing.Font
        Dim titulos As System.Drawing.Font
        Dim encabezados As System.Drawing.Font
 
        Dim stringFormat As New StringFormat()
        stringFormat.Alignment = StringAlignment.Center
        stringFormat.LineAlignment = StringAlignment.Near
 
        'Dim xRect As New Rectangle(35, 35, 800, 800)
 
        Dim dt As New DataTable()
        Dim strSQL As String = " SELECT codigo, descripcion, categoria,cantidad, zona FROM EXISTENCIAS ORDER BY codigo, zona"
        Dim da As New OleDb.OleDbDataAdapter(strSQL, conn)
 
        da.Fill(dt)
        da.Dispose()
 
        fuente = New System.Drawing.Font("Microsoft Sans Serif", 7)
        titulos = New System.Drawing.Font("Microsoft Sans Serif", 10, FontStyle.Bold)
        encabezados = New System.Drawing.Font("Microsoft Sans Serif", 7, FontStyle.Bold)
 
        'e.Graphics.DrawImage(frm_logo.PictureBox1.Image, 120, 30)
 
        e.Graphics.DrawString("EXISTENCIAS EN INVENTARIO", titulos, Brushes.Black, 20, 70)
 
        'Ajuste de los encabezados
        e.Graphics.DrawString("CODIGO", encabezados, Brushes.Black, 30, 100)
        e.Graphics.DrawString("DESCRIPCION", encabezados, Brushes.Black, 90, 100)
        e.Graphics.DrawString("CATEGORIA", encabezados, Brushes.Black, 575, 100)
        e.Graphics.DrawString("CANTIDAD", encabezados, Brushes.Black, 690, 100)
        e.Graphics.DrawString("ZONA", encabezados, Brushes.Black, 760, 100)
 
        yPos += 20
 
        'Este for de abajo es el que recorre todas las filas de mi tabla, aqui es donde no puedo
realizar el salto de pagina es decir, si uso el e.hasmorepage = true cuando genera la segunda
hoja vuelve a comenzar con la primer fila que hay en mi tabla y solo se ven las primeras 50
 
        For i = 0 To dt.Rows.Count - 1
                            e.Graphics.DrawString(CStr(dt.Rows(i)("CODIGO")), fuente, Brushes.Black, 30, yPos)
                e.Graphics.DrawString(CStr(dt.Rows(i)("DESCRIPCION")), fuente, Brushes.Black, 90, yPos)
                e.Graphics.DrawString(CStr(dt.Rows(i)("CATEGORIA")), fuente, Brushes.Black, 610, yPos, stringFormat)
                e.Graphics.DrawString(CStr(dt.Rows(i)("CANTIDAD")), fuente, Brushes.Black, 720, yPos, stringFormat)
                e.Graphics.DrawString(CStr(dt.Rows(i)("ZONA")), fuente, Brushes.Black, 780, yPos, stringFormat)
            End If
        Next
 
    End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar