Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 29-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 29-11-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
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:

Código Delphi [-]
 
try
begin
//Intrucciones para que guarde el nuevo producto
end
except
on E:Exception do
if E.ClassNameIs('EDataBaseerror')then
raise Exception.Create('Datos Insuficientes Para Crear El producto')
else
if E.ClassNameIs('EIBInterbaseError')then
raise Exception.Create('Codigo Repetido')
end;

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.
Responder Con Cita
  #4  
Antiguo 29-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 29-11-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 29-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 29-11-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 29-11-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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||
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:37:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi