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 10-12-2004
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Unhappy Me lleva el diablo....

Hola.

Tengo una base de datos que está en FB 1.5. A esa base le tengo que "acomodar" la medio bobadita de 50.000 fotos a un campo blob sub_type 0 segment size 80.

Claro la tabla ademas tiene otros campos (5 mas) pero pues esos no son tan complicados...

La idea es poder hacerlo en un script.

Como le hago? Como lo harián Ustedes los magos?

Las fotos están en formato .JPG, en el Disco Duro.

AAAAAAAYUUUUUUUUUDAAAAAAAAAAAAAAAAAAA
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #2  
Antiguo 10-12-2004
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 22
mosorio Va por buen camino
Talking

Hola sercornejov, creo que yo lo haría de la siguiente forma, ya que son demasiados ficheros los que se encuentran en el DD, debes implementar una pequeña operación con una sql que efectúe un update, ya que me supongo que la tabla tiene datos, realizar un ciclo que determine el número de registros deacuerdo a los registros en esa tabla y a cada fichero colocarle el mismo nombre del id del registro, asi al ir corriendo el ciclo, debería ir una instrucción que busque el fichero en una ruta indicada del almacenaje de los ficheros.

Espero que con esta ayuda o idea te pueda dar un impulso para que no te detengas.
Saludos

PD: Buena frase la que tienes en el pie de pagina. ¡Arriba la patria! y que disculpen los foristas pero cuando se tiene la tierra lejos uno se entusiasma con cualquier cosa que se la recuerde.
Responder Con Cita
  #3  
Antiguo 10-12-2004
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Hola paisano...

Gracias por responder.

La verdad las fotos se llaman igual que el ID (la cédula del personaje), pero lo que no se es como hacer la sentencia UPDATE con un BLOB para insertar...

Ayuda!!!!!!!
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #4  
Antiguo 10-12-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 21
Tomás Va por buen camino
Hola:

Yo utilizo esto, pero es para cargar de una en una (puedes adaptarlo a tu caso), y guardo el formato en otro campo porque a veces son .jpg y otras .bmp, si las tuyas son siempre .jpg no necesitarás este dato.

Te pongo el código por si es esto lo que quieres y te sirve de algo adaptándolo a tus necesidades.

Código Delphi [-]
procedure TFPalabras.TBCargaFotoClick(Sender: TObject);
var
  m, f: TStream;
  s: string;
begin
  //se abre picturedialog para cargar fichero foto que se coja
  if dlgOpenPicture.Execute then
    begin
      //modo edición
      DM.IBDSPalNue.Edit;
      //stream a partir campo Blob que contendrá la imagen
      m:= DM.IBDSPalNue.CreateBlobStream(DM.IBDSPalNueFOTO, bmWrite);
      //stream para acceder al archivo gráfico
      f:= TFileStream.Create(dlgOpenPicture.filename, fmOpenRead);
      //copiar de un stream a otro
      m.CopyFrom(f, f.Size);
      //coger formato foto y ponerlo en campo correspondiente
      s:= AnsiUpperCase(ExtractFileExt(dlgOpenPicture.FileName));
      if s='.JPEG' then
        s:= '.JPG';
      DM.IBDSPalNueFORMATOFOTO.AsString:= Copy(s,2,3);
      DM.IBDSPalNue.Post;
      //destruir streams
      f.Free;
      m.Free;
    end
end;

Para mostrar la imagen lo hago con un TImage. Si te interesa saber como me lo dices.

Un saludo.
Responder Con Cita
  #5  
Antiguo 13-12-2004
Avatar de sercornejov
sercornejov sercornejov is offline
Miembro
 
Registrado: may 2003
Ubicación: Neiva - Colombia
Posts: 88
Poder: 21
sercornejov Va por buen camino
Gracias.

VOY A ENSAYARLO (LA DEMORA HA SIDO POR VIAJE...) LO DE MOSTRARLO, ES DECIR SACANDOLO DE LA db LO HACES COMÓ?

Gracias.
__________________
En Colombia hay muchos, pero muchos colombianos muy buenos. Los violentos son pocos y los vamos a controlar...
Responder Con Cita
  #6  
Antiguo 13-12-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 21
Tomás Va por buen camino
Hola:

Para mostrar la foto hago esto:

Pongo un TDataSource enlazado al DataSet correspondiente y un TImage.

En el evento OnDateChange del DataSource pongo esto:
Código Delphi [-]
procedure TFPalabras.DSFotoPalNueDataChange(Sender: TObject; Field: TField);
var
  m: TStream;
begin
  if DM.IBDSPalNueFOTO.IsNull then
    //para registros sin foto poner imagen vacia
    ImgFotoPalNue.Picture := nil
  else
    begin
      if DM.IBDSPalNueFORMATOFOTO.AsString = 'BMP' then
          //si es formato BMP
          ImgFotoPalNue.Picture.Graphic:= TBitmap.Create
      else if DM.IBDSPalNueFORMATOFOTO.AsString = 'JPG' then
          //si es formato JPG
          ImgFotoPalNue.Picture.Graphic:= TJpegImage.Create
      else
        Exit;
      //copiar los datos desde la tabla con un stream
      m:= DM.IBDSPalNue.CreateBlobStream(DM.IBDSPalNueFOTO, bmRead);
      ImgFotoPalNue.Picture.Graphic.LoadFromStream(m);
      m.Free;
    end;
end;

Para borrar la foto (del TImage y del campo Blob) pongo esto:
Código Delphi [-]
procedure TFPalabras.TBBorraFotoClick(Sender: TObject);
begin
  if Application.MessageBox('¿Seguro que desea borrar esta foto?','Borrar',mb_OkCancel+mb_IconQuestion)= IdOk then
    begin
      //borrar imangen
      ImgFotoPalNue.Picture.Assign(nil);
      //borrar foto del campo blob
      if (DM.IBDSPalNue.State <> dsEdit) and (DM.IBDSPalNue.State <> dsInsert) then
        DM.IBDSPalNue.Edit;
      DM.IBDSPalNueFOTO.Assign(nil);
      DM.IBDSPalNue.Post;
    end;
end;
Como te dije tengo fotos .bmp y .jpg y por eso tengo un campo donde guardo el formato.

Para .jpg hay que añadir en el uses la unit JPeg

Puedes mirar aquí:
http://www.rinconcitodelphi.com/comp...omponentes.htm
De título: Imágenes en campos Blob de Interbase y componentes IBX

Suerte. Tomás.
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:28:36.


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