Delphi + UNIGUI + Arquivo externo
21/10/2014
0
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
Curtir tópico
+ 0
Responder
Post mais votado
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)
Nirlan Fundao
Responder
Mais Posts
12/11/2014
Brunno Sena
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 ???
Responder
30/01/2015
Nirlan Fundao
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)