none
Modificar RRS feed

  • Pregunta

  • Buenas noches, les escribo para hacerles la siguiente pregunta. Estoy programando en visual.net 2013 express y sql management studio 2014 express, la pregunta seria ¿Como hacer para modificar/actualizar un registro, que se guarde y lo muestre en una grilla? He probado con este codigo:

    conexion.Open()

    Dim query As string="UPDATE clientes SET cliente = '" & TCLIENTE.Text & "', direccion = '" & TDIRECCION.Text & "', telefono = '" & TTELEFONO.Text & "',email = '" & TEMAIL.Text & "', dni = '" & DNI.Text & "', pasaporte = '" & PASAPORTe.Text & "', registro_medico = '" & REGISTROmedico.Text & "', padres = '" & PADRES.Text & "'" Dim enunciado As New SqlCommand(query, conexion) enunciado.Parameters.AddWithValue("@Cliente", TCLIENTE.Text) enunciado.Parameters.AddWithValue("@Direccion", TDIRECCION.Text) enunciado.Parameters.AddWithValue("@Telefono", TTELEFONO.Text) enunciado.Parameters.AddWithValue("@Email", TEMAIL.Text) enunciado.Parameters.AddWithValue("@Dni", DNI.Text) enunciado.Parameters.AddWithValue("@Pasaporte", PASAPORTe.Text) enunciado.Parameters.AddWithValue("@Registro_medico", REGISTROmedico.Text) enunciado.Parameters.AddWithValue("@padres", PADRES.Text) enunciado.ExecuteNonQuery() MsgBox("El registro se ha modificado correctamente") conexion.Close()


    El problema que tengo en este codigo es que al modificar un campo (ejemplo la direccion), cuando lo muestro en la grilla, me modifica todas las direcciones, donde tendria que modificar una sola direccion. Muchas gracias, saludos<style type="text/css">p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: left; }</style>
    jueves, 17 de agosto de 2017 1:32

Respuestas

  • Hola
    Te falta la condición que modifique solamente el registro que necesites modificar.

    Eso se soluciona utilizando la cláusula "WHERE" en la que le indicas a la consulta que registro o registros quieres utilizar. En tu caso si lo que quieres modificar es el registro por ejemplo en que conoces el codigo del cliente o algún otro campo que lo identifique, sería UPDATE CLIENTES SET ... WHERE cliente = "xxxx".

    Con esto solo te modificará el registro o línea en que tu código de cliente sea igual a xxx".

    Si no especificas una cláusula where el update te modificará toda la tabla.

    Un saludo.

    Gemma

    WHERE

    jueves, 17 de agosto de 2017 4:07

Todas las respuestas

  • Hola
    Te falta la condición que modifique solamente el registro que necesites modificar.

    Eso se soluciona utilizando la cláusula "WHERE" en la que le indicas a la consulta que registro o registros quieres utilizar. En tu caso si lo que quieres modificar es el registro por ejemplo en que conoces el codigo del cliente o algún otro campo que lo identifique, sería UPDATE CLIENTES SET ... WHERE cliente = "xxxx".

    Con esto solo te modificará el registro o línea en que tu código de cliente sea igual a xxx".

    Si no especificas una cláusula where el update te modificará toda la tabla.

    Un saludo.

    Gemma

    WHERE

    jueves, 17 de agosto de 2017 4:07
  • Dos consideraciones:

    - Fíjate en la consulta sql de actualización que has escrito, no especificas ninguna condición para limitar el número de filas a afectar, para restringir las filas a impactar debes utilizar la cláusula WHERE, por ejemplo:

    UPDATE T SET Col1 = @Val1, Col2 = @Val2 WHERE ID = @ID;

    - Nota que agregas parámetros a la colección Parameters, sin embargo concatenas el valor de la propiedad Text -de cada cuadro de texto- a la cadena de caracteres, ¿qué sentido tiene?

    Dim query = "UPDATE clientes SET cliente = @Cliente, direccion = @Direccion, ... WHERE ID = @ID"


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    jueves, 17 de agosto de 2017 4:21
  • Muchas gracias.. era consciente de que me faltaba la clausula where para filtrar, pero pregunte porque no sabia como armarlo, por decirlo de una manera. Saludos y muy agradecido
    jueves, 17 de agosto de 2017 16:10