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 17-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
Problemas de Exception Class

Buen día, como están?

Estoy trabajando en un proyecto para carnet-izar a una cantidad N de personas, no estoy guardando la foto en la base de datos solo guardo la ruda de dicha foto, problema esta cuando consulto o trato de imprimir un registro que no tiene foto, presenta la siguiente Exception.
project pry_sistemacarnet.exe raised exception class einvalidGraphic with Unknown picture file extension (.) process stopped use step o run to continuer


Código:
//Buscar Registro
procedure TFrm_ImprimirCarnet.BuscarRegistroClick(Sender: TObject);
begin
      if Tbl_Carnet.Locate('Codigo_carnet',Edit1.Text,[])then
         Image1.Picture.LoadFromFile(Tbl_Carnet.FieldByName('Foto').AsString);
end;

Código:
// Mostrar foto en un Reporte
procedure TFrm_ImprimirCarnet.ppImage1Print(Sender: TObject);
begin
       ppImage1.Picture.LoadFromFile(Tbl_Carnet.FieldByName('Foto').AsString);
end;
Responder Con Cita
  #2  
Antiguo 17-09-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Hola edwin.simon

Prueba con este código que evalúa si el campo Foto está vacío o no.

Código Delphi [-]
if Tbl_Carnet.Locate('Codigo_carnet',Edit1.Text,[])then
if Tbl_Carnet.FieldByName('Foto').IsNull then
Dialogs.MessageDlg('¡ No existe foto de esta persona !', mtWarning, [mbOk], 0);
else
Image1.Picture.LoadFromFile(Tbl_Carnet.FieldByName('Foto').AsString);

Es más preciso utilizar un Query que un Locate.

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'Select Codigo_carnet, Foto from Tbl_Carnet where Codigo_carnet like '+QuotedStr(Edit1.Text+'%') ;
Query1.Open;
if Query1.RecordCount >0 then
Image1.Picture.LoadFromFile(Query1.FieldByName('Foto').AsString)
else
Dialogs.MessageDlg('¡ No existe foto de esta persona !', mtWarning, [mbOk], 0);
end;

Lo hice de memoria, pero la idea va por ahí.
Saludos
Responder Con Cita
  #3  
Antiguo 17-09-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por el mensaje de error que recibes da la impresión de que la ruta que guardas en la base de datos no contiene la extensión. ¿Ya verificste eso?

// Saludos
Responder Con Cita
  #4  
Antiguo 17-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
Gracias radenf y roman, con la primera rutina por lo meno elimino al Exception ya que me muestra un mensaje si tiene o no tiene foto y con la segunda tengo que especificar todos los campos de tabla, de igual puedo usarla.

roman ese es el problema que tengo cuando el registro no tiene foto lo que quiero es poder imprimirlo tengo o no foto.
Responder Con Cita
  #5  
Antiguo 17-09-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por edwin.simon Ver Mensaje
roman ese es el problema que tengo cuando el registro no tiene foto lo que quiero es poder imprimirlo tengo o no foto.
Cierto, no había leído correctamente la pregunta.

En casos similares yo he optado por usar una imagen por defecto para quienes no tienene foto, por ejempo, una silueta. Cuando se guarda un registro sin foto, en el campo pongo la ruta de esa imagen. De esta manera evito comprobar en cada caso si hay o no foto.

// Saludos
Responder Con Cita
  #6  
Antiguo 17-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
el problema es que tengo mas de 4000 registro porque estoy haciendo un cambio ya que cuando guardo la foto en la base de datos esta se torna super lenta.

mil gracias seguiré investigando roman.
Responder Con Cita
  #7  
Antiguo 17-09-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Me alegra que te funcionara.
Lo que señala roman también es una buena alternativa.
Puedes cambiar Dialogs.MessageDlg('¡ No existe foto de esta persona !', mtWarning, [mbOk], 0); por Exit y no mostrará el mensaje.

Salu2
Responder Con Cita
  #8  
Antiguo 17-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
Disculpa radenf no comprendo la parte de cambiar, ........!
Cita:
Puedes cambiar Dialogs.MessageDlg('¡ No existe foto de esta persona !', mtWarning, [mbOk], 0); por Exit y no mostrará el mensaje.
Responder Con Cita
  #9  
Antiguo 17-09-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Si sustituyes la frase:

Código Delphi [-]
Dialogs.MessageDlg('¡ No existe foto de esta persona !', mtWarning, [mbOk], 0);

por

Código Delphi [-]
Exit

El mensaje no aparecerá y no te dará la excepción por la que preguntaste, si es que así lo deseas.
Es sólo una opción, ya que a muchos no le gusta que aparezcan mensajes que requieren la intervención del usuario.

Saludos
Responder Con Cita
  #10  
Antiguo 17-09-2014
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por edwin.simon Ver Mensaje
el problema es que tengo mas de 4000 registro porque estoy haciendo un cambio ya que cuando guardo la foto en la base de datos esta se torna super lenta.
No digo que guardes las fotos en la base. Lo que digo es que en el mismo directorio donde guardes las fotos, guardes un jpg con la imagen por defecto. Esta imagen puede llamarse, por ejemplo, "silueta.jpg".

Entonces, cuando des de alta un registro y no dispongas de foto para es registro, en el campo foto almacenes "c:\ruta\a\las\fotos\silueta.jpg".

Así, cuando leas los registros, dejas el código tal como lo tenías al principio. Si el registro no tiene foto, lo que cargará será silueta.jpg y no te marcará el error.

// Saludos
Responder Con Cita
  #11  
Antiguo 19-09-2014
edwin.simon edwin.simon is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 30
Poder: 0
edwin.simon Va por buen camino
Me siento muy agradecido por toda la ayuda brindada, gracias radenf y roman, no tengo problema con el mensaje que presenta ya que me indica lo que esta pasando y con relación a colocar la imagen para los registro que no tiene foto tampoco es un problemas, el caso es que estamos hablando de mas de 4 mil registro que no tienen fotos momentaniamente.

la historia de esto es que tengo un sistema funcionando con mas de 4 mil registro y cada uno tiene su foto, el problema de esto es que la base de datos esta super lenta y tengo que usarlo en una maquina local ya que cuando lo pongo en red tarda mucho para subir y consume mucho recurso, si existiera la forma de mejor el movimiento fuera un éxito, estoy usando access 2007.
Responder Con Cita
  #12  
Antiguo 23-09-2014
rebotea rebotea is offline
Registrado
NULL
 
Registrado: sep 2014
Posts: 3
Poder: 0
rebotea Va por buen camino
Tenta cambiar tu base dados mejor desempenho = SQLITE
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
Raised exception class amparog Varios 3 12-09-2010 00:18:59
Exception class EInvvalidOperation... MON___ OOP 2 03-10-2007 13:54:38
Problemas con ActiveX: Exception class EOleSysError TriLoCBA OOP 0 16-04-2006 00:43:09
Error en previsualización:"Error raised exception class..." SGL Impresión 1 22-06-2005 12:28:16
Exception class EAccess violation... Giniromero Conexión con bases de datos 1 13-06-2003 12:47:38


La franja horaria es GMT +2. Ahora son las 22:53:52.


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