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
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
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.
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.
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:
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