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 28-02-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Cómo extraer un documento pdf de una tabla

Hola amigos del foro.

Mi pregunta es si ya tengo almacenado un documento pdf en una tabla, el campo es un blob sub_type 0, (no sé si está bien definido); cómo hago para extraerlo y mostrarlo en el programa pdf predeterminado en la máquina del cliente.

No estoy utilizando ningún componente, bueno sería tener uno; pero me gustaría más cómo estraerlo y visualizarlo en otro programa.


Mil Gracia por vuestro tiempo

GustavoCruz
Responder Con Cita
  #2  
Antiguo 28-02-2011
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Poder: 0
cecam Va por buen camino
Por ejemplo

Guardando el contenido del campo

Código:
    TBlobField(campo).SaveToFile(archivo);
y después abriendo el archivo

Código:
ShellExecute(0,nil,PChar(archivo),nil,nil,SW_NORMAL);
Saludos!
Responder Con Cita
  #3  
Antiguo 28-02-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Gracias cecam, por tu rápida respuesta.

La variable "archivo" es de tipo String?,

Gracias por tu tiempo


Gustavo Cruz
Responder Con Cita
  #4  
Antiguo 01-03-2011
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Poder: 0
cecam Va por buen camino
Cita:
Empezado por GustavoCruz Ver Mensaje
La variable "archivo" es de tipo String?,
Si.

Mirate la ayuda de TField.SaveTofile y de ShellExecute . . . verás todas las opciones y parametros.

Saludos!
Responder Con Cita
  #5  
Antiguo 01-03-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Segúramente ayudaría sabe cómo lo has guardado, para realizar la extracción de forma análoga.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 01-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola Neftali, gracias por tu respueta.

la inserción la logré realizar de la siguiente manera
Código Delphi [-]
with fDatos do
        begin
          qArchivos.Open;
          qArchivos.Append;
          qArchivosARCCODIGO.AsString:= hvccodigo.Text;
          TBlobField(qArchivosARCARCHIVO).LoadFromFile(hvcarchivo.FileName);
          qArchivos.Post;
        end;

Muchas gracias por tu coloboración


Gustavo Cruz

Última edición por GustavoCruz fecha: 01-03-2011 a las 14:25:45. Razón: Correccion en el código
Responder Con Cita
  #7  
Antiguo 01-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues la respuesta de cecam te viene perfecta.

Lo guardas en un fichero en tu disco:

Código Delphi [-]
TBlobField(campo).SaveToFile(archivo);

Y luego lo abres con el programa predeterminado:

Código Delphi [-]
ShellExecute(0,nil,pchar(archivo),nil,nil,SW_NORMAL):
Responder Con Cita
  #8  
Antiguo 01-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Gracias por tu respuesta Casimiro Notevi pero eso no me está funcionando.
y no entiendo en dónde pueda estar el problema.

El mensaje de error que me muestra es: Unable to create file "".

este es el código:

Código Delphi [-]
var
  archivo: String;
begin
  with fDatos do
    begin
      //archivo := nil;
      qArchivos.Open;
      TBlobField(qArchivosARCARCHIVO).SaveToFile(archivo);
//      ShellExecute(0, nil, nil, nil, SW_NORMAL);
      ShowMessage(archivo);
      ShellExecute(0, 'Open', PChar(archivo), '', '', SW_SHOW)
    end;

Gracias por vuestro tiempo


Gustavo Cruz
Responder Con Cita
  #9  
Antiguo 01-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver...

Código Delphi [-]
procedure TFrameDocumentosEscaner.grImagenesDblClick(Sender: TObject);
const
    _rundll32exe_           = 'RunDll32.exe';
    _ImageView_Fullscreen_  = 'ImageView_Fullscreen';
    _Shimgvwdll_            = 'SHIMGVW.DLL';
var
    cFile,
    cProgramaVisor, cRun, cParam : string;
    mFile : TFileName;
