Re: [delphi-br] Problemas: Intraweb + Rave + pdf

2009-06-18 Por tôpico Fábio Thomaz
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



 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@yahoogrupos.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
 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]



RE: [delphi-br] Problemas: Intraweb + Rave + pdf

2009-06-18 Por tôpico Bruno Lichot
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.commailto: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.brmailto:delphi-br%40yahoogrupos.com.br 
 delphi-br%40yahoogrupos.com.br[mailto:
 delphi-br@yahoogrupos.com.brmailto: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.brmailto: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]



Re: [delphi-br] Problemas: Intraweb + Rave + pdf

2009-06-18 Por tôpico Fábio Thomaz
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.combruno.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.brmailto:
 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

RE: [delphi-br] Problemas: Intraweb + Rave + pdf

2009-06-17 Por tôpico Bruno Lichot
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...@yahoogrupos.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
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]



[delphi-br] Problemas: Intraweb + Rave + pdf

2009-06-16 Por tôpico Fábio Thomaz
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]