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 

Guardar objetos en Firebird

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Guardar objetos en Firebird Responder citando

De la misma forma que se guardan imágenes en tablas Firebrid, ¿existe la posibilidad de guardar documentos en PDF? Por un tema de seguridad me interesaría poder guardar un PDF en una tabla.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Efectivamente, solo hay que determinar el tipo de información que debe almacenar el Campo BLOB.

Generalmente aun que esto no es del todo aplicable, pues a veces se declara el campo BLOB como "caiga". Es decir tal y como se piensa, pero existen varios tipos. los cuales a continuación expesifíco pues con la ayuda del siguiente enlace para reafirmar parte de lo expuesto.

Campos BLOB

Sub-Type 0: Generalmente para Datos Binarios(imágenes, exe's, pdf's etc)
Sub-Type 1: Usado para Almacenar y manipular Texto.
Sub-Type 2: Usado para BLR (Representacion de Lenguaje Binario)
Sub-Type 3: Acceso a Listas de Control,
Sub-Type 4: Rangos para verificar cambios (?)
Sub-Type 5: Relaciones y Compilaciones en Funciones.
Sub-Type 6: para rdb$formats
Sub-Type 7: Contiene la descripcion de una Multi-database
Sub-Type 8: No usado, puede ser usado para información de un archivo externo.

En fin que el almacenamiento de un archivo PDF, es posible, pues al igual que las imágenes estas cargando un Archivo Binario, el proceso debe ser a travez de LoadFromFile() y de SaveFileTo(), ya debes "guardar" primero el PDF posteriormente guardarlo como Binario en el campo BLOB y cuando lo recuperas, sacar el Contenido del BLOB grabarlo como PDF, verlo y posteriormente borrar el archivo para no dejar rastro.

Saludos!!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias César. Probaré y ya os diré como me ha ido.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

¡Hecho! Efectivamente es como César me sugiere. Lo explico.
    1. Creo una tabla con un campo tipo Blob.
    Código:
    CREATE TABLE Ficheros (Tipo CHAR(3) NOT NULL, Fichero CHAR(50) NOT NULL, Informes BLOB SUB_TYPE 0 SEGMENT SIZE 250)

    2. Creo el PDF; por ejemplo con
    Código:
    #include <qrpdffilt>
    #include <QRExport>

    TQRPDFDocumentFilter *fFiltro = new TQRPDFDocumentFilter("C:\\Listado.pdf");
    fFiltro->AddFontMap("Arial:Helvetica");
    fFiltro->StartConcat();
    fIndPer->qIndPer->ExportToFilter(fFiltro);
    fFiltro->EndConcat();
    delete fFiltro;

    3. Lo guardo en la tabla y lo borro.
    Código:
    Query->Close();
    Query->SQL->Text = "INSERT INTO Ficheros (Tipo, Fichero, Informes) VALUES ('PDF', :Fichero, :Informes)";
    Query->ParamByName("Fichero")->AsString   = "Listado.pdf"
    Query->ParamByName("Informes")->LoadFromFile("C:\\Listado.pdf", ftBlob);
    Query->ExecSQL();
    DeleteFile("C:\\Listado.pdf");

    4. Para recuperarlo:
    Código:
    Query->Close();
    Query->SQL->Text = "SELECT * FROM Ficheros WHERE Fichero = 'Listado.pdf'";
    Query->Open();
    ((TBlobField*)Query->FieldByName("Informes"))->SaveToFile("C:\\Listado.pdf");

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
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.