Valeu Bruno, vou implementar e testar. 2009/6/18 Bruno Lichot <bruno.lic...@borland.com>
> > > 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 <delphi-br%40yahoogrupos.com.br>[mailto: > delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>] On Behalf > Of Fábio Thomaz > Sent: quinta-feira, 18 de junho de 2009 08:52 > To: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.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<bruno.lichot%40borland.com> > <mailto:bruno.lichot%40borland.com <bruno.lichot%2540borland.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 <delphi-br%40yahoogrupos.com.br> > <mailto:delphi-br%40yahoogrupos.com.br <delphi-br%2540yahoogrupos.com.br>> > <delphi-br%40yahoogrupos.com.br>[mailto: > > delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br><mailto: > delphi-br%40yahoogrupos.com.br <delphi-br%2540yahoogrupos.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 <delphi-br%40yahoogrupos.com.br> > <mailto:delphi-br%40yahoogrupos.com.br <delphi-br%2540yahoogrupos.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] > > > [As partes desta mensagem que não continham texto foram removidas]