Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Imagenes y bases de datos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Imagenes y bases de datos Responder citando

Hola foro,

antes de nada decir que he leido los mensajes sobre este tema publicados aqui y no me han sacado de muchas dudas.

Yo necesito lo siguiente:

Por un lado tengo una base de datos MsAcess 2000 con un campo de tipo OLE.

Por otro, mi aplicación en C++ Builder 5.

Tengo que insertar una imagen BMP o JPG en la tabla access. Y no tengo nada claro como hacerlo. Creo que si es JPG cambian algunas cosas, hasta ahora he probado a insertar BMP pero me da el siguiente error:
INVALID BLOB LENGTH.

Yo en access no defino el tamaño máximo del campo, asi que ni idea.

Si alguien tiene una idea, o un ejemplo que me pueda servir, muchas gracias.

un saludo,
Javier
_________________
Javi
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Saludos...

Yo ya he hecho esto, pero con SQL Server, aunque no creo que cambie mucho... Aqui te pongo un codigo de como lo hice, esta en Delphi pero no creo que te cueste mucho pasarlo a C++Builder, si tienes problemas me dices y en lo qe te pueda ayudar adelante...

Código:


procedure TfrmCatalogoAfiliados.InsertarAfiliado(qryIMAfiliado:TQuery);
  var
    msFoto:TMemoryStream;
begin

   with qryIMAfiliado do
     begin
            ParamByName('pNoAfiliacion').AsString:=ledtNoAfiliacion.Text;
             ParamByName('pFechaNacimiento').AsDateTime:=dedtFechaNacimiento.Date;
             ParamByName('pIdGenero').AsInteger:=IdSexo;
             ParamByName('pNombre').AsString:=ledtNombre.Text;
             ParamByName('pApellidoPaterno').AsString:=ledtAPaterno.Text;
             ParamByName('pApellidoMaterno').AsString:=ledtAMaterno.Text;

             //Cargar Foto
             msFoto:=BitmapAStream(imgFoto.Picture.Bitmap);
             ParamByName('pFoto').LoadFromStream(msFoto,ftBlob);
             msFoto.Free();

            ExecSQL();
    end;
 end;


La funcion BitmapAStream es esta:
Código:

function BitmapAStream(bmpImagen:TBitmap):TMemoryStream;
  var
    msImagen:TMemoryStream;
    jpgImagen:TJPEGImage;
begin
   msImagen:=TMemoryStream.Create();
   jpgImagen:=TJPEGImage.Create();
   jpgImagen.Assign(bmpImagen);
   jpgImagen.SaveToStream(msImagen);
   msImagen.Seek(0,soFromBeginning);
   jpgImagen.Free();
   result:=msImagen;
end;


Esta función la hice para convertir el bitmap a JPG y que asi me ocupe menos espacio en la BD, tu puedes poner todo en el primer modulo, pero asi lo tenemos mas moduladito...

Eso es en cuanto a guardar la imagen desde un Bitmap a la BD, para mostrarla desde la BD a un bitmap es asi:

Código:

function CargarFotoCampo(Campo:TField;bmpImagen:TBitmap):boolean;
  var
    msFoto:TMemoryStream;
    jpgFoto:TJPEGImage;
begin
    result:=false;
    if (( not Campo.IsNull) and (Campo.IsBlob)) then
       begin
          jpgFoto:=TJPEGImage.Create();
          msFoto:=TMemoryStream.Create();
          (Campo AS TBlobField).SaveToStream(msFoto);
          msFoto.Seek(0,soFromBeginning);
          jpgFoto.LoadFromStream(msFoto);
          try
             bmpImagen.Assign(jpgFoto);
             result:=true;
          except
          end;
         msFoto.Free();
         jpgFoto.Free();
       end;

end;


Y mandarias llamar a la función asi:
Código:


//En Delphi
CargarFotoCampo(Query.FieldByName('Foto'),Image.Picture.Bitmap);

//En C++Builder
CargarFotoCampo(Query->FieldByName('Foto'),Image->Picture->Bitmap);

_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Ayuda por favor Responder citando

Llevo varios dias leyendo los mensajes del foro sobre insercccion en B.D, pero nada de nada. Solo he conseguido insertar BMP.

Tengo una base de datos Access 2k con un campo Foto tipo OLE.

Por otro lado tengo una foto jpq.

uso Builder 6.0. Me gustaria insertar la imagen usando BDE (Table, Query, etc), pero no lo consigo.

Alguna ayuda, si alguien tuviera un ejemplo me vendría genial, pero un ejemplo para llegar y compilar, porque llevo varios dias compiando ejemplos del foro y no consigo que me funcionen.

Sería positivo que alguien colgará un ejemplo en la seccion de Dowloads, proque veo que este es un tema recurrente,

gracias,
javi
_________________
Javi
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.