FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Capturar Excepciones
Buenos Días:
Bueno mi problema es el siguiente en una grilla estoy creando unos proveedores especificos para unos productos, Se pueden Crear uno o mas proveedores con sus respectivos campos que son el costo, arancel, modalidad de compra. Cuando creo un proveedor, continuo a crear el siguiente proveedor, y por algun caso decidi devolverme al registro anteriormente creado, me sale una excepcion, ya que no he llenado todos los datos que son obligatorios, pero lo que pasa es que quiero capturar la excepcion, pero lo malo es que no se en que evento hacerlo, lo prove en el evento de la grilla OnKeyUp. Pero no funciono. Gracias por la ayuda que me puedan prestar.
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde. |
#2
|
||||
|
||||
Es que la excepción no te la devuelve la rejilla, sino el motor de base de datos y es ahí en donde tienes que capturar la excepción.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Si tienes toda la Razón las Excepciones las genera el motor de datos, lo que pasa es que en el aplicativo que estoy haciendo desde delphi, quiero cambiar el mensaje que me sale, por ejemplo cuando en la base de datos esta el codigo 15 de producto, y al crear un nuevo producto y lo creo con el mismo codigo,
me sale una excepción que me dice quee violación de llave primaria, esto no lo va a entender el usuario entonces lo que hago es lo siguiente:
Entonces eso es lo mismo que quiero hacer, cambiar el mensaje, pero con el manejo de las flechas no se en donde debo colocar por ejemplo lo escrito anteriormente, para que la excepción me lo muestre con el mensaje que quiero hacer.
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde. |
#4
|
||||
|
||||
Dicho de otra forma: la orden tabla.Post deberá estar en un try ... except para poder capturar la excepción.
O bien usas sysutils.Abort para cancelar los cambios realizados. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
||||
|
||||
eso es lo que estoy haciendo, pero cuando uso las flechas para desplazarme en la grilla no me captira la excepción correspondiente.
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde. |
#6
|
||||
|
||||
Al estar el mensaje en el foro OOP no hay forma de saber que base de datos usas, y aún menos cuando capturas excepciones de Delphi y de Interbase.
Dinos qué base de datos es y como accedes a ella. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#7
|
||||
|
||||
Estoy utilizando Delphi Professional e Interbase 6.0
Estoy accediendo a la Base de Datos por medio de las componentes IBTransacction y IBDataBase, en general estoy utilizando las IBx
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde. |
#8
|
||||
|
||||
No puede poner el try en Post porque usa una grilla, la grilla hace el post en forma automática cada vez que cambias de fila y si se modificó algun campo.
En el caso de un TDataset comun y corriente esto que quieres hacer se hace modificando el manejador de eventos OnPostError, que se ejecuta cada vez que se levanta una excepción por errores al hacer el post. Ignoro si se puede hacer con componentes de IB ya que no los tengo instalados...pero la idea es hacer que quien detecte la excepcion sea tu dataset y cancele lo que se posteó.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
|
|