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 14-02-2007
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
capturar errores

Hola amigos, estoy usando delphi 7, firebird 1.5 y las fibplus
espero poder explicarme bien.

en mi base de datos tengo 2 tablas:
proveedores:
ID integer
Nombre Varchar(30)
etc. etc.

y compras:
ID integer
ID_Proveedor Integer
Monto decimal(15,2)
etc. etc

y las relaciono con:
Código SQL [-]
ALTER TABLE COMPRAS ADD CONSTRAINT FK_COMPRAS01 FOREIGN KEY (ID_PROVEEDOR) REFERENCES PROVEEDORES (ID);

Con lo cual como debe de ser al intentar borrar un proveedor si existe una compra no me lo permite, eso esta bien el problema es que en delphi e intentado caturar el error para que en lugar de que aparesca el mensage de error de firebird/delphi ("DtmDatos.pFDSProveedores.DeleteQuery violation of FOREING KEY constraint "FK_COMPRAS_1" on tabla "compras") aparesca un mensaje de error personalizado, no logro hacer que este desaparesca o mas bien no aparesca en la pantalla y entonces lo que tengo son dos errores el personalisado y el de delphi, alguien me puede ayudar a evitar que el mensage de error de delphi

Gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
  #2  
Antiguo 14-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
En el evento omUpdateerror, puede poner algo como esto..
Código Delphi [-]
procedure TDataModule.IBQuery_UpdateError(
  DataSet: TDataSet; E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TIBUpdateAction);
begin
UpdateAction :=  TIBUpdateAction (uaAbort);
Raise EDataBaseError.Create( E.Message);
Dataset.Refresh;
end;

y generar tu propio error....
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #3  
Antiguo 14-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se si te servira, pero yo hago una Excepcion al modulo de datos y asi evito el mensaje de delphi.
Código Delphi [-]
 on E:Exception do
         begin
            DataModule1.AC1.RollbackTrans;
            MessageDlg('Se ha producido un error, por favor contacte al administrador.',mtError,[mbok],9);
         end;
Tal vez e sirva o te guie.
Saludos
Responder Con Cita
  #4  
Antiguo 15-02-2007
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Gracias compañeros, oye Caral me podrias explicar un poco mas como haces tu excepcion porque lo que encontre en un manual de excepciones es parecido a lo que me comentas pero no me funciona

Gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
  #5  
Antiguo 15-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola jzginez
Cuando voy a hacer un UpDate o un Delete o una insercion o algo, comienzo por un:
Código Delphi [-]
DataModule1.AC1.BeginTrans;
Si la operacion se esta realizando hago un:
Código Delphi [-]
 DataModule1.AC1.CommitTrans;
Y si la operacion no se realizo correctamente hago una Exception, haciendo un:
Código Delphi [-]
 DataModule1.AC1.RollbackTrans;
Y enviando un mensaje, no se si me explico bien, pero seguro algun maestro te lo puede explicar mejor.
Saludos
Responder Con Cita
  #6  
Antiguo 15-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola este es un pedacito de codigo que te dira mas.
Código Delphi [-]
procedure TFOrdProd.BitBtn10Click(Sender: TObject);
begin
   If MessageDlg('¿Está seguro que desea eliminar la pieza # '+QOrdenProdItemNumSerie.AsString+' de la orden '+QOrdProdCodOrden.AsString+'?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
   begin
      DataModule1.AC1.BeginTrans;
      try
         QTemp.SQL.Text := 'Delete * from OrdenProdItem where NumSerie = '+QOrdenProdItemNumSerie.AsString;
         QTemp.ExecSQL;
         QTemp.SQL.Text := 'Update Series set Estado = ''Eliminado'' where NumSerie = '+QOrdenProdItemNumSerie.AsString;
         QTemp.ExecSQL;
         DataModule1.AC1.CommitTrans;
      except
         on E:Exception do
         begin
            DataModule1.AC1.RollbackTrans;
            MessageDlg('Se ha producido un error, por favor contacte al administrador.',mtError,[mbok],9);
         end;//on
      end; //try
      QOrdenProdItem.Close;
      QOrdenProdItem.Open;
   end;
end;
Por supuesto los nombres de las tablas y otros son los mios.
Saludos
Responder Con Cita
  #7  
Antiguo 15-02-2007
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Gracias Caral, voy a tratar de adaptar tu código al mio porque veo que tu usas un BitBtn y a este le asignas el código para borra en la tabla y lo que yo tengo es un actionlist con las acciones predeterminadas para bases de datos y por ejemplo tu tienes
Código Delphi [-]
begin
   If MessageDlg('¿Está seguro que desea eliminar la pieza # '+QOrdenProdItemNumSerie.AsString+' de la orden '+QOrdProdCodOrden.AsString+'?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
   begin
en este boton y eso yo lo tengo el evento beforedelete de la tabla por lo cual no tengo un momento en donde capturar el error
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar errores de sql piccolo2101 SQL 3 20-01-2006 11:21:04
Capturar errores Mauricio_M Firebird e Interbase 6 18-10-2005 21:28:04
Capturar errores Mauricio_M Firebird e Interbase 2 14-10-2005 01:50:45
Capturar errores y personalizarlos @-Soft OOP 5 01-03-2004 13:10:02
Capturar Errores y/o avisos sergio_015 Varios 5 11-02-2004 06:06:35


La franja horaria es GMT +2. Ahora son las 12:45:31.


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