PDA

Ver la Versión Completa : Save Archivo con Intraweb


mjjj
04-06-2023, 17:06:21
Buenos noches amigos del foro,
Estoy haciendo un programa para internet usando para esto intraweb y me gustaría su ayuda para resolver la creación de un archivo.

En la versión de win32 del programa crear un excel y lo descarga donde el usuario lo desee, pero con Intraweb no logre que funcione, utilizando los típicos componentes TFileSaveDialog para seleccionar la ruta.

Favor me sirve cualquier idea.

Casimiro Notevi
04-06-2023, 17:42:09
¿Cómo lo haces?

mjjj
04-06-2023, 18:30:42
En la versión win32 lo hago así y funciona perfecto.
Necesito hacer lo mismo pero en un aplicativo de Intraweb.


FDCONNECTion1.close;
fdconnection1.open;

fdquery1.Close;
fdquery1.Open();

if fdquery1.IsEmpty = FALSE then
try
Report := TFlexCelReport.Create(true);

if not SaveDialog1.Execute then exit;

Report.AddTable('fdquery1',fdquery1, TRecordCountMode.SlowCount, TDisposeMode.DoNotDispose);

Report.SetValue('empresa',combobox7.text); // .SetCellValue(1, 1, statusbar1.panels[2].Text);
Report.SetValue('ejercicio',edit9.Text); // .SetCellValue(1, 1, statusbar1.panels[2].Text);
Report.SetValue('periodo',combobox8.Text); // .SetCellValue(1, 1, statusbar1.panels[2].Text);
Report.SetValue('fecha',datetimetostr(now)); // .SetCellValue(1, 1, statusbar1.panels[2].Text);

Report.Run(ExtractFilePath(application.ExeName)+'\EERR_SAP.xlsx', SaveDialog1.FileName);

if MessageDlg('Se ha exportado correctamente. ¿Desea abrir el archivo generado?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
ShellExecute(0, 'open', PCHAR(SaveDialog1.FileName), nil, nil, SW_SHOWNORMAL);
end;
finally

FDCONNECTion1.close;
end;

mjjj
05-06-2023, 18:32:23
Estimados, alguna idea de como puedo resolver esto ??
Será que Intraweb no esta hecho para resolver este tipo de problemas ??

Casimiro Notevi
05-06-2023, 18:37:21
¿Pero te da algún error, mensaje, algo? ¿has seguido el código y has visto cuál es el código de error que devuelve?

mjjj
05-06-2023, 18:53:15
No da error, simplemente no hace nada.

Casimiro Notevi
05-06-2023, 20:46:24
Shellexecute devuelve un código, mira a ver cuál es.

mjjj
10-06-2023, 06:13:04
Estuve averiguando, y es un problema que estas sentencias se ejecutan desde el lado del servidor, por eso nunca iba a funcionar.
Ahora bien, tampoco he podido resolverlo, pero si entiendo que se debe utilizar algo así:


webapplication.SendFile('c:\datos\');


Alguna idea de como pasar el directorio de destino en el cliente ??

Casimiro Notevi
10-06-2023, 13:06:55
Seguramente debas descargar primero el fichero al equipo local y guardarlo donde quieras.

mjjj
10-06-2023, 17:50:10
Gracias Casimiro.
Tienes algún ejemplo de código de como se debe hacer esto ??
Ni se por donde empezar :(

Casimiro Notevi
10-06-2023, 19:15:46
¿Algo así?
uses
IWDownload;

procedure DescargarArchivoIntraWeb(AContext: TIWBaseHTMLComponent; const URL, RutaDestino: string);
var
Download: TIWDownload;
begin
Download := TIWDownload.Create(AContext);
try
Download.Path := RutaDestino;
Download.URL := URL;
Download.Render(AContext);
finally
Download.Free;
end;
end;