Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Abrir PDF almacenado en la base de Datos (https://www.clubdelphi.com/foros/showthread.php?t=96122)

giantonti1801 22-02-2023 15:24:42

Abrir PDF almacenado en la base de Datos
 
Hola amigo gracias a la ayuda del foro logre convertir y guardar un archivo desde fastreport a mi tabla de SQL SERVER en el campo varbinaryMax y hasta allí no tengo ningún problema aunque no logre hacerlo realmente como quería ya que para lograrlo tuve que crear un archivo en el directorio C:\ luego tomar este archivo y guardarlo uno de mis temores es que tenga algún inconveniente si en un futuro compilo para android o Iphone pero en este momento quisiera resolver el tema de abrir esta archivo que esta guardado en el campo varbinaryMax que se supone debe ser un PDF
Código Delphi [-]
 UniQueryFichaDoc.ParamByName('DOC').LoadFromFile(frxPDFExport1.FileName, ftBlob);

Neftali [Germán.Estévez] 23-02-2023 09:09:09

Pon el código de cómo lo has guardado en Base de Datos.
La forma de recuperarlo y abrirlo debería ser análoga a como lo guardas.

Si utilizas el disco para guardar temporalmente el fichero para guardarlo y recuperarlo, asegúrate de:
  • Que utilizas un directorio accesible por permisos para el usuario (directorio temporal)
  • Que lo borras después de utilizarlo

giantonti1801 23-02-2023 09:49:16

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 550523)
Pon el código de cómo lo has guardado en Base de Datos.
La forma de recuperarlo y abrirlo debería ser análoga a como lo guardas.

Si utilizas el disco para guardar temporalmente el fichero para guardarlo y recuperarlo, asegúrate de:
  • Que utilizas un directorio accesible por permisos para el usuario (directorio temporal)
  • Que lo borras después de utilizarlo

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
s1:tStream;
filtro :string;
begin
          frxPDFExport1.FileName := 'c:\Test.pdf';
          frxReport1.PrepareReport();
          frxReport1.Export(frxPDFExport1);
          //frxReport1.SaveToStream(s1);
           UniQueryFichaDoc.close;
          UniQueryFichaDoc.SQL.Clear;
          UniQueryFichaDoc.SQL.Add('Insert into fichadoc (REGPAC, TIPODOCUMENTO, DOC, MEDPRES)');
          UniQueryFichaDoc.SQL.Add('VALUES (:REGPAC, :TIPODOCUMENTO, :DOC, :MEDPRES )');
          UniQueryFichaDoc.ParamByName('REGPAC').AsString := '2';
          UniQueryFichaDoc.ParamByName('TIPODOCUMENTO').AsString := 'RECIPE MEDICO2';
          UniQueryFichaDoc.ParamByName('DOC').LoadFromFile(frxPDFExport1.FileName, ftBlob);
          UniQueryFichaDoc.ParamByName('MEDPRES').AsString := 'MEDICO2';
          UniQueryFichaDoc.ExecSQL;

end;

Neftali [Germán.Estévez] 23-02-2023 10:32:41

Algo así debería valer...

Código Delphi [-]
  // Crear una query para buscar el registro
  qInsert.SQL.Add('select * from ficheros where Nombre=:nombre');
  qInsert.ParamByName('nombre').AsString := FDQuery1.FieldByName('nombre').AsString;
  qInsert.Open;
  // Utiliza un TBlobField para grabarloa disco (a la inversa de como has hecho para gusrdarlo)
  TBlobField(qInsert.FieldByName('fichero')).SaveToFile('c:\temp\fichero_salida.pdf');

giantonti1801 23-02-2023 12:32:44

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 550525)
Algo así debería valer...

Código Delphi [-]
  // Crear una query para buscar el registro
  qInsert.SQL.Add('select * from ficheros where Nombre=:nombre');
  qInsert.ParamByName('nombre').AsString := FDQuery1.FieldByName('nombre').AsString;
  qInsert.Open;
  // Utiliza un TBlobField para grabarloa disco (a la inversa de como has hecho para gusrdarlo)
  TBlobField(qInsert.FieldByName('fichero')).SaveToFile('c:\temp\fichero_salida.pdf');

Excelente pero con eso logro guardarlo nuevamente en disco pero como hago para abrirlo? no quisiera que el usuario tenga que seguir la ruta para abrirlo con un dobleclick sobre el archivo. la idea es que se abra automaticamente.

Neftali [Germán.Estévez] 23-02-2023 12:50:08

Cita:

Empezado por giantonti1801 (Mensaje 550532)
Excelente pero con eso logro guardarlo nuevamente en disco pero como hago para abrirlo? no quisiera que el usuario tenga que seguir la ruta para abrirlo con un dobleclick sobre el archivo. la idea es que se abra automaticamente.

Usa ShellExecute

https://www.clubdelphi.com/foros/sho...69&postcount=1


La franja horaria es GMT +2. Ahora son las 05:24:58.

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