Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 14-03-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 688
Poder: 21
olbeup Va camino a la fama
Hola Tiammat

Actualmente grabo las fotos y los pdf's dentro de la base de datos, como bien dices, para tenerlas siempre a mano y en cualquier momento.

La función que utilizo funciona correctamente, actualmente utilizo SQL SERVER 2005 sin ningún problema ni error de grabación o recuperación del fichero, tanto JPG o PDF.

Esta función trabaja directamente con un ADOQuery ya definido y conectado a la DB.

Cita:
Devuelve un fichero temporal único
Código Delphi [-]
function GetNewFileTemp(Prefix: String): String;
var
  PathTmp: Array[0..MAX_PATH] of Char;
  FileTmp: Array[0..MAX_PATH] of Char;
begin
  FillChar(PathTmp, SizeOf(PathTmp), #0);
  FillChar(FileTmp, SizeOf(FileTmp), #0);

  GetTempPath(MAX_PATH, PathTmp);
  GetTempFileName(PathTmp, PChar(Prefix), 0, FileTmp);

  Result := FileTmp;
end;

Cita:
Devuelve el pdf del campo query que está activo en ese momento
Código Delphi [-]
function GetFieldDBToPDF(QryDB: TADOQuery): WideString;
var
  Stream: TMemoryStream;
  FileTmp: String;
begin
  Stream := TMemoryStream.Create;
  FileTmp := GetNewFileTemp('~t1');
  try
    TBlobField(QryDB.FieldByName('PDFIMAGEN')).SaveToStream(Stream);
    Stream.Position := 0;
    Stream.SaveToFile(FileTmp);
  finally
    Stream.Free;
  end;
  Result := FileTmp;
end;

Cita:
Graba en el campo query que está activo en ese momento el PDF
Código Delphi [-]
procedure UpdatePDFToFieldDB(QryDB: TADOQuery; Filename: WideString);
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  Stream.LoadFromFile(FileName);
  try
    QryDB.Edit;
      (QryDB.FieldByName('PDFIMAGEN') as TBlobField).Clear;
      (QryDB.FieldByName('PDFIMAGEN') as TBlobField).LoadFromStream(Stream);
    QryDB.Post;
  finally
    Stream.Free;
  end;
end;

Cita:
Añade en el campo query que está activo en ese momento el PDF
<Parametros>, ADOQuery, Filename, FieldNameID, FieldValueID
Código Delphi [-]
procedure AddPDFToFieldDB(QryDB: TADOQuery; Filename: WideString; FieldNameID: String; FieldValueID: Integer);
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    if (Length(Filename) > 0) then
    begin
      Stream.LoadFromFile(FileName);
      QryDB.Append;
      QryDB.Edit;
        (QryDB.FieldByName('PDFIMAGEN') as TBlobField).Clear;
        (QryDB.FieldByName('PDFIMAGEN') as TBlobField).LoadFromStream(Stream);
        QryDB.FieldByName(FieldNameID).AsInteger := FieldValueID;
      QryDB.Post;
    end
    else begin
      QryDB.Edit;
        (QryDB.FieldByName('PDFIMAGEN') as TBlobField).Clear;
      QryDB.Post;
    end;
  finally
    Stream.Free;
  end;
end;
Este último utilizo el FieldNameID para hacer referencia algún campo de la base de datos FieldValueID es el valor que debe tomar.
Eje.
Si se añade un registro en una DB de ITVPDF ésta DB los campos que tienen son (IDITVDF, PDFIMAGEN, ITVID), el FieldNameID = ITVID y el valor de éste es el FieldValueID = ITVID, ésta función la utilizo para varias DB distinstas, donde el FieldNameID puede variar, por esta razón se envía el campo y el valor.

Estas funciones han sido realizadas gracias a las muchas respuestas sobre el tema en esta comunidad ClubDelphi.

Espero que estas funciones puedan ayudar a toda la comunidad.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Error con W-2008 Server Parsec Varios 8 29-02-2012 19:35:06
Delphi y Sql Server 2008 Paulao Varios 3 02-10-2010 06:20:50
Win Server 2008 Casimiro Noteví Noticias 40 12-03-2008 23:37:43
Guardar cualquier tipo de archivo en un campo en sql server zafmanjp MS SQL Server 7 21-12-2007 18:34:52
Como guardar un Word en un campo SQL SERVER Investment MS SQL Server 1 03-05-2004 15:08:33


La franja horaria es GMT +2. Ahora son las 01:06:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi