Foros del Web » Programación para mayores de 30 ;) » .NET »

error al actualizar

Estas en el tema de error al actualizar en el foro de .NET en Foros del Web. Tengo problemas al actulizar la base de datos: miradlo a ver que error tiene y como lo puedo solucionar: Dim cn As OleDbConnection cn = ...
  #1 (permalink)  
Antiguo 01/10/2006, 14:43
 
Fecha de Ingreso: junio-2003
Mensajes: 119
Antigüedad: 20 años, 10 meses
Puntos: 0
error al actualizar

Tengo problemas al actulizar la base de datos:
miradlo a ver que error tiene y como lo puedo solucionar:

Dim cn As OleDbConnection
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\basetiempos.mdb")
cn.Open()
Dim cm As OleDbCommand
cm = New OleDbCommand("UPDATE tareas SET Fecha = @Fecha, Idoperario = @Idoperario, Nombreoperaro =@Nombreoperaro, Codigo = @Codigo, Id @Id, Cadena = @Cadena, Descripcion = @Descripcion, Tipodeseccion = @Tipodeseccion, Cantidad = @Cantidad, Tiempo = @Tiempo, Tiempoprevisto = @Tiempoprevisto, Diferencia = @Diferencia, Hora = @Hora, Observaciones = @Observaciones")
cm.Parameters.Add("@Fecha", OleDbType.Date)
cm.Parameters("@Fecha").Value = Me.FechaDateTimePicker.Text
cm.Parameters.Add("@Idoperario", OleDbType.Numeric)
cm.Parameters("@Idoperario").Value = Me.IdoperarioTextBox.Text
cm.Parameters.Add("@Nombreoperaro", OleDbType.VarChar)
cm.Parameters("@Nombreoperaro").Value = Me.NombreoperaroTextBox.Text
cm.Parameters.Add("@Apellidosoperario", OleDbType.VarChar)
cm.Parameters("@Apellidosoperario").Value = Me.ApellidosoperarioTextBox.Text
cm.Parameters.Add("@Codigo", OleDbType.VarChar)
cm.Parameters("@Codigo").Value = Me.CodigoTextBox.Text
cm.Parameters.Add("@Id", OleDbType.Numeric)
cm.Parameters("@Id").Value = Me.IdTextBox.Text
cm.Parameters.Add("@Cadena", OleDbType.VarChar)
cm.Parameters("@Cadena").Value = Me.CadenaTextBox.Text
cm.Parameters.Add("@Descripcion", OleDbType.VarChar)
cm.Parameters("@Descripcion").Value = Me.DescripcionTextBox.Text
cm.Parameters.Add("@Cantidad", OleDbType.Numeric)
cm.Parameters("@Cantidad").Value = Me.CantidadTextBox.Text
cm.Parameters.Add("@Tiempo", OleDbType.Numeric)
cm.Parameters("@Tiempo").Value = Me.TiempoTextBox.Text
cm.Parameters.Add("@Tiempoprevisto", OleDbType.Numeric)
cm.Parameters("@Tiempoprevisto").Value = Me.TiempoprevistoTextBox.Text
cm.Parameters.Add("@Tipodeseccion", OleDbType.VarChar)
cm.Parameters("@Tipodeseccion").Value = Me.TipodeseccionTextBox.Text
cm.Parameters.Add("@Diferencia", OleDbType.Numeric)
cm.Parameters("@Diferencia").Value = Me.DiferenciaTextBox.Text
cm.Parameters.Add("@Hora", OleDbType.Decimal)
cm.Parameters("@Hora").Value = Me.HoraTextBox.Text
cm.Parameters.Add("@Observaciones", OleDbType.VarChar)
cm.Parameters("@Observaciones").Value = Me.ObservacionesTextBox.Text
cm.Connection = cn
cm.ExecuteNonQuery()
cn.Close()
MessageBox.Show("actualizado")
  #2 (permalink)  
Antiguo 02/10/2006, 01:23
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Que error te da?Te ejecuta sin problemas, pero no se actualiza?Te salta una excepción?Que excepción?.....
  #3 (permalink)  
Antiguo 02/10/2006, 05:31
 
Fecha de Ingreso: agosto-2006
Mensajes: 101
Antigüedad: 17 años, 8 meses
Puntos: 0
No añades los parámetros en el orden correcto.

