none
Ayuda Vista Previa de Formulario con DataGridView RRS feed

  • Pregunta

  • Buenas con todos, tengo un problemita: 

    hago el registro de mis ventas todo ok pero al momento de dar click a vista previa dice que no hay fila.

    Muestro los datos que lleno y el error donde cae mas el codigo fuente del PrintPage

    al control PrintDocument le llamado Pdt

    el formulario ventas es: ... no deja poner vinculos ni imagenes 

    Hago lleno le doy click boton vista previa que es el ultimo boton y que su codigo es:

    todo el resto ejecuta muy bien pero la vista previa y el imprimir no funciona pero si vista previa no va bien entonces no va imprimir.

    Al dar click a vista previa el error es:

     stb.Append(DataGridView1.DataSource.Rows(i)(0).ToString.PadRight(10)) ----> No hay ninguna fila en la posicion 2.  El codigo de usuario no controlo IndexOutofRangeException.

    Codigo fuentes:

    Boton Imprimir

    Private Sub btnImprimir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnImprimir.Click
            With Pdg 'dialogo de print
                .Document = Pdt
                .AllowPrintToFile = False
                .AllowSelection = True
                .AllowSomePages = True
                If .ShowDialog() = Windows.Forms.DialogResult.OK Then
                    Pdt.PrinterSettings = .PrinterSettings
                    Pdt.Print()
                End If
            End With

        End Sub

    ------------------------------------

    Boton Vista Previa

     Private Sub btnVistaP_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnVistaP.Click
            With ppd 'dialogo de preview
                .Document = Pdt
                .Text = "Lista de Productos ..."
                .WindowState = FormWindowState.Maximized
                .ShowDialog()
            End With
            'VistaPrevia.ShowDialog()

        End Sub

    -----------------------------------------------------------------

    y aca es donde esta el error mencionado lineas arriba de este codigo

    Private Sub Pdt_PrintPage(ByVal sender As Object, ByVal e As Printing.PrintPageEventArgs) Handles Pdt.PrintPage
            Dim i As Integer
            Dim stb, stbnombre, stbfecha, stbDOCUM, stbsuperior, stbsalto, stbpago,
                stbigv, stbpagot, stbfactura, stbpelldni, stbcodigocli, stbempresa,
                stbrucempresa, stbdistrito, stbdireccion, stbtelefono, stbvendedor,
                stbnombrevende, stbx As New StringBuilder()
            Dim texto, texto2, texto3, texto4, texto5, texto6, texto7, texto8, texto9,
                texto10, texto11, texto12, texto13, texto14, texto15, texto16, texto17,
                texto18, texto19 As String
            Dim fuente As New Font("Segoe UI", 9)
            Dim brocha As Brush = Brushes.Blue
            Dim X As Integer = e.MarginBounds.Left
            Dim Y As Integer = e.MarginBounds.Top
            '///
            stbsalto.Append("")
            texto3 = stbsalto.ToString
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbfecha.Append("Fecha del Pedido         :" & Me.DateTimePicker1.Text)
            texto8 = stbfecha.ToString
            e.Graphics.DrawString(texto8, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbempresa.Append("Nombre de la Empresa     : " & Me.Label4.Text)
            texto12 = stbempresa.ToString
            e.Graphics.DrawString(texto12, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbrucempresa.Append("Ruc de la Empresa        : " & Me.Label5.Text)
            texto13 = stbrucempresa.ToString
            e.Graphics.DrawString(texto13, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbDOCUM.Append("Tipo Documento           : " & Me.ComboBox2.Text)
            texto14 = stbDOCUM.ToString
            e.Graphics.DrawString(texto14, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            '///
            stbfactura.Append("NroDocumento             : " & Me.ComboBox4.Text)
            texto9 = stbfactura.ToString
            e.Graphics.DrawString(texto9, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbnombre.Append("----Datos del Cliente----")
            texto7 = stbnombre.ToString
            e.Graphics.DrawString(texto7, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbcodigocli.Append("Codigo del Cliente       : " & Me.TextBox1.Text)
            texto11 = stbcodigocli.ToString
            e.Graphics.DrawString(texto11, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbpelldni.Append("Nombre Completo          : " & Me.TextBox2.Text)
            texto10 = stbpelldni.ToString
            e.Graphics.DrawString(texto10, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbsuperior.Append("Detalle del Pedido-------")
            texto2 = stbsuperior.ToString
            e.Graphics.DrawString(texto2, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbsuperior.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbsuperior.Append("Codigo           Descripcion               Cantidad            Precio         Importe")
            texto2 = stbsuperior.ToString
            e.Graphics.DrawString(texto2, fuente, brocha, 250, Y)
            Y = Y + fuente.GetHeight
            stbsuperior.Length = 0
            stbsalto.Append("")
            texto3 = stbsalto.ToString
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            For i = 0 To Me.DataGridView1.Rows.Count - 1
                stb.Append(DataGridView1.DataSource.Rows(i)(0).ToString.PadRight(10))
                stb.Append(DataGridView1.DataSource.rows(i)(1).ToString.PadRight(20))
                stb.Append(DataGridView1.DataSource.rows(i)(2).ToString.PadRight(15))
                stb.Append(DataGridView1.DataSource.rows(i)(3).ToString.PadRight(10))
                stb.Append(DataGridView1.DataSource.rows(i)(4).ToString.PadRight(10))
                texto = stb.ToString
                e.Graphics.DrawString(texto, fuente, brocha, X, Y)
                Y = Y + fuente.GetHeight
                stb.Length = 0
            Next
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbsalto.Append("")
            texto3 = stbsalto.ToString
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbx.Append("-------------------------")
            texto19 = stbx.ToString
            e.Graphics.DrawString(texto19, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbpago.Append("Subtotal       :          " & Me.TextBox10.Text)
            texto4 = stbpago.ToString
            e.Graphics.DrawString(texto4, fuente, brocha, 400, Y)
            Y = Y + fuente.GetHeight
            stbpago.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbigv.Append("IGV            :          " & Me.TextBox11.Text)
            texto5 = stbigv.ToString
            e.Graphics.DrawString(texto5, fuente, brocha, 400, Y)
            Y = Y + fuente.GetHeight
            stbigv.Length = 0
            '///
            e.Graphics.DrawString(texto3, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbsalto.Length = 0
            '///
            stbpagot.Append("Total a Pagar  :          " & Me.TextBox12.Text)
            texto6 = stbpagot.ToString
            e.Graphics.DrawString(texto6, fuente, brocha, 400, Y)
            Y = Y + fuente.GetHeight
            stbpagot.Length = 0
            '///

        End Sub

    ********************************

    Espero puedan ayudarme a descubrir la falla.

    Gracias

    • Cambiado Enrique M. Montejo sábado, 15 de agosto de 2015 19:01 Pregunta relacionada con controles de Windows Forms.
    viernes, 7 de agosto de 2015 19:25

Todas las respuestas

  • Ya he solucionado parte del problema se puede decir el 95%

    Cambie a esto claro lineas arriba esta declarado data5: Private data5 As New DataTable

     'Encabezado de Datos  
            stbencabezado.Append("CÓDIGO".ToString.PadRight(7))
            stbencabezado.Append("DESCRIPCIÓN".ToString.PadRight(20))
            stbencabezado.Append("CANTIDAD".ToString.PadRight(20))
            stbencabezado.Append("PRECIO".ToString.PadRight(20))
            stbencabezado.Append("IMPORTE".ToString.PadRight(10))
            texto = stbencabezado.ToString
            e.Graphics.DrawString(texto, fuente, brocha, X, Y)
            Y = Y + fuente.GetHeight
            stbencabezado.Length = 0

            For i = 0 To Me.data5.Rows.Count - 1
                stb.Append(data5.Rows(i)(0).ToString.PadRight(7))
                stb.Append(data5.Rows(i)(1).ToString.PadRight(20))
                stb.Append(data5.Rows(i)(2).ToString.PadRight(10))
                stb.Append(data5.Rows(i)(3).ToString.PadRight(20))
                stb.Append(data5.Rows(i)(4).ToString.PadRight(10))
                texto = stb.ToString
                e.Graphics.DrawString(texto, fuente, brocha, X, Y)
                Y = Y + fuente.GetHeight
                stb.Length = 0
            Next

    ahora la vista previa esta bien perfecto sale el unico problema es que muestra 

    Codigo Descripcion Cantidad Precio Importe

    Pero todos salen alineados muy bien pero Descripcion y cantidad salen pegados 

    por ejemplo

    aceite girasol2 cuando deberia salir aceite girasol   2 el encabezado sale separado pero el contenido junto

    algo asi.


    • Editado AcuTau sábado, 8 de agosto de 2015 12:59 falto agregar datos
    sábado, 8 de agosto de 2015 0:22