Visual Basic.NET - Modificar datos con un form de una tabla de SQL SERVER

   
Vista:
Imágen de perfil de nano

Modificar datos con un form de una tabla de SQL SERVER

Publicado por nano (20 intervenciones) el 06/08/2015 08:56:41
Muy buenas a todos!!
Continuando con mis peleas personales con las tablas de SQL SERVER 2012 y Visual Studio, he creado un formulario donde "sacar" los datos de una tabla para poder modificar, agregar y demas funciones propias de una BBDD.
Me aparecen dos problemas que no consigo solventar:

1 ) Por un lado muestro los datos de un registro a traves de un combobox llamado "ComboBoxCliente" y su correspondiente boton para ello. Cuando yo elimino un registro o añado uno, esas modificaciones no me aparecen en la lista del combobox... es decir no se actualiza con los datos reales de la tabla..Como puedo hacer para que me aparezcan o se eliminen sin tener que cerrar la aplicación? Adjunto una foto como muestra además del codigo utilizado.
Me explico algo mejor: En la imagen adjunta acabo de añadir el registro con dni 152447K de nombre Manuel Garcia. Pero una vez agregado, no me aparece en el combobox para poderlo seleccionar por si necesitara realizar alguna modificación sobre el.

2) Cuando selecciono un registro cualquiera y lo modifico en los campos de arriba, al pulsar el boton modificar registro se me cambia ese campo al valor anterior o inicial y no me permite modificarlo y guardarlo en la tabla. Directamente no modifica nada.

Muchas gracias de antemano por vuestro tiempo y colaboración.

Public Class Formulario
Dim vista As New misdatosDataContext
Private Sub datos()
Dim datos = From actuales In vista.clientes
cuadricula.DataSource = datos
End Sub

Private Sub Formulario_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'BlacksenseDataSet.clientes' Puede moverla o quitarla según sea necesario.
Me.ClientesTableAdapter.Fill(Me.BlacksenseDataSet.clientes)
End Sub

Private Sub ButtonBuscar_Click(sender As Object, e As EventArgs) Handles ButtonBuscar.Click
Dim resgistroseleccionado As String = ComboBoxCliente.SelectedItem(0)
Dim consulta = From miregistro In vista.clientes Where miregistro.dni = resgistroseleccionado
For Each campos In consulta
TextBox1.Text = campos.nombre
TextBox2.Text = campos.apellido1
TextBox3.Text = campos.apellido2
TextBox4.Text = campos.direccion
TextBox5.Text = campos.cp
TextBox6.Text = campos.telefono
TextBox7.Text = campos.dni
Next
datos()
End Sub

Private Sub ButtonModificar_Click(sender As Object, e As EventArgs) Handles ButtonModificar.Click
Dim respuesta = MsgBox("Desea guardar los cambios realizados?", MsgBoxStyle.YesNo)
If respuesta = MsgBoxResult.Yes Then
Try
Dim registroseleccionado As String = ComboBoxCliente.SelectedItem(0)
Dim consulta = From miregistro In vista.clientes Where miregistro.dni = registroseleccionado
For Each campos In consulta
TextBox1.Text = campos.nombre
TextBox2.Text = campos.apellido1
TextBox3.Text = campos.apellido2
TextBox4.Text = campos.direccion
TextBox5.Text = campos.cp
TextBox6.Text = campos.telefono
TextBox7.Text = campos.dni
ComboBoxCliente.Text = campos.dni
Next
vista.SubmitChanges()
Catch ex As Exception
MsgBox("Error en el sistema")
End Try
Else
MsgBox("Registro no modificado", MsgBoxStyle.Information)
End If
datos()
End Sub

