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
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;
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;
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
[-]
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.