Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2005
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
Unhappy Error Imagenes JPG BMP en ibquery

hola de nuevo....

trabajo con firebird 1.5 y delphi 6, yo se que he preguntado mucho en este foro pero despues que logre que me guardara las imagenes bmp y jpg todo bien, pero desde ayer me da error con los jpg dice que "imagen bitmap invalida" y aveces la muestra, otras veces no, y da error cuando quiero usar esa tabla en una consulta ibquery y asi no vea la foto me da el error si es un jpg, pero con bmp no....

el famoso error que me carga loco yque da el delphi es el siguiente "bitmap image is no valid."

las imagenes la visualizo en un image1...

codigo para buscar registros

Código Delphi [-]
 with tabla do begin
   //buscar cedula ya existente
   IBQuerypersonal.SQL.Clear;
   IBQuerypersonal.Close;
   IBQuerypersonal.SQL.Add('SELECT * FROM Personal WHERE cedula='+QuotedStr(Edit1.Text)+'' ); //
   IBQuerypersonal.Prepare;
   IBQuerypersonal.Open;
   with tabla.IBQuerypersonal do begin
     edit2.Text:=FieldByName('nombre').AsString;
     edit3.Text:=FieldByName('apellido').AsString;
     //*****ver foto
     if tabla.DSpersonalFOTO.IsNull then begin
       Image1.Picture:=nil;
     end else begin
       if tabla.DSpersonalFORMATOFOTO.AsString ='BMP' then
         image1.Picture.Graphic:=TBitmap.Create
       else if tabla.DSpersonalFORMATOFOTO.AsString ='JPG' then
         Image1.Picture.Graphic:=TJpegImage.Create
       else
         exit;
     m:=tabla.DSpersonal.CreateBlobStream(tabla.DSpersonalFOTO,bmread);
     Image1.Picture.Graphic.LoadFromStream(m);
     m.Free;
   end;
   //********* ver foto
y para ingresarlos..

Código Delphi [-]
 with tabla.IBQuerypersonal do begin
   close;
   SQL.Clear;
   SQL.Add('INSERT INTO Personal (');
   sql.Add('Cedula, Nombre);
   if OpenPictureDialog1.FileName<>'' then begin
     sql.Add(', FOTO');
     sql.Add(', FORMATOFOTO');
   end;
   sql.Add(', apellido') '); //
   sql.Add('VALUES ');
   sql.Add('(arcedula, arnombre');
   if OpenPictureDialog1.FileName<>'' then begin
     sql.Add(', arfoto, arformato');
   end;
   sql.Add(', arpellido)');
   Prepare;
   ParamByName('parcedula').AsString := edit1.Text;
   ParamByName('parnombre').AsString := edit2.Text;
   ParamByName('parapellido').AsString :=edit3.Text;
   if OpenPictureDialog1.FileName<>'' then begin
     ParamByName('parfoto').LoadFromFile(OpenPictureDialog1.FileName, ftBlob);
     s:=AnsiUpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
     if s='.JPEG' then s:='.JPG';
       ParamByName('parformato').AsString :=copy(s,2,3);
   end;
   ExecSQL;
   {...}
y aunque sea que utilice el codigo de busqueda me da el erro si es jpg

Código Delphi [-]
 //buscar cedula ya existente
 IBQuerypersonal.SQL.Clear;
 IBQuerypersonal.Close;
 IBQuerypersonal.SQL.Add('SELECT * FROM Personal WHERE cedula='+QuotedStr(Edit1.Text)+'' ); //
 IBQuerypersonal.Prepare;
 IBQuerypersonal.Open;
en firebird tengo dos campos
formato string que guarda la extension y foto tipo Blob...

agradezco cualqueir ayuda.
__________________
begin
Elverdugo79@hotmail.com
end;

Última edición por dec fecha: 07-10-2005 a las 19:11:05. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 07-10-2005
Avatar de lpmlpm
lpmlpm lpmlpm is offline
Miembro
 
Registrado: ago 2005
Posts: 136
Poder: 19
lpmlpm Va por buen camino
Simple curiosidad, tienes en el uses de la unidad donde despliegas la imágen, y donde asignas el valor al campo, la unidad "JPEG" ???? esta unidad le permite al objeto Graphic poder interpretar adecuadamente el formato jpg; eso suele resolver el problema en la mayoria de los casos...

Saludos
__________________
"Lo mejor de no saber hacer nada es que se tiene mucho tiempo libre."
Responder Con Cita
  #3  
Antiguo 10-10-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Mira puede ser lo dle uses jpge pero estoy seguro que aparte de eso tienes otro problema si usa lo scompoenentes de delphi para imagenes tendras problemas ya que en lo sdb solo soporta bmp.

Asi que usa uno que soporte bmp.

A y una cosa mas te recomeindo guardar solo jpg en tu bd ya que de lo cantrario se pondra un poco pesad por los bmp.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #4  
Antiguo 11-10-2005
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
Unhappy Si Tengo Uses JPEG

la verdad que si tengo jpeg declarada arriba, pero y asi con eso me da el error, pero si hago un locate en el Ibdataset directamente no me da ningun tipo de error y eso es lo que me tiene con dolor de cabeza, solo me lo da en sql con un Ibquery conectado a mi IBdataset.... pero es muy lento ya que manejo mas de 30000 registros, y en otra tabla que me da el error (Personal) hay 500 personas y cada una con foto...

no se si ese codigo tiene algo mal o ???????
el dilema es locate si sirve pero es muy lento
sql no sirve pero es mas rapido.....

mi intencion es pasar todas las fotos a jpg para dismunir el tamaño de la bdd pero con este error no e podido y mi bdd pesa 80 MB!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

gracias por las respuestas...... acepto cualquier sugerencia..
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #5  
Antiguo 11-10-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

En la búsqueda del foro tenés algunas respuestas sobre como cargar y guardar imágenes JPG/BMP/etc en Interbase/Firebird. Te invito a visitarlo.

De todas maneras si querés economizar el tamaño de la BD podrías cambiar el diseño y NO almacenar las imágenes dentro de ella. En lugar de eso almacená la ruta hacia la imágen y vas a conseguir una mayor performance en las consultas y aprobechamiento de espacio. Pero eso último depende demasiado de como querés el diseño del sistema.

Saludos!
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #6  
Antiguo 28-10-2005
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
Cool Listo..

ok gracias a todos por sus repuestas, ya resolvi el problema, es algo muy simple que no vi, el codigo al parecer esta bien (o por lo menos Funciona) lo que paso es que a mi Ibquery personal le tenia agsinado en otro formulario (creo que era el 21 de 30 de mi sistema) un Dbimage, y por supuesto me iba dar error.....

espero que le sirva de algo el codigo...
__________________
begin
Elverdugo79@hotmail.com
end;
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:03:10.


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