begin
  inherited;
    if qrImagenes.RecordCount=0 then
        exit;
    //
    cFile:='';
    cProgramaVisor:='';
    cRun:='';
    cParam:='';
    //
    // Cogemos el nombre del fichero y lo guardamos en disco para su posterior visionado
    if qrImagenes.FieldByName('NOMBREFICHERO').asString='' then // cogido del escaner y no tiene nombre fichero
        cFile := ExtractFilePath(ParamStr(0))+'tmp.jpg'
    else // codigo de fichero
        cFile := ExtractFilePath(ParamStr(0))+'tmp'+ExtractFileExt(qrImagenes.FieldByName('NOMBREFICHERO').asString);
    TBlobField(qrImagenes.FieldByName('IMAGEN')).SaveToFile( cFile );
    cProgramaVisor := BuscarEjecutableAsociado(cFile);
    //
    mFile := TFileName( #34+cFile+#34 );
    //
    if pos(_Shimgvwdll_,AnsiUpperCase(cProgramaVisor))>0 then
    begin
        cRun := cProgramaVisor;
        cProgramaVisor := ExtractFilePath(cProgramaVisor)+_rundll32exe_;
        cParam := cRun + ' '+_ImageView_Fullscreen_+' ';
        mFile := TFileName( cFile );    // con el visor por defecto de windows no admite las comillas
    end;
    //
    // mFile := TFileName( #34+cFile+#34 );
    if cRun<>'' then
        RunAndWaitShell( cProgramaVisor, cParam+mFile, Sw_ShowNormal )
    else
        RunAndWaitShell( cProgramaVisor, mFile,        Sw_ShowNormal );
    //
    // ahora lo borramos
    DeleteFile(cFile);
end;

Ahora a quitar cosas y a cambiar
Responder Con Cita
  #10  
Antiguo 01-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Muchas gracias Casimiro Notevi, probaré y luego te comento.


Gustavo Cruz
Responder Con Cita
  #11  
Antiguo 01-03-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por GustavoCruz Ver Mensaje
El mensaje de error que me muestra es: Unable to create file "".
Asegúrate de que el path del fichero es correcto. PArece que te está diciendo que lo puede extraer, pero no lo puede guardar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 01-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Nada compañeros definitivamente no he podido hacerlo.

Así que como dijo Kiko. "Me doy..."

Gracias a todos por sus comentarios y respuestas. Quizás lo intente después

Gustavo Cruz
Responder Con Cita
  #13  
Antiguo 01-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Asegúrate de que el path del fichero es correcto. PArece que te está diciendo que lo puede extraer, pero no lo puede guardar.
No, es eso ya medí cuenta el error lo muestra es al descargar los datos en la variable "archivo"

Gracis por vuestra ayuda
Responder Con Cita
  #14  
Antiguo 01-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pon el código que estás usando, basicamente sólo es localizar el registro, luego extraer el pdf a un fichero en disco y ejecutarlo.

Una vez posicionado en el registro, olvida todo lo que te he copiado antes, usa sólo esto:

TBlobField(qrArchivosARCARCHIVO).SaveToFile( FileName );
o bien
TBlobField(qrArchivos.FieldByName('ARCARCHIVO')).SaveToFile( FileName ); <-- como se llame tu campo

Asegúrate que en FileName llevas un nombre correcto.

Luego lo abres con el shellexecute(...);
Responder Con Cita
  #15  
Antiguo 02-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola compañero foreros este es el código que tengo y según las indicaciones que me han dado pues debería funcionar.

Código Delphi [-]
procedure TfPrincipal.acListarClick(Sender: TObject);
var
    cFile : string;
    mFile : TFileName;
begin
  inherited;
    with fDatos do
      begin
        qArchivos.Open;
        TBlobField(qArchivos.FieldByName('arcarchivo')).SaveToFile( cFile );
        mFile := TFileName( #34+cFile+#34 );
      end;
end;

pero me sigue mostrando el error.
Y si se carga en un Stream. Aunque tampoco sé cómo se hace eso

Gracias por vuestro tiempo


Gustavo Cruz
Responder Con Cita
  #16  
Antiguo 02-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por GustavoCruz
pero me sigue mostrando el error.
¿Pero qué error te sale? y exactamente dónde?
Responder Con Cita
  #17  
Antiguo 02-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero qué error te sale? y exactamente dónde?
El mensaje de error que me muestra es: Unable to create file "".

dónde?

aquí:
Código Delphi [-]
TBlobField(qArchivos.FieldByName('arcarchivo')).SaveToFile( cFile )

y no entiendo por qué sucede...
Responder Con Cita
  #18  
Antiguo 02-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por GustavoCruz Ver Mensaje
El mensaje de error que me muestra es: Unable to create file "".
Normal, si no le has puesto un nombre , asígnale uno:
Código Delphi [-]
cFile := 'c:\unnombre.pdf';
Responder Con Cita
  #19  
Antiguo 02-03-2011
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Gracias a Clubdelphi, por existir.

Porque si no, qué hariamos nosotros los que sufrimos de segera
nunca ví lo del nombre del archivo y así jamás me iba a mostrar el archivo.

Atentamente, y muy agradecido


GustavoCruz
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
extraer datos de un documento word o txt e insertalo en la base de datos Secundino Conexión con bases de datos 5 28-02-2011 10:27:39
extraer informacion de documento de word Paty´s OOP 4 30-03-2009 11:13:00
Centrar una tabla en un documento Word abril0404 Servers 0 17-03-2008 09:10:01
Insertar documento de office en tabla de SQL Server Leviatan MS SQL Server 0 02-08-2007 19:47:46
extraer informacion de una tabla kloud C++ Builder 0 05-02-2006 16:21:38


La franja horaria es GMT +2. Ahora son las 11:01:42.


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