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

Update en Access

Estas en el tema de Update en Access en el foro de .NET en Foros del Web. Al intentar hacer una actualizacion de una base de datos Access, me da un error si se deja cualquiera de los campos a actualizar en ...
  #1 (permalink)  
Antiguo 29/03/2005, 01:18
 
Fecha de Ingreso: abril-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
Update en Access

Al intentar hacer una actualizacion de una base de datos Access, me da un error si se deja cualquiera de los campos a actualizar en blanco.

¿Cuál puede ser la causa?

¿Cómo lo puedo solucionar?

Esperando me contesteis lo antes posible y dando las gracias por anticipado.
  #2 (permalink)  
Antiguo 29/03/2005, 03:27
 
Fecha de Ingreso: julio-2003
Mensajes: 102
Antigüedad: 20 años, 9 meses
Puntos: 0
escribe la sentencia sql o dinos como estas haciendo la actualización.
¿Has probado con las comillas simples?
¿de que tipo son los datos que quieres dejar vacios?¿fechas?
¿no serán requeridos esos campos?

Ya nos diras,

Un saludo
  #3 (permalink)  
Antiguo 29/03/2005, 04:21
Avatar de Delek  
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 75
Antigüedad: 19 años, 1 mes
Puntos: 0
A mi me ocurrió mismo, al hacer una actualización por lo visto es necesario incluir TODOS los campos de la fila, de lo contrario salta un error.
Adjunto código de una sentencia, por si alguien se le ocurre algo para que solo pueda lea uno e los campos.
De momento yo lo resolví leyendo la tabla, y volviendo a updatear los mismos valores, y solo cambiando la fecha, como el ejemplo de abajo.


Cita:
int numMens = ultimoMensajeForo();
string updateSql = "UPDATE TFORO SET numMens= @numMens, autorUltMens = @autor, fechaUltMens = @fecha WHERE NOMFORO= @foro";
OleDbConnection oConec = new OleDbConnection(strCon);
OleDbCommand oComand = new OleDbCommand(updateSql, oConec);

oComand.Parameters.Add(new OleDbParameter("@numMens", OleDbType.Numeric));
oComand.Parameters.Add(new OleDbParameter("@autor", OleDbType.VarWChar));
oComand.Parameters.Add(new OleDbParameter("@fecha", OleDbType.Date));
oComand.Parameters.Add(new OleDbParameter("@foro", OleDbType.VarWChar, 20));
oComand.Parameters["@numMens"].Value = numMens;
oComand.Parameters["@autor"].Value = user;
oComand.Parameters["@fecha"].Value = fecha;
oComand.Parameters["@foro"].Value = foro;
oComand.Connection.Open();
oComand.ExecuteNonQuery();
oComand.Connection.Close();
Saludos

Delek
  #4 (permalink)  
Antiguo 30/03/2005, 01:12
 
Fecha de Ingreso: abril-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
update con Access

La sentencia update es la siguiente:

UPDATE datos SET aceiteanad = ?, tipoMuestraD = ?, TBN = ?, TAN = ?, SOOT = ?, Sn = ?, Si = ?, resultado = ?, recomendaciones = ?, Pb = ?, ordenprueba = ?, Ni = ?, Mo = ?, millascambio = ?, millas = ?, metodo = ?, KV40 = ?, KV100 = ?, kmcambio = ?, km = ?, IV = ?, horascambio = ?, horas = ?, H2O = ?, FP = ?, fechaTomaD = ?, fechacambio = ?, Fe = ?, Cu = ?, Cr = ?, comentarioseccion = ?, Al = ?, Ag = ? WHERE (OTD = ?) AND (matriculaD = ?)

y la carga de los parámetros la siguiente:

