crie um servidor datasnap, e cada método remoto executa e cria um relatório em 
PDF ou HTML, ou qq outro tipo suportado pelo rave.

desta forma vc não terá problema de execução do rave pelo iw.

abs

BL

From: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] On 
Behalf Of Fábio Thomaz
Sent: quinta-feira, 18 de junho de 2009 08:52
To: delphi-br@yahoogrupos.com.br
Subject: Re: [delphi-br] Problemas: Intraweb + Rave + pdf





Servidor de relatórios? Eu nunca trabalhei assim. Eu teria que adquirir uma
outra versão do rave? Alguma versão server? Existe algum artigo explicando
como isto irá funcionar?

2009/6/17 Bruno Lichot 
<bruno.lic...@borland.com<mailto:bruno.lichot%40borland.com>>

>
>
> este erro deve estar ocorrendo pelo tipo de instancia do rave.
>
> a melhor forma de resolver isso é criar um servidor de relatório com
> datasnap. alem de sua aplicação ficar mais rápida..sera melhor de dar
> manutencao, mais segura, mais facil de distribuir e evluir/reutilizar
>
> From: delphi-br@yahoogrupos.com.br<mailto:delphi-br%40yahoogrupos.com.br> 
> <delphi-br%40yahoogrupos.com.br>[mailto:
> delphi-br@yahoogrupos.com.br<mailto:delphi-br%40yahoogrupos.com.br> 
> <delphi-br%40yahoogrupos.com.br>] On Behalf
> Of Fábio Thomaz
> Sent: terça-feira, 16 de junho de 2009 15:15
> To: delphi-br@yahoogrupos.com.br<mailto:delphi-br%40yahoogrupos.com.br> 
> <delphi-br%40yahoogrupos.com.br>
> Subject: [delphi-br] Problemas: Intraweb + Rave + pdf
>
>
> Olá amigos, estou desenvolvendo um módulo de matrículas OnLine no intraweb,
> depois de tudo feito, funcionando certinho, passei para os testes finais e
> verifiquei que o arquivo pdf gerado no rave (Ficha de Matrícula, Boleto,
> etc
> ...) saem com os dados de uma outra pessoa quando este processo de
> inscrição
> é feito simultaneamente, alguém teria uma dica para que isto não
> acontece-se? A classe TIWUserSessionBase é única para cada usuário não é?
> Veja um exemplo:
> //Função que rega o arquivo pdf e retorna o link do mesmo
> function TUserSession.ImprimeFichaMatricula(Matricula, Curso, Ano:
> Integer):
> string;
> var Arquivo : string;
> vcdsIMat: TClientDataSet;
> rvProject: TRvProject;
> rvPDF: TRvRenderPDF;
> rvSystem: TRvSystem;
> begin
> rvProject := TRvProject.Create(Self);
> rvProject.Name := 'rvFichaMatricula';
> rvPDF := TRvRenderPDF.Create(Self);
> rvSystem := TRvSystem.Create(Self);
> try
> rvProject.Engine := rvSystem;
>
> rvProject.Close;
> cdsFichaMatricula.Close;
> cdsFichaMatricula.Params[0].Value := Matricula;
> cdsFichaMatricula.Open;
>
> if cdsFichaMatricula.RecordCount = 1 then
> begin
> Arquivo := 'FichaMatricula' + WebApplication.AppID + '.pdf';
>
> rvProject.ProjectFile := gsAppPath + 'Files\FichaMatricula.rav';
> rvProject.Open;
>
> vcdsIMat := TClientDataSet.Create(Self);
> vcdsIMat.Name := 'vcdsIMat';
> try
>
> vcdsIMat.Data := Consulta('SELECT C.CSI_NOMCUR, P.CSI_DATA,
> P.CSI_INSCRICAO '+
> 'FROM TSI_PREMATRICULA P '+
> 'INNER JOIN TSI_CADCUR C ON (C.CSI_CODCUR
> = P.CSI_CODCUR) '+
> 'WHERE P.CSI_CODESC = '+vgCodEscola+
> 'AND P.CSI_ANOLET = '+IntToStr(Ano)+
> 'AND P.CSI_MATALU = '+IntToStr(Matricula)+
> 'AND P.CSI_CODCUR = '+IntToStr(Curso));
>
> with rvProject do
> begin
> SetParam('Curso',vcdsIMat.Fields[0].AsString);
> SetParam('Inscricao',vcdsIMat.Fields[2].AsString);
> SetParam('DataMat',vcdsIMat.Fields[1].AsString);
> end;
>
> with rvSystem do
> begin
> SystemSetups := [];
> DefaultDest := rdFile;
> DoNativeOutput:= False;
> RenderObject:= rvPDF;
> OutputFileName:= gsAppPath + 'Files\'+ Arquivo;
> end;
>
> rvProject.Execute;
>
> finally
> rvProject.Close;
> vcdsIMat.Free;
> end;
>
> Result :=
> 'window.open("'+WebApplication.Request.URL+'/files/'+Arquivo+'", "","");';
> end
> else
> begin
> Result := 'window.open("Files/FichaNaoEncontrada.html", "","");';
> end;
> finally
> rvProject.Free;
> rvPDF.Free;
> rvSystem.Free;
> end;
> end;
>
> //Procedimento que mostra a ficha
> procedure TF0InfPreMatricula.iwlnkFichaMatriculaClick(Sender: TObject);
> var Matricula, Curso: Integer;
> begin
> with UserSession do
> begin
> Matricula := StrToInt(Parametros[0]);
> Curso := StrToInt(Parametros[2]);
> AddToInitProc(ImprimeFichaMatricula(Matricula,Curso,vgAnoLetivo));
> end;
> end;
>
> Aparentemente, pelos testes que fiz, parece que as informações ficam
> armazenadas no servidor, quando outro usuário chama o mesmo procedimento
> ele
> apenas cria outro arquivo com as mesmas informações obtidas antes, estranho
> é que eu crio e destruo os componentes em tempo de execução e mesmo assim o
> problema persiste.
>
> Qualquer ajuda é bem vinda! Desde já agradeço.
>
> Fábio Thomaz.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>

[As partes desta mensagem que não continham texto foram removidas]



[As partes desta mensagem que não continham texto foram removidas]

Responder a