none
Indice Fuera del Interbalo RRS feed

  • Pregunta

  • Tengo un Evento

    Private Sub DtaGridClientes_CellClick

    agregue un campo en mi BD de Acces 2016 y me da el error fuera del interbalo les pongo mi codigo:

    Nota: no tenia ningun problema al navegar con los registros ya tengo 1 año con mi Bd y ahora que le agregue un campo me boto

    el error. les dejo el codigo haber si me pueden ayudar. los Indices vienen en orden del 0 al 17 que son los que tengo.

    el 17 es el campo que agregue es un combox que lo lleno desde la bd. Gracias. cabe mencionar que tengo una picturebox que es el campo 16.

    Private Sub DtaGridClientes_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DtaGridClientes.CellClick

            Dim i As Integer
            i = DtaGridClientes.CurrentRow.Index

            TxtIdCliente.Text = i

            TxtCliCalve.Text = DtaGridClientes.Item(0, i).Value()
            TxtCliEmpresa.Text = DtaGridClientes.Item(1, i).Value()
            TxtCliContacto.Text = DtaGridClientes.Item(2, i).Value()
            TxtClieContaco2.Text = DtaGridClientes.Item(3, i).Value()
            TxtClieContacto3.Text = DtaGridClientes.Item(4, i).Value()
            MaskTel1.Text = DtaGridClientes.Item(5, i).Value()
            MaskTel2.Text = DtaGridClientes.Item(6, i).Value()
            CboCliGiro.Text = DtaGridClientes.Item(7, i).Value()
            TxtClieExtension1.Text = DtaGridClientes.Item(8, i).Value()
            TxtClieExten2.Text = DtaGridClientes.Item(9, i).Value()
            TxtClieExtension3.Text = DtaGridClientes.Item(10, i).Value()
            TxtClieMovil1.Text = DtaGridClientes.Item(11, i).Value()
            TxtClieCorreo1.Text = DtaGridClientes.Item(12, i).Value()
            TxtClieCorreo2.Text = DtaGridClientes.Item(13, i).Value()
            TxtClieCorreo3.Text = DtaGridClientes.Item(14, i).Value()
            Observacion.Text = DtaGridClientes.Item(15, i).Value()

            Me.PicfotoClientes.Image = Image.FromStream(gF_ByteArrayToStream(CType(DtaGridClientes.Item(16, i).Value, Byte())))
            PicfotoClientes.SizeMode = PictureBoxSizeMode.StretchImage

            CboEstatusCli.Text = DtaGridClientes.Item(17, i).Value()
            DtaGridClientes.CurrentCell = DtaGridClientes.Rows(i).Cells(0)

        End Sub

    domingo, 9 de febrero de 2020 6:28

Todas las respuestas

  • Si te dice "Indice fuera del intervalo", entonces seguro que está fuera del intervalo. Aunque creas que has añadido un campo más, algo en la forma en que lo has añadido ha hecho que esa adición no se haya propagado hasta el sitio en el que te da el error de "fuera del intervalo".

    Para estos casos, lo mejor es usar el debugger. Cuando la depuración se detenga en la línea que da el error, usa las ventanitas del debugger para examinar la variable DataGridClientes.Item, y examina el número de items que tiene. Con seguridad te vas a encontrar que el 17 no existe.

    La cuestión sería encontrar por qué no existe en el DataGridClientes esa columna, pero para eso habría que saber de dónde ha salido ese DataGridClientes, que no se ve en el código que has aportado. Si tuviera las columnas configuradas para creación automática, y lo estuvieses llenando con un "Fill" a partir de la base de datos, entonces debería haber adquirido esa columna al agregarla en la tabla de la base de datos. Pero esto es incompatible con lo que mencionas de que "tengo un picturebox en el campo 16". Esto no se puede hacer de forma automática, lo cual implicaría que has definido a mano las columnas del DataGridView. Y si las has definido a mano, entonces no te toma de forma automática la nueva columna que añadiste en la tabla. Tendrías que acudir a la definición de columnas y agregar la columna nueva. Y asegurarte de que el orden es correcto, no vaya a ser que la agregues en posición 16 en lugar de 17.

    domingo, 9 de febrero de 2020 8:09