dsOT.Clear()
Conexion.Open()
ModificacionDatos.UpdateCommand.Parameters("aceite anad").Value = txtLitros.Text
ModificacionDatos.UpdateCommand.Parameters("tipoMu estraD").Value = txtTipoMuestra.Text
ModificacionDatos.UpdateCommand.Parameters("TBN"). Value = txtTBN.Text
ModificacionDatos.UpdateCommand.Parameters("TAN"). Value = txtTAN.Text
ModificacionDatos.UpdateCommand.Parameters("SOOT") .Value = txtCarbonilla.Text
ModificacionDatos.UpdateCommand.Parameters("Sn").V alue = txtSn.Text
ModificacionDatos.UpdateCommand.Parameters("Si").V alue = txtSi.Text
ModificacionDatos.UpdateCommand.Parameters("result ado").Value = txtResultado.Text
ModificacionDatos.UpdateCommand.Parameters("recome ndaciones").Value = txtRecomendaciones.Text
ModificacionDatos.UpdateCommand.Parameters("Pb").V alue = txtPb.Text
ModificacionDatos.UpdateCommand.Parameters("ordenp rueba").Value = txtOrdenPrueba.Text
ModificacionDatos.UpdateCommand.Parameters("Ni").V alue = txtNi.Text
ModificacionDatos.UpdateCommand.Parameters("Mo").V alue = txtMo.Text
ModificacionDatos.UpdateCommand.Parameters("millas cambio").Value = txtMilCambio.Text
ModificacionDatos.UpdateCommand.Parameters("millas ").Value = txtMillas.Text
ModificacionDatos.UpdateCommand.Parameters("metodo ").Value = txtMetodoToma.Text
ModificacionDatos.UpdateCommand.Parameters("KV40") .Value = txtVisc40.Text
ModificacionDatos.UpdateCommand.Parameters("KV100" ).Value = txtVisc100.Text
ModificacionDatos.UpdateCommand.Parameters("kmcamb io").Value = txtKmCambio.Text
ModificacionDatos.UpdateCommand.Parameters("km").V alue = txtKms.Text
ModificacionDatos.UpdateCommand.Parameters("IV").V alue = txtIV.Text
ModificacionDatos.UpdateCommand.Parameters("horasc ambio").Value = txtHoraCambio.Text
ModificacionDatos.UpdateCommand.Parameters("horas" ).Value = txtHoraToma.Text
ModificacionDatos.UpdateCommand.Parameters("H2O"). Value = txtAgua.Text
ModificacionDatos.UpdateCommand.Parameters("FP").V alue = txtPtoInf.Text
ModificacionDatos.UpdateCommand.Parameters("fechaT omaD").Value = txtFechaToma.Text
ModificacionDatos.UpdateCommand.Parameters("fechac ambio").Value = txtFecCambio.Text
ModificacionDatos.UpdateCommand.Parameters("Fe").V alue = txtFe.Text
ModificacionDatos.UpdateCommand.Parameters("Cu").V alue = txtCu.Text
ModificacionDatos.UpdateCommand.Parameters("Cr").V alue = txtCr.Text
ModificacionDatos.UpdateCommand.Parameters("coment arioseccion").Value = txtComentado.Text
ModificacionDatos.UpdateCommand.Parameters("Al").V alue = txtAl.Text
ModificacionDatos.UpdateCommand.Parameters("Ag").V alue = txtAg.Text
ModificacionDatos.UpdateCommand.Parameters("Origin al_OTD").Value = Me.cboOT.SelectedValue
ModificacionDatos.UpdateCommand.Parameters("Origin al_matriculaD").Value = Me.cboDatos.SelectedValue
ModificacionDatos.UpdateCommand.ExecuteNonQuery()
Conexion.Close()

El problema es que si cualquiera de los "TextBox" está vacio da un error :

La cadena de entrada no tiene el formato correcto.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.FormatException: La cadena de entrada no tiene el formato correcto.

Error de código fuente:


Línea 343: ModificacionDatos.UpdateCommand.Parameters("Origin al_OTD").Value = Me.cboOT.SelectedValue
Línea 344: ModificacionDatos.UpdateCommand.Parameters("Origin al_matriculaD").Value = Me.cboDatos.SelectedValue
Línea 345: ModificacionDatos.UpdateCommand.ExecuteNonQuery()
Línea 346: Conexion.Close()
Línea 347: End Sub


Gracias y un saludo.
  #5 (permalink)  
Antiguo 30/03/2005, 01:15
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
En los campos de la BD, tienes los campos para permitir valores nulos?
__________________
Charlie.
  #6 (permalink)  
Antiguo 30/03/2005, 01:20
 
Fecha de Ingreso: abril-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
¿ Como puedo comprobar lo de los valores nulos ?

Gracias.
  #7 (permalink)  
Antiguo 30/03/2005, 02:06
 
Fecha de Ingreso: abril-2004
Mensajes: 23
Antigüedad: 20 años, 1 mes
Puntos: 0
Cita:
Iniciado por chcma
En los campos de la BD, tienes los campos para permitir valores nulos?
¿ Como puedo comprobar los valores nulos ?
  #8 (permalink)  
Antiguo 30/03/2005, 02:16
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues cuando defines el campo de una tabla tiene una opción de permitir valores nulos. En access creo que para saberlo es en vista diseño, pinchando sobre un campo, y abajo del todo están las opciones.

De todas formas creo que Access por defecto (si no es la clave primaria) sí que permite valores nulos.
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 10:41.