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 Buscar Temas de Hoy Marcar Foros Como Leídos

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:21:04
Capturar errores Mauricio_M Firebird e Interbase 6 18-10-2005 22:28:04
Capturar errores Mauricio_M Firebird e Interbase 2 14-10-2005 02:50:45
Capturar errores y personalizarlos @-Soft OOP 5 01-03-2004 14:10:02
Capturar Errores y/o avisos sergio_015 Varios 5 11-02-2004 07:06:35


La franja horaria es GMT +2. Ahora son las 17:03:32.


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