Recuerda que trabajando con OleDb hay que añadir los parámetros en el mismo orden que aparecen en la consulta SQL.

Te marco en rojo donde he visto el error:

cm = New OleDbCommand("UPDATE tareas SET Fecha = @Fecha, Idoperario = @Idoperario, Nombreoperaro =@Nombreoperaro, Codigo = @Codigo, Id @Id, Cadena = @Cadena, Descripcion = @Descripcion, Tipodeseccion = @Tipodeseccion, Cantidad = @Cantidad, Tiempo = @Tiempo, Tiempoprevisto = @Tiempoprevisto, Diferencia = @Diferencia, Hora = @Hora, Observaciones = @Observaciones")

Y abajo al declararlos, despues de nombreoperario, añades apellidooperario
Fijate:

cm.Parameters.Add("@Fecha", OleDbType.Date)
cm.Parameters("@Fecha").Value = Me.FechaDateTimePicker.Text
cm.Parameters.Add("@Idoperario", OleDbType.Numeric)
cm.Parameters("@Idoperario").Value = Me.IdoperarioTextBox.Text
cm.Parameters.Add("@Nombreoperaro", OleDbType.VarChar)
cm.Parameters("@Nombreoperaro").Value = Me.NombreoperaroTextBox.Text
cm.Parameters.Add("@Apellidosoperario", OleDbType.VarChar)
cm.Parameters("@Apellidosoperario").Value = Me.ApellidosoperarioTextBox.Text
cm.Parameters.Add("@Codigo", OleDbType.VarChar)
cm.Parameters("@Codigo").Value = Me.CodigoTextBox.Text
cm.Parameters.Add("@Id", OleDbType.Numeric)


Yo creo que es eso. No he mirado más al ver ese error. Revisalo y nos cuentas.
Saludos.
__________________
Artículos sobre programación - www.webprogramacion.com
  #4 (permalink)  
Antiguo 02/10/2006, 11:17
 
Fecha de Ingreso: junio-2003
Mensajes: 119
Antigüedad: 20 años, 10 meses
Puntos: 0
Lo consigo actualizar, pero el problema lo tengo en que me actualiza todos los registros de la tabla.

como lo soluciono?
  #5 (permalink)  
Antiguo 02/10/2006, 11:21
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
claro, coño tienes que añadir el where a la consulta.
"UPDATE tareas SET Fecha = @Fecha, Idoperario = @Idoperario, Nombreoperaro =@Nombreoperaro, Codigo = @Codigo, Id @Id, Cadena = @Cadena, Descripcion = @Descripcion, Tipodeseccion = @Tipodeseccion, Cantidad = @Cantidad, Tiempo = @Tiempo, Tiempoprevisto = @Tiempoprevisto, Diferencia = @Diferencia, Hora = @Hora, Observaciones = @Observaciones where id=3 "
  #6 (permalink)  
Antiguo 02/10/2006, 11:46
 
Fecha de Ingreso: junio-2003
Mensajes: 119
Antigüedad: 20 años, 10 meses
Puntos: 0
perdon por ser tan torpe pero el where que lo pondria en todos o solo en el final, te agracederia mucho si me hicieras la composicion,
Muchas gracias colega
  #7 (permalink)  
Antiguo 03/10/2006, 01:27
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Sólo al final, las clausuras SQL para update standar se componen de:

UPDATE tabla set campo=valor,campo2=valor2 where condición.

Luego te quedaría algo así:
Código:
cm = New OleDbCommand("UPDATE tareas SET Fecha = @Fecha, Idoperario = @Idoperario, Nombreoperaro =@Nombreoperaro, Codigo = @Codigo, Id @Id, Cadena = @Cadena, Descripcion = @Descripcion, Tipodeseccion = @Tipodeseccion, Cantidad = @Cantidad, Tiempo = @Tiempo, Tiempoprevisto = @Tiempoprevisto, Diferencia = @Diferencia, Hora = @Hora, Observaciones = @Observaciones Where campo_id=3")
Dónde campo_id sería el nombre del campo o campos ID de la tabla que quieres actualizar, y el 3 sería el ID del registro (también puedes utilizar otro parámetro.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:01.