actualizar registro base de datos .NET

Iniciado por andaluz, 29 Mayo 2012, 21:58 PM

0 Miembros y 1 Visitante están viendo este tema.

andaluz

Hola a todos, quiero realizar una actualización a un registro que elijo de una base de datos, pero no me lo actualiza bien, me gustaría saber en que parte del código me he equivocado.

os dejo el código
Código (vbnet) [Seleccionar]

    Private Sub btn_Buscar_Cliente_Modificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Buscar_Cliente_Modificar.Click
        Dim id_cl As Integer
        Dim Nombre_cl, Apellidos_cl, DNI_cl, Poblacion_cl, Domicilio_cl, Telefono_cl, Correo_cl As String
        Dim i As Integer
        Dim DNI_Buscar As String

        ' pido por pantalla que introduzca el DNI del cliente que queremos buscar
        DNI_Buscar = InputBox("Introduce el DNI del cliente a buscar", "Cliente a buscar")

        ' almaceno el valor del DNI en un TextBox oculto
        txt_DNI_Cli_Modificar_Oculto.Text = DNI_Buscar

        For i = 0 To ClientesTableAdapter.GetData.Rows.Count - 1
            id_cl = ClientesTableAdapter.GetData.Rows(i).Item(0)
            Nombre_cl = ClientesTableAdapter.GetData.Rows(i).Item(1)
            Apellidos_cl = ClientesTableAdapter.GetData.Rows(i).Item(2)
            DNI_cl = ClientesTableAdapter.GetData.Rows(i).Item(3)
            Poblacion_cl = ClientesTableAdapter.GetData.Rows(i).Item(4)
            Domicilio_cl = ClientesTableAdapter.GetData.Rows(i).Item(5)
            Telefono_cl = ClientesTableAdapter.GetData.Rows(i).Item(6)
            Correo_cl = ClientesTableAdapter.GetData.Rows(i).Item(7)

            ' compruebo que ha introducido algun DNI
            If DNI_Buscar = "" Then
                MessageBox.Show("No ha introducido ningun DNI, introduzca alguno", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit Sub
            End If

            ' si el DNI que ha introducido existe
            If DNI_Buscar = DNI_cl Then
                grb_Modificar_Clientes.Enabled = True
                txt_Nombre_Cli_Modificar.Text = Nombre_cl
                txt_Apellidos_Cli_Modificar.Text = Apellidos_cl
                txt_DNI_Cli_Modificar.Text = DNI_cl
                txt_Poblacion_Cli_Modificar.Text = Poblacion_cl
                txt_Domicilio_Cli_Modificar.Text = Domicilio_cl
                txt_Telefono_Cli_Modificar.Text = Telefono_cl
                txt_Correo_Cli_Modificar.Text = Correo_cl
                MessageBox.Show("Cliente encontrado", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)
                MessageBox.Show("Modifique los valores que desee", "Modificar", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                'grb_Modificar_Clientes.Enabled = False
                btn_Buscar_Cliente_Modificar.Enabled = False
                btn_Modificar_Cliente_Modificar.Enabled = True
                btn_Cancelar_Cliente_Modificar.Enabled = True
                Exit Sub
            End If

            ' comprobamos si el DNI introducido existe
            If DNI_Buscar <> DNI_cl Then
            Else
                MessageBox.Show("El DNI que ha introducido no existe", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit Sub
            End If
        Next
    End Sub


Saludos

seba123neo

primero no usaria un inputbx, queda feo y ni se usa, mejor un textbox donde el tipo escriba. y para actualizar un registro simplemente ejecutar el comando SQL UPDATE y listo.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

HdM

Buenas.

Podrías simplificar mucho código/tiempo, si en vez de montar un bucle que recorra la tabla hasta encontrar la coincidencia de dni y cambiar valores de textos/botones, hicieses un SELECT ... WHERE... a la tabla buscando ese dni. Si existe, entonces cambias valores de los controles.

Cita de: seba123neo en 30 Mayo 2012, 00:01 AM
primero no usaria un inputbx, queda feo y ni se usa, mejor un textbox donde el tipo escriba. y para actualizar un registro simplemente ejecutar el comando SQL UPDATE y listo.

Correcto, ¿dónde está el código que debe actualizar el registro en bd? En teoría será en btn_Modificar_Cliente_Modificar_Click, pero no lo muestras.

Saludos.

- Nice to see you again -

andaluz

es verdad, no he puesto el código para modificar el registro, el código que he utilizado para actualizar el registro es el siguiente:

Código (vbnet) [Seleccionar]

Private Sub btn_Borrar_Cliente_Modificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Modificar_Cliente_Modificar.Click
        Dim id_cl As Integer
        Dim Nombre_cl, Apellidos_cl, DNI_cl, Poblacion_cl, Domicilio_cl, Telefono_cl, Correo_cl As String
        Dim i As Integer
        Dim DNI_Buscar As String

        ' almaceno el valor del DNI en un TextBox oculto
        DNI_Buscar = txt_DNI_Cli_Modificar_Oculto.Text

        For i = 0 To ClientesTableAdapter.GetData.Rows.Count - 1
            id_cl = ClientesTableAdapter.GetData.Rows(i).Item(0)
            Nombre_cl = ClientesTableAdapter.GetData.Rows(i).Item(1)
            Apellidos_cl = ClientesTableAdapter.GetData.Rows(i).Item(2)
            DNI_cl = ClientesTableAdapter.GetData.Rows(i).Item(3)
            Poblacion_cl = ClientesTableAdapter.GetData.Rows(i).Item(4)
            Domicilio_cl = ClientesTableAdapter.GetData.Rows(i).Item(5)
            Telefono_cl = ClientesTableAdapter.GetData.Rows(i).Item(6)
            Correo_cl = ClientesTableAdapter.GetData.Rows(i).Item(7)

            ' si el DNI que ha introducido existe
            If DNI_Buscar = DNI_cl Then
                grb_Modificar_Clientes.Enabled = True
                Nombre_cl = txt_Nombre_Cli_Modificar.Text
                Apellidos_cl = txt_Apellidos_Cli_Modificar.Text
                DNI_cl = txt_DNI_Cli_Modificar.Text
                Poblacion_cl = txt_Poblacion_Cli_Modificar.Text
                Domicilio_cl = txt_Domicilio_Cli_Modificar.Text
                Telefono_cl = txt_Telefono_Cli_Modificar.Text
                Correo_cl = txt_Correo_Cli_Modificar.Text

                ' Actualizo el cliente
                ClientesTableAdapter.Update(txt_Nombre_Cli_Modificar.Text, txt_Apellidos_Cli_Modificar.Text,
                                            txt_DNI_Cli_Modificar.Text, txt_Poblacion_Cli_Modificar.Text,
                                            txt_Domicilio_Cli_Modificar.Text, txt_Telefono_Cli_Modificar.Text,
                                            txt_Correo_Cli_Modificar.Text,
                                            id_cl, Nombre_cl, Apellidos_cl, DNI_cl,
                                            Poblacion_cl, Domicilio_cl, Telefono_cl, Correo_cl)
                MessageBox.Show("Cliente modificado", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information)

                Limpiar_TextBox(txt_Nombre_Cli_Modificar.Text, txt_Apellidos_Cli_Modificar.Text,
                                            txt_DNI_Cli_Modificar.Text, txt_Poblacion_Cli_Modificar.Text,
                                            txt_Domicilio_Cli_Modificar.Text, txt_Telefono_Cli_Modificar.Text,
                                            txt_Correo_Cli_Modificar.Text)

                grb_Modificar_Clientes.Enabled = False
                btn_Buscar_Cliente_Modificar.Enabled = True
                btn_Cancelar_Cliente_Modificar.Enabled = False
                btn_Modificar_Cliente_Modificar.Enabled = False
                Exit Sub
            End If
        Next
    End Sub


Saludos