none
Tengo un error al tratar de registrar clientes en bd access RRS feed

  • Pregunta

  • Buenas, al tratar de  registrar un cliente me salta un error de el numero de valores de consulta y el numero de valores de destino son diferentes y la verdad que no veo el error por ningun lado... dejo el codigo a ver si veis algo

    Private Sub BUSCAR_Nsecuencia()

            Try
                Using cnn As New OleDbConnection(cadenaConexion)

                    Dim cmd As OleDbCommand = cnn.CreateCommand()
                    cmd.CommandText = "SELECT * FROM Cinta WHERE Nombre=?"
                    cmd.Parameters.AddWithValue("@Nombre", NombreComboBox.Text)

                    cnn.Open()

                    Dim dr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

                    If (dr.HasRows) Then
                        dr.Read()
                        ApellidosTextBox.Text = Convert.ToString(dr(0))
                        DNITextBox.Text = Convert.ToString(dr(1))
                        EmailTextBox.Text = Convert.ToString(dr(2))
                        EdadComboBox.Text = Convert.ToString(dr(3))
                        Teléfono_MóvilTextBox.Text = Convert.ToString(dr(4))
                        DirecciónTextBox.Text = Convert.ToString(dr(5))
                        CiudadTextBox.Text = Convert.ToString(dr(6))
                        ProvinciaTextBox.Text = Convert.ToString(dr(7))
                        EstadoComboBox.Text = Convert.ToString(dr(8))
                        NotasTextBox.Text = Convert.ToString(dr(9))

                    Else
                        ApellidosTextBox.Clear()
                        DNITextBox.Clear()
                        EmailTextBox.Clear()
                        EdadComboBox.Text = ""
                        Teléfono_MóvilTextBox.Clear()
                        DirecciónTextBox.Clear()
                        CiudadTextBox.Clear()
                        ProvinciaTextBox.Clear()
                        EstadoComboBox.Text = ""
                        NotasTextBox.Clear()

                    End If

                End Using

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

        End Sub

        Private Sub Nuevo()

            Try
                Using cmd As New OleDbCommand()
                    cmd.CommandText = "INSERT INTO Cinta VALUES (?, ?, ?, ?, ?, ?)"

                    ' Añadimos los parámetros en el mismo orden en el
                    ' que están definidos los campos en la tabla Cinta.
                    '
                    cmd.Parameters.AddWithValue("@p1", ObtenerValorParametro(NombreComboBox.Text))
                    cmd.Parameters.AddWithValue("@p2", ObtenerValorParametro(ApellidosTextBox.Text))
                    cmd.Parameters.AddWithValue("@p3", ObtenerValorParametro(DNITextBox.Text))
                    cmd.Parameters.AddWithValue("@p4", ObtenerValorParametro(EmailTextBox.Text))
                    cmd.Parameters.AddWithValue("@p5", ObtenerValorParametro(EdadComboBox.Text))
                    cmd.Parameters.AddWithValue("@p6", ObtenerValorParametro(Teléfono_MóvilTextBox.Text))
                    cmd.Parameters.AddWithValue("@p7", ObtenerValorParametro(DirecciónTextBox.Text))
                    cmd.Parameters.AddWithValue("@p8", ObtenerValorParametro(CiudadTextBox.Text))
                    cmd.Parameters.AddWithValue("@p9", ObtenerValorParametro(ProvinciaTextBox.Text))
                    cmd.Parameters.AddWithValue("@p10", ObtenerValorParametro(EstadoComboBox.Text))
                    cmd.Parameters.AddWithValue("@p11", ObtenerValorParametro(NotasTextBox.Text))

                    
                    ExecuteAction(cmd)

                    Mostrar()

                    MsgBox("Registro Guardado")

                End Using

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

        End Sub

        Private Sub Modificar()

            Try
                ' Creamos el objeto Command
                Using cmd As New OleDbCommand()

                    ' Le especificamos la consulta que
                    ' queremos ejecutar. 
                    '
                    cmd.CommandText = _
                        "UPDATE Cinta SET " & _
                        "Apellidos= ?, " & _
                        "[DNI]= ?, " & _
                        "Email= ?, " & _
                        "Edad = ? " & _
                        "[Teléfono Móvil] = ? " & _
                        "Dirección = ? " & _
                        "Ciudad = ? " & _
                        "Provincia = ? " & _
                        "Estado = ? " & _
                        "Notas = ? " & _
                        "WHERE Nombre = ?"

                    ' Añadimos los parámetros en el mismo orden
                    ' en el que se han declarado en la consulta
                    ' SQL.
                    '
                    cmd.Parameters.AddWithValue("@Apellidos", ApellidosTextBox.Text)
                    cmd.Parameters.AddWithValue("@DNI", DNITextBox.Text)
                    cmd.Parameters.AddWithValue("@Email", EmailTextBox.Text)
                    cmd.Parameters.AddWithValue("@Edad", EdadComboBox.Text)
                    cmd.Parameters.AddWithValue("@Teléfono Móvil", Teléfono_MóvilTextBox.Text)
                    cmd.Parameters.AddWithValue("@Dirección", DirecciónTextBox.Text)
                    cmd.Parameters.AddWithValue("@Ciudad", CiudadTextBox.Text)
                    cmd.Parameters.AddWithValue("@Provincia", ProvinciaTextBox.Text)
                    cmd.Parameters.AddWithValue("@Estado", EstadoComboBox.Text)
                    cmd.Parameters.AddWithValue("@Notas", NotasTextBox.Text)
                    cmd.Parameters.AddWithValue("@Nombre", NombreComboBox.Text)

                    ' Ejectuamos el comando
                    ExecuteAction(cmd)

                    Mostrar()

                    MsgBox("REGISTRO ACTUALIZADO")

                End Using

            Catch ex As Exception
                ' Se ha producido un error
                MessageBox.Show(ex.Message)

            End Try

        End Sub

        Private Sub Eliminar()

            Try
                ' Creamos el objeto Command
                Using cmd As New OleDbCommand()

                    ' Le especificamos la consulta que
                    ' queremos ejecutar. 
                    '
                    cmd.CommandText = _
                        "DELETE FROM Cinta " & _
                        "WHERE Nombre = ?"

                    ' Añadimos los parámetros en el mismo orden
                    ' en el que se han declarado en la consulta
                    ' SQL.
                    '
                    cmd.Parameters.AddWithValue("@Nombre", NombreComboBox.Text)

                    ' Ejectuamos el comando
                    ExecuteAction(cmd)

                    Mostrar()

                    MsgBox("REGISTRO ELIMINADO")

                End Using

            Catch ex As Exception
                ' Se ha producido un error
                MessageBox.Show(ex.Message)

            End Try

        End Sub

    martes, 5 de febrero de 2013 20:24

Respuestas

  • hola este error se debe a como su nombre lo dice estas insertando mas ( o menos) columnas de las que requiere la tabla, un ejemplo rapido seria

    tienes una tabla con 3 campos   -- id,nombre, edad

    pero en tu sp solo ingresas 2

    insert into tabla values ('1','minombre');  -- aqui cometes un error dado que la tabla nesesita 3 campos

    insert into tabla values ('1','minombre','23','24'); -- aqui cometes un error dado que la tabla nesesita 3 campos

    si solo vas a insertar 2 campos de los 3 que nesesitas lo que debes hacer es indicarlo en la query asi:

    insert into tabla (id,nombre) values ('1','minombre');

    espero haber aclarado un poco tu duda, saludos nos cuentas como te fue.


    si mi respuesta te ayudo votala como util, si resolvio tu duda marcala como respuesta, de esta manera ayudas a otros compañeros que tengan dudas similares.

    • Propuesto como respuesta EddieMontana24 miércoles, 6 de febrero de 2013 18:47
    • Marcado como respuesta Nathan 13 miércoles, 20 de mayo de 2015 12:41
    martes, 5 de febrero de 2013 23:20

Todas las respuestas

  • hola este error se debe a como su nombre lo dice estas insertando mas ( o menos) columnas de las que requiere la tabla, un ejemplo rapido seria

    tienes una tabla con 3 campos   -- id,nombre, edad

    pero en tu sp solo ingresas 2

    insert into tabla values ('1','minombre');  -- aqui cometes un error dado que la tabla nesesita 3 campos

    insert into tabla values ('1','minombre','23','24'); -- aqui cometes un error dado que la tabla nesesita 3 campos

    si solo vas a insertar 2 campos de los 3 que nesesitas lo que debes hacer es indicarlo en la query asi:

    insert into tabla (id,nombre) values ('1','minombre');

    espero haber aclarado un poco tu duda, saludos nos cuentas como te fue.


    si mi respuesta te ayudo votala como util, si resolvio tu duda marcala como respuesta, de esta manera ayudas a otros compañeros que tengan dudas similares.

    • Propuesto como respuesta EddieMontana24 miércoles, 6 de febrero de 2013 18:47
    • Marcado como respuesta Nathan 13 miércoles, 20 de mayo de 2015 12:41
    martes, 5 de febrero de 2013 23:20
  • gracias amigo me sirvio, la verdad que no me habia dado cuenta de especificar lo que queria ingresar en la bd, gracias y un saludo
    miércoles, 6 de febrero de 2013 12:07