Principales respuestas
Tengo un error al tratar de registrar clientes en bd access

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
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
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
-