none
actualizar datos

    Question

  • buen dia, quiero actualizar mi db en access 2003 i no puedooo :(

    me marca el siguiente error: NO SE HAN ESPECIFICADO VALORES PARA ALGUNOS DE LOS PARAMETROS REQUERIDOS

     pero ya lo debugie i los campos ia tienen valor, es como si no me pudiera hacer la asignacion o no se.

    El codigo q utilizo el el siguiente:

    Dim conexion As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database.mdb")
    Dim SQLUpdate As String
    SQLUpdate = "update REGISTRO set TRAVELER ='" & TextBoxNumTraveler.Text & "', HORAFIN ='" & LabelHora.Text & "', FECHAFIN ='" & LabelFecha.Text & "', HERRAMIENTALISTA ='" & lista & "' where TRAVELER ='" & TextBoxNumTraveler.Text & "'"
    Dim cmd As New OleDbCommand(SQLUpdate, conexion)
    cmd.CommandType = CommandType.Text
    conexion.Open()
    cmd.ExecuteNonQuery()
    MessageBox.Show("REGISTRO ACTUALIZADO", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information)
    cmd.ExecuteNonQuery()
    conexion.Close()

    tambien lo intente de esta manera i no puedo:

    SQLUpdate = "update REGISTRO set traveler =@traveler, horafin=@hora, fechafin=@fecha, herramientalista=@lista where traveler=@traveler"
    Dim cmd As New OleDbCommand(SQLUpdate, conexion)
    cmd.CommandType = CommandType.Text
    cmd.Parameters.AddWithValue("@traveler", Me.TextBoxNumTraveler.Text)
    cmd.Parameters.AddWithValue("@hora", Me.LabelHora.Text)
    cmd.Parameters.AddWithValue("@fecha", Me.LabelFecha.Text)
    cmd.Parameters.AddWithValue("@lista", lista)
    conexion.Open()
    cmd.ExecuteNonQuery()
    MessageBox.Show("REGISTRO ACTUALIZADO", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information)
    cmd.ExecuteNonQuery()
    conexion.Close()

     

    Espero su ayuda

    Gracias

    Saludos

    Tuesday, July 05, 2011 3:08 PM

All replies

  • hola

    recuerda que en Access el orden de los parametros es importante

    esta linea

    cmd.Parameters.AddWithValue("@traveler", Me.TextBoxNumTraveler.Text)

    deberi ir al final, como ultimo parametro

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, July 05, 2011 3:13 PM
  • Buenas anaofe.

    Como bien comenta nuestro compañero Leandro, si trabajas con parámetros deberá contener el Array de Parameters la misma cantidad de objetos.

    De lo que no estoy seguro de si arroja una excepción si tratas de agregar un valor ya existente, no puedo probartelo ahora, prueba a ponerle "traveler2"

     

    SQLUpdate = "update REGISTRO set traveler =@traveler, horafin=@hora, fechafin=@fecha, herramientalista=@lista where traveler=@traveler2"
    
    ...
    
    cmd.Parameters.AddWithValue("@traveler", Me.TextBoxNumTraveler.Text)
    cmd.Parameters.AddWithValue("@hora", Me.LabelHora.Text)
    cmd.Parameters.AddWithValue("@fecha", Me.LabelFecha.Text)
    cmd.Parameters.AddWithValue("@lista", lista)
    cmd.Parameters.AddWithValue("@traveler2", Me.TextBoxNumTraveler.Text)
    

     

    Un saludo.


    Antonio López Atienza
    Microsoft Community Contributor
    .NET Developer
    Code examples
    http://www.lopezatienza.es
    Tuesday, July 05, 2011 3:50 PM
  • si algo ademas que acabo de ver con tu respuesta es que esta actualziando el mismo campos que usa en el where, lo cual no seria bueno

    quizas seria bueno usar

     

    SQLUpdate = "update REGISTRO set horafin=@hora, fechafin=@fecha, herramientalista=@lista where traveler=@traveler"

    ...


    cmd.Parameters.AddWithValue("@hora", Me.LabelHora.Text)
    cmd.Parameters.AddWithValue("@fecha", Me.LabelFecha.Text)
    cmd.Parameters.AddWithValue("@lista", lista)

    cmd.Parameters.AddWithValue("@traveler", Me.TextBoxNumTraveler.Text)

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, July 05, 2011 3:58 PM
  • Buenas.

    Es cierto lo que comenta Leandro, ya que por error puedes hacer que tengas registros con el campo traveler duplicado.

    Piensa bien si te es necesario modificar este campo.

    Un saludo.


    Antonio López Atienza
    Microsoft Community Contributor
    .NET Developer
    Code examples
    http://www.lopezatienza.es
    Tuesday, July 05, 2011 4:04 PM
  • HOLA LOPEZ Y LEANDRO

    IA LO INTENTE DE LAS DIFRENTES FORMAS EN LAS QUE ME DIJERON

    I NO ME FUNCIONA, ME SIGE MARCANDO EL MISMO ERROR

    ESTABA CHECANDO LOS VALORES DE LAS VARIABLES LOCALES Y

    PARA ME MANDA EL VALOR =44444% ME AGREGA ESE SIGNO

    AL FINAL. ALGUIEN SABE PORQUE?

     

    GRACIAS POR SU AYUDA Y SU TIEMPO!

    Wednesday, July 06, 2011 5:53 PM
  • HOLA LEANDRO

    YA CCONTESTE ARRIBA! LO PUEDES CHECAR PORFAVOR?

    Wednesday, July 06, 2011 5:54 PM
  • ahh nooo!

    no es ese error, xke ia le puse where traveler = 44444

    i sige marcando error!

    Ahora tambien le fui borrando uno de los parametros para ver si en algun

    de ellos estaba el fallo peroo sige marcando error!

     

    Influe en algo que en mi tabla tenga 10 campos y solo mencione

    estos 4 en mi instruccion UPDATE???

    Wednesday, July 06, 2011 6:12 PM
  • Buenas anaofe.

    No que va, el mencionar únicamente 4 campos no debe dar problemas.

    Entonces estás trabajando con la segunda opción, la de el uso de Parameters ¿verdad?

    Hagamos una cosa, asignale el tipo de dato de cada parámetro para descartar que sea un posible fallo de tipo:

     

    cmd.Parameters.Add("@traveler", SqlDbType.Int)
    cmd.Parameters.AddWithValue("@traveler", Me.TextBoxNumTraveler.Text)
    cmd.Parameters.Add("@hora", SqlDbType.VarChar)
    cmd.Parameters.AddWithValue("@hora", Me.LabelHora.Text)
    cmd.Parameters.Add("@fecha", SqlDbType.VarChar)
    cmd.Parameters.AddWithValue("@fecha", Me.LabelFecha.Text)
    cmd.Parameters.Add("@lista", SqlDbType.VarChar)
    cmd.Parameters.AddWithValue("@lista", lista)
    

     

    Aquí está una referencia a los SqlDbType.

    Por cierto, la variable lista ¿qué es lo que tiene?

    Un saludo.


    Antonio López Atienza
    Microsoft Community Contributor
    .NET Developer
    Code examples
    http://www.lopezatienza.es
    Thursday, July 07, 2011 6:26 AM