Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Ado

Hola a todos, estoy desesperado, acudo a ustedes como última alternativa esperando resolver mi problema, espero puedan ayudarme, el problema es el siguiente. Soy nuevo en el trabajo con delphi, lo asumí porque me gustó mucho como lenguaje de programación, estoy inmerso en el desarrollo de un proyecto donde utilizo ADO para conectarme a una base de datos sql server con el proveedor oledb. La aplicación tiene que ver con la emisión de cheques y la recepción de facturas. Tengo un formulario para introducir nuevos cheques y la vez por supuesto realizar el pago de las facturas, entre las tablas cheques y facturas existe una relación de uno varios ya que con un cheque se pueden pagar varias facturas. El formulario está implementado de tal forma que cuando establezco a verdadero el campo pagado de la tabla factura el importe de la misma o las mismas ,ya que pueden ser varias, se adiciona el campo importe de la tabla cheque. Todo funciona de maravillas hasta ahí, pero cuando por error se agrega un número de cheque ya existente y se establece a verdadero el campo pagado de la tabla factura me ocurre el siguiente error: "Class EOLeException with message Violation of Primary Key constraint PK_Cheques. Cannot insert duplicate Key in object Cheques". La base de datos tiene tiene tres tablas hasta el moemento la Tabla Factura, Cheques y Proveedor. Estoy cansado de leer acerca del manejo de las excepciones pero no acabo de entenderlas, siempre utilizan d ejemplo la que se produce en la clase EConvertError o en la Clase EDivbyZero la cual es bastante sencilla, pero no he visto nada sobre la clase EOLeException, agradecería que me ilustraran si se pued con algún ejemplo para ver si puedo entender esto y poder solucionar mi problema o a lo mejor una posible solución al problema planteado segú la experiencia y los conocimientos de ustedes. Muchas gracias.
Responder Con Cita
  #2  
Antiguo 13-10-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues las excepciones se tratan todas igual:

Código Delphi [-]
Try
  GuardarPago...
Except
  ShowMessage('No se pudo');
end;

la otra, porque cuando introducen el numero de cheque, revisas si ya se uso...
Responder Con Cita
  #3  
Antiguo 13-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

El inconveniente con la Exception está claro, la tabla Cheques tiene un campo primaro que no permite el duplicado de un registro y por esa razon te envia el error.

Para manejar ese error, utiliza try-except o try-Finally

Código Delphi [-]
//rutinasX
try
//Buscarcheque
Exception //Si da error, puede adicionar {On EOLeException (no muy seguro)} 
//Mensaje personalizado del error
end;
//Continuidad de la rutina

//O
//rutinasX
try
//Buscarcheque
Finally //Si da error
//Continuidad de la rutina
end;

Espero te sirva
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 16-10-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.297
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por luisgutierrezb
pues las excepciones se tratan todas igual...
Se puede ser un poco más específico...

Código Delphi [-]
Try
  GuardarPago...
Except
  on E:EOLEException do begin
    ShowMessage('No se pudo; Se ha producido un error al guardar en Base de Datos. ' + E.Message + '(' + IntToStr(E.ErrorCode) + ')');
  end
  else begin 
    ShowMessage('Error desconocido al guardar en Base de Datos.' + E.ClassName);
  end;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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 05:16:51.


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