
Como cambiar mensaje restriccion FK en aplicacion VB.NET
Publicado por nano (20 intervenciones) el 06/09/2015 10:37:57
Muy buenas a todos,
A raíz que voy limando mi humilde programa de servicios, me he encontrado con un problema.
Partimos de la base que tengo una tabla CLIENTES a la que le voy generando FACTURAS que están registradas en otra tabla. Para crear las relaciones hay un campo IDCLIENTE como PK en CLIENTES y un IDCLIENTE como FK en FACTURAS. No permito en la relación borrado en cascada.
Entonces, cuando se intenta borrar un cliente, aparece la restricción que no deja borrarlo pues ya tiene facturas asignadas. Hasta aquí todo va según quiero que funcione.
El problema lo tengo a la hora realizarlo en mi aplicacion , pues aparece la ventana de la restricción que para un usuario ajeno ni debe leerla ni porque entenderla.
Os adjunto un par de imágenes de como aparece el mensaje.
Entonces, la idea es que cuando salte la restricción FK le aparezca al usuario una ventana de mensaje que le diga o explique que no se pueden borrar clientes que ya tienen facturas asignadas.
Mi código para el borrado es el siguiente:
Private Sub ButtonEliminar_Click(sender As Object, e As EventArgs) Handles ButtonEliminar.Click
Dim result As DialogResult
result = MessageBox.Show("Desea realmente eliminar los clientes seleccionados?", "Eliminacion de Registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
Try
For Each row As DataGridViewRow In DGDatos.Rows
Dim marcado As Boolean = Convert.ToBoolean(row.Cells("Eliminar").Value)
If marcado Then
Dim onekey As Integer = Convert.ToInt32(row.Cells("CODIGO").Value)
Dim vdb As New vCliente
Dim func As New fCliente
vdb.gidcliente = onekey
If func.eliminar(vdb) Then
Else
MessageBox.Show("Los clientes no fueron eliminados.", "Eliminación de Datos", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Next
Call mostrar()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Cancelada la eliminacion de registros.", "Eliminación de Datos", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call mostrar()
End If
Call limpiar()
CbEliminar.Checked = False


Muchas gracias por vuestra colaboración de antemano.
Un saludo,
Nano.
A raíz que voy limando mi humilde programa de servicios, me he encontrado con un problema.
Partimos de la base que tengo una tabla CLIENTES a la que le voy generando FACTURAS que están registradas en otra tabla. Para crear las relaciones hay un campo IDCLIENTE como PK en CLIENTES y un IDCLIENTE como FK en FACTURAS. No permito en la relación borrado en cascada.
Entonces, cuando se intenta borrar un cliente, aparece la restricción que no deja borrarlo pues ya tiene facturas asignadas. Hasta aquí todo va según quiero que funcione.
El problema lo tengo a la hora realizarlo en mi aplicacion , pues aparece la ventana de la restricción que para un usuario ajeno ni debe leerla ni porque entenderla.
Os adjunto un par de imágenes de como aparece el mensaje.
Entonces, la idea es que cuando salte la restricción FK le aparezca al usuario una ventana de mensaje que le diga o explique que no se pueden borrar clientes que ya tienen facturas asignadas.
Mi código para el borrado es el siguiente:
Private Sub ButtonEliminar_Click(sender As Object, e As EventArgs) Handles ButtonEliminar.Click
Dim result As DialogResult
result = MessageBox.Show("Desea realmente eliminar los clientes seleccionados?", "Eliminacion de Registros", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If result = DialogResult.OK Then
Try
For Each row As DataGridViewRow In DGDatos.Rows
Dim marcado As Boolean = Convert.ToBoolean(row.Cells("Eliminar").Value)
If marcado Then
Dim onekey As Integer = Convert.ToInt32(row.Cells("CODIGO").Value)
Dim vdb As New vCliente
Dim func As New fCliente
vdb.gidcliente = onekey
If func.eliminar(vdb) Then
Else
MessageBox.Show("Los clientes no fueron eliminados.", "Eliminación de Datos", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
Next
Call mostrar()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MessageBox.Show("Cancelada la eliminacion de registros.", "Eliminación de Datos", MessageBoxButtons.OK, MessageBoxIcon.Information)
Call mostrar()
End If
Call limpiar()
CbEliminar.Checked = False


Muchas gracias por vuestra colaboración de antemano.
Un saludo,
Nano.
Valora esta pregunta


0