none
ACTUALIZAR BASE DE DATOS ACCES DESDE VISUAL BASIC.NET LISTBOX RRS feed

  • Pregunta

  • AL ACTUALIZAR LA BASE DE DATOS, SE NE GUARDA EL ULTIMO ITEM DE LA LIST BOX EN TODAS LAS FILAS DE LA TAABLA DE LA BASE DE DATOS.

    Ejem: list box  guardar con intemas :

    1

    2

    3

    SI LE DOY A ACTUALIZAR Y AÁDO EL 4 ME APRECE EN LA BD.7

    4

    4

    4

    4

                       

    For Each item As String In EnfermedadesLista.Items
                        cmd = New OleDbCommand
                        cmd.CommandText = " DELETE FROM EnfermedadesTable WHERE Enfermedades = @enfermedades"
                        cmd.CommandText = " Update EnfermedadesTable set Enfermedades = @enfermedades where NHC= '" & TxtNHC.Text & "'"
                        cmd.Parameters.AddWithValue("@Enfermedades", item)
                        cmd.Parameters.AddWithValue("@NHC", TxtNHC.Text)



                        cmd.Connection = cn
                        cmd.ExecuteNonQuery()

                    Next

    miércoles, 30 de enero de 2019 11:47

Todas las respuestas

  • Fíjate en esta sentencia:

      cmd.CommandText = " Update EnfermedadesTable set Enfermedades = @enfermedades where NHC= '" & TxtNHC.Text & "'"

    Observa que no tiene ningún "where". Por lo tanto, el Update se aplica a TODAS las filas de tu tabla. Si tu bucle tiene 5 items en la lista, lo que haces es ponerle 5 veces el mismo valor a todos los registros de la tabla. Al final del bucle, todos los registros quedan con el último valor que les asignó el bucle.

    Por cierto, ten cuidado con la sentencia: fíjate que en lugar de ponerle un parámetro le estás concatenando el TxtNHC.Text, con lo que no sirve para nada la línea que hay más abajo en la que metes dicho valor en el parámetro. Pero esto no es la causa del error, fallará igual aunque corrijas el parámetro. El problema está en la falta de WHERE.

    miércoles, 30 de enero de 2019 14:10
  • y donde coloce el  where, si en la sentecia esta9

    muchimas gracis

    miércoles, 30 de enero de 2019 18:07
  • Perdona, he dicho una tontería. Por alguna razón he visto mal la sentencia y he pensado que no tenía where, cuando en realidad sí que lo tiene, aunque se le asigna el mismo valor en todas las iteraciones.

    Va a ser necesario usar el debugger, poner un punto de ruptura en la sentencia, y examinar cuáles son los valores que le están llegando. Entonces, cuando todavía está la ejecución ahí parada, con esos valores se examina lo que hay en ese momento en la base de datos y se compara a ver cuáles son los registros que se verán afectados. Me voy a arriesgar a decir que cuando los examines seguramente te encontrarás que todos tienen en el campo NHC el mismo valor que estás pasando en el Where, y por eso se comporta como si el Where no existiese.

    miércoles, 30 de enero de 2019 19:13