Delphi + UNIGUI + Arquivo externo
Srs. tudo bem ?
Estou migrando uma aplicação para Web. Utilizo o Delphi 2010 + Firebird + UNIGUI, e me deparei com a seguinte situação.
Gero um relatório em excel. No http://localhost:8077 o arquivo me é gerado localmente, e tudo certo, mas ao passar pro servidor, e tentar acessar de qualquer maquina, quando pede para ser gerado o relatório, ele gera la dentro do servidor, e não localmente para a pessoa...
O autoCoInitialize, está habilitado.
O que posso fazer ???
Estou migrando uma aplicação para Web. Utilizo o Delphi 2010 + Firebird + UNIGUI, e me deparei com a seguinte situação.
Gero um relatório em excel. No http://localhost:8077 o arquivo me é gerado localmente, e tudo certo, mas ao passar pro servidor, e tentar acessar de qualquer maquina, quando pede para ser gerado o relatório, ele gera la dentro do servidor, e não localmente para a pessoa...
O autoCoInitialize, está habilitado.
O que posso fazer ???
Brunno Sena
Curtidas 0
Melhor post
Nirlan Fundao
07/11/2014
Como o sistema roda no servidor, todos os arquivos são gerados no servidor. É necessário que após o arquivo gerado você faça o download do mesmo para o browser cliente.
Eu gero os relatórios em PDF através do report builder, conforme abaixo:
procedure TUniForm960.GeraArquivo;
var
vArqTemp : String;
begin
vArqTemp := 'report_' + IntToStr(DM.vNumUsuario) + '_' + FormatDateTime('ddmmyy_hhmmss', Now) + '.pdf';
try
if FileExists(UniServerModule.LocalCachePath + vArqTemp) then
DeleteFile(UniServerModule.LocalCachePath + vArqTemp);
except
end;
ppReport1.PrinterSetup.MarginTop := DM.vMargemSup;
ppReport1.PrinterSetup.DocumentName := Self.Caption;
ppReport1.AllowPrintToFile := True;
ppReport1.ShowPrintDialog := False;
ppReport1.DeviceType := dtPDF;
ppReport1.TextFileName := UniServerModule.LocalCachePath + vArqTemp;
ppReport1.Print;
DM.vPDF := UniServerModule.LocalCacheURL + '/' + vArqTemp;
end;
Depois utilizo um form com o componente uniFrame para visualizar o arquivo gerado:
UniURLFrame1.URL := DM.vPDF;
(DM.vPDF é uma variável pública que está no meu mainModule ( que é o data module do unigui)
Eu gero os relatórios em PDF através do report builder, conforme abaixo:
procedure TUniForm960.GeraArquivo;
var
vArqTemp : String;
begin
vArqTemp := 'report_' + IntToStr(DM.vNumUsuario) + '_' + FormatDateTime('ddmmyy_hhmmss', Now) + '.pdf';
try
if FileExists(UniServerModule.LocalCachePath + vArqTemp) then
DeleteFile(UniServerModule.LocalCachePath + vArqTemp);
except
end;
ppReport1.PrinterSetup.MarginTop := DM.vMargemSup;
ppReport1.PrinterSetup.DocumentName := Self.Caption;
ppReport1.AllowPrintToFile := True;
ppReport1.ShowPrintDialog := False;
ppReport1.DeviceType := dtPDF;
ppReport1.TextFileName := UniServerModule.LocalCachePath + vArqTemp;
ppReport1.Print;
DM.vPDF := UniServerModule.LocalCacheURL + '/' + vArqTemp;
end;
Depois utilizo um form com o componente uniFrame para visualizar o arquivo gerado:
UniURLFrame1.URL := DM.vPDF;
(DM.vPDF é uma variável pública que está no meu mainModule ( que é o data module do unigui)
GOSTEI 3
Mais Respostas
Brunno Sena
21/10/2014
Como o sistema roda no servidor, todos os arquivos são gerados no servidor. É necessário que após o arquivo gerado você faça o download do mesmo para o browser cliente.
Eu gero os relatórios em PDF através do report builder, conforme abaixo:
procedure TUniForm960.GeraArquivo;
var
vArqTemp : String;
begin
vArqTemp := 'report_' + IntToStr(DM.vNumUsuario) + '_' + FormatDateTime('ddmmyy_hhmmss', Now) + '.pdf';
try
if FileExists(UniServerModule.LocalCachePath + vArqTemp) then
DeleteFile(UniServerModule.LocalCachePath + vArqTemp);
except
end;
ppReport1.PrinterSetup.MarginTop := DM.vMargemSup;
ppReport1.PrinterSetup.DocumentName := Self.Caption;
ppReport1.AllowPrintToFile := True;
ppReport1.ShowPrintDialog := False;
ppReport1.DeviceType := dtPDF;
ppReport1.TextFileName := UniServerModule.LocalCachePath + vArqTemp;
ppReport1.Print;
DM.vPDF := UniServerModule.LocalCacheURL + '/' + vArqTemp;
end;
Depois utilizo um form com o componente uniFrame para visualizar o arquivo gerado:
UniURLFrame1.URL := DM.vPDF;
(DM.vPDF é uma variável pública que está no meu mainModule ( que é o data module do unigui)
Eu gero os relatórios em PDF através do report builder, conforme abaixo:
procedure TUniForm960.GeraArquivo;
var
vArqTemp : String;
begin
vArqTemp := 'report_' + IntToStr(DM.vNumUsuario) + '_' + FormatDateTime('ddmmyy_hhmmss', Now) + '.pdf';
try
if FileExists(UniServerModule.LocalCachePath + vArqTemp) then
DeleteFile(UniServerModule.LocalCachePath + vArqTemp);
except
end;
ppReport1.PrinterSetup.MarginTop := DM.vMargemSup;
ppReport1.PrinterSetup.DocumentName := Self.Caption;
ppReport1.AllowPrintToFile := True;
ppReport1.ShowPrintDialog := False;
ppReport1.DeviceType := dtPDF;
ppReport1.TextFileName := UniServerModule.LocalCachePath + vArqTemp;
ppReport1.Print;
DM.vPDF := UniServerModule.LocalCacheURL + '/' + vArqTemp;
end;
Depois utilizo um form com o componente uniFrame para visualizar o arquivo gerado:
UniURLFrame1.URL := DM.vPDF;
(DM.vPDF é uma variável pública que está no meu mainModule ( que é o data module do unigui)
Nirlan e Fundao
Obrigado amigo...
Fiz os testes, passando pro Excel... mas ocorreu que acredito que ele não abra o excel dentro do Frame, como posso fazer ???
GOSTEI 0
Nirlan Fundao
21/10/2014
Eu não preciso utilizar o excel em meus sistemas. Mas acredito ter visto algo assim no fórum do unigui. Sugiro que você pesquise pelo termo "excel" no fórum do unigui que certamente irá encontrar uma solução.
GOSTEI 0