Visual Basic.NET - Como cambiar mensaje restriccion FK en aplicacion VB.NET

 
Vista:
Imágen de perfil de nano

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



errorFK
errorFK2

Muchas gracias por vuestra colaboración de antemano.
Un saludo,
Nano.
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 giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Como cambiar mensaje restriccion FK en aplicacion VB.NET

Publicado por giancarlo (488 intervenciones) el 07/09/2015 22:28:25
Si no me equivoco, tu error se debe a que haz enlazado (asi creo que se llama) los key, creando primary y secondary key, algo asi.

El punto es que,ya tienes una factura creada con este cliente (idCliente), entonces no puedes eliminarlo. Tendrias que eliminar las referencias o tablas que estan enlazadas a la tabla cliente, especificamente al idCliente que quieres eliminar, recien ahi tendrias que eliminar el cliente.

Normalmente, yo no hago ese tipo de enlaces, y por cierto no recuerdo el nombre exacto. Pero lo que te recomiendo es que no elimines clientes, agregale, mejor, un campo llamado activo, en lugar de eliminar, pondrias como inactivo, cuando hagas una consulta de clientes, entonces llamarias a los clientes activo. Pista: tipo bit.

¿Por que? porque como en este caso, ya no tendras y deseas eliminar el cliente, pero ya tienes facturas de él, en caso pudieras eliminarlo, y quieres ver la factura de ese cliente, talvez tendrias problemas.

Espero entiendas lo que menciono, a veces no se explicarme muy bien que digamos.
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

Como cambiar mensaje restriccion FK en aplicacion VB.NET

Publicado por aldo (12 intervenciones) el 08/09/2015 19:17:45
Te doy un consejo amigo, elimina primero la venta de ese cliente y después puedes eliminar el cliente pero lo mejor es no eliminarlo y hacer como dijo el otro panalista ponerlo como activo o inactivo
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
sin imagen de perfil

Como cambiar mensaje restriccion FK en aplicacion VB.NET

Publicado por Ivan (3 intervenciones) el 02/10/2016 10:58:38
Hola que tal, tu error por lo visto se genera al eliminar un registro(s) y la causa es la regla de eliminación debes de ponerla en "Cascada" esta en las propiedades de la relación entre tus tablas.


FK
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