Private Sub ButtonEliminar_Click(sender As Object, e As EventArgs) Handles ButtonEliminar.Click
Dim respuesta = MsgBox("Desea eliminar el registro seleccionado?", MsgBoxStyle.YesNo)
If respuesta = MsgBoxResult.Yes Then
Try
Dim registroseleccionado As String = ComboBoxCliente.SelectedItem(0)
Dim consultaeliminar = From miregistro In vista.clientes Where miregistro.dni = registroseleccionado
For Each campos In consultaeliminar
vista.clientes.DeleteOnSubmit(campos)
Next
vista.SubmitChanges()
Catch ex As Exception
MsgBox("Error en el sistema")
End Try
Else
MsgBox("Registro no Eliminado", MsgBoxStyle.Information)
End If
datos()
End Sub

Private Sub ButtonNuevo_Click(sender As Object, e As EventArgs) Handles ButtonNuevo.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox7.Enabled = True
TextBox7.Focus()
End Sub

Private Sub ButtonGuardar_Click(sender As Object, e As EventArgs) Handles ButtonGuardar.Click
Dim respuesta = MsgBox("Desea guardar el nuevo registro?", MsgBoxStyle.YesNo)
If (respuesta = MsgBoxResult.Yes) Then
Try
Dim nuevoregistro As New clientes With {.dni = TextBox7.Text, .nombre = TextBox1.Text, .apellido1 = TextBox2.Text, .apellido2 = TextBox3.Text, .direccion = TextBox4.Text, .cp = TextBox5.Text, .telefono = TextBox6.Text}
vista.clientes.InsertOnSubmit(nuevoregistro)
vista.SubmitChanges()
Catch ex As Exception
MsgBox("Error en el Sistema")
End Try
Else
MsgBox("Registro no guardado", MsgBoxStyle.Information)
End If
datos()
End Sub
End Class

clientes_sqlerror1
clientes_sqlerror2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de nano

Modificar datos con un form de una tabla de SQL SERVER

Publicado por nano (20 intervenciones) el 06/08/2015 10:02:18
Hola amigos!!
El problema de la moficiacion de registros ya está solucionada:
En el boton modificar_registro tenía:

Dim registroseleccionado As String = ComboBoxCliente.SelectedItem(0)
Dim consulta = From miregistro In vista.clientes Where miregistro.dni = registroseleccionado
For Each campos In consulta
TextBox1.Text = campos.nombre
TextBox2.Text = campos.apellido1
TextBox3.Text = campos.apellido2
TextBox4.Text = campos.direccion
TextBox5.Text = campos.cp
TextBox6.Text = campos.telefono
TextBox7.Text = campos.dni


cuando en realidad es al reves:


Dim registroseleccionado As String = ComboBoxCliente.SelectedItem(0)
Dim consulta = From miregistro In vista.clientes Where miregistro.dni = registroseleccionado
For Each campos In consulta
campos.nombre = TextBox1.Text
campos.apellido1 = TextBox2.Text
campos.apellido2 = TextBox3.Text
campos.direccion = TextBox4.Text
campos.cp = TextBox5.Text
campos.telefono = TextBox6.Text

ComboBoxCliente.Text = campos.dni
Next

Me queda solventar poque el combobox no se me actualiza con los registros nuevos o eliminados...
A ver si alguien tiene la solución.
Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Modificar datos con un form de una tabla de SQL SERVER

Publicado por Khristian (17 intervenciones) el 07/08/2015 04:12:23
Hazle un databind (No se si en vb.net se llama así)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Modificar datos con un form de una tabla de SQL SERVER

Publicado por Miguel (353 intervenciones) el 07/08/2015 06:01:51
¿
1
Me.ClientesTableAdapter.Fill(Me.BlacksenseDataSet.clientes)
?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de nano

Modificar datos con un form de una tabla de SQL SERVER

Publicado por nano (20 intervenciones) el 07/08/2015 13:40:37
Muchas gracias a ambos,
Con la línea de Miguel ya lo he solucionado...
Yo tenía....

Me.ClientesTableAdapter.Update(BlacksenseDataSet.clientes)

...y ni me hacía nada ni además estaba dentro del botón correcto:

Gracias nuevamente y un saludo,
Nano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar