Jump to content
marcinhovaladao

rave report imprimi errado apos fechar form

Recommended Posts

Bom amigos, gostaria de uma grande ajuda de vocês,
meu problema é o seguinte, tenho uma consulta que mostra os dados no db grid, quando abro esse formulario de consulta pela primeira vez no projeto o rave imprimi a consulta certinha, mas se eu fecho este form de consulta e abro novamente o rave sempre puxa a ultima consulta que eu fiz, a consulta que eu tinha feito antes de fechar o form. A modo da consulta está certa por que no dbgrid mostra os resultados certinhos é só o rave que não enxerga isso. Alguem ja passou por algo parecido... obrigado amigos

Share this post


Link to post
Share on other sites

amigo obrigado pela ajuda.... mas usa sim.

Até por que quando eu executo o projeto e abro este form pela primeira vez todas as consultas todos os relatorios vão certinho, basta eu fechar este form e abri-lo novamente ai ele sempre me retorna a ultima consulta que eu fiz antes de fecha-lo.

 

vlw

Share this post


Link to post
Share on other sites

Como você está chamando seus relatórios? Você destrói o form onde está o relatório e o recria todas as vezes? Posta o código que está usando para gerar o relatório para ver se há algo que possamos ajudar.

 

Achei um post aqui no fórum mesmo sobre o assunto: http://forum.imasters.com.br/topic/300244-rave-reports/

Edited by Chrnos

Share this post


Link to post
Share on other sites

o codigo esta da seguinte forma:

 

with sql_rel_aso_todos do
begin
Close;
SQL.Clear;
SQL.Add('select * from sempremais.view_aso_todos');
SQL.Add('where cad_registro = :cod ');
ParamByName('cod').AsAnsiString := comboCad_registro.KeyValue;
Open;
if RecordCount > 0 then
begin
rv_aso_todos.Execute;
end;
e sempre que fecho o form eu dou um NIL, e depois crio o form novamente...
obrigado pela ajuda


Tentei o link sugerido pelo amigo Chrnos mas o erro continua, o problema acontece quando eu fecho o form e abro novamente. Antes de fechar o form a consulta acontece perfeitamente

Share this post


Link to post
Share on other sites

Posta o código completo, inclusive na parte onde destrói o form do rave e o recria, pois no código que postou aqui só estou vendo a chamada do rave, não vejo você fechar o rave gerado anteriormente em nenhum momento... você associou aos campos do rave direto ao sql_rel_aso_todos ou usa algum dataset dentro do rave conectado a este componente?

Share this post


Link to post
Share on other sites

certo,

para chamar o form da consulta do relatorio esta assim:

 

if frmExamesClientes = nil then
begin
frmExamesClientes:=TfrmExamesClientes.Create(Self);
frmExamesClientes.ShowModal;
end;
e no onclose do form esta da seguinte forma:
frmExamesClientes := nil;
Eu uso um TrvDataSetConnection do rave que esta associado ao meu sql_rel_aso_todos.

Share this post


Link to post
Share on other sites

Se entendi direito, esse frmExamesClientes é onde está seu dbgrid correto? Onde executa as consultas para depois chamar o rave certo?? Uma coisa que vi no link que lhe passei antes, é que este tipo de problema ocorre quando não é fechado o dataset do rave, que fica carregado com a sua primeira consulta no momento da geração do rave... faz um tempo que não mexo com o rave, então vou sugerir a seguinte mudança no seu código na chamada do rave...

 

 

if RecordCount > 0 then
begin
      rv_aso_todos.Close;
      rv_aso_todos.ProjectFile:= 'C:\SeuRelatorioRave';
      rv_aso_todos.Execute;
     TrvDataSetConnection.Close; //Lembrando de por aqui o caminho de onde este componente está no seu programa
end;

 

Ps.: eu sempre trabalhei com criação dinâmica dos forms em runtime, isso inclusive nos forms onde uso relatórios e nunca tive problemas por causa disso...

Share this post


Link to post
Share on other sites

Tenta criar o formulário em tempo de execução e dar um Free nele depois de fechar

assim ele será reconstruído toda vez que for aberto e não existira a segunda abertura.

 

No onclose adicione:

 

Action := caFree;
Edited by Roberto Fagundes

Share this post


Link to post
Share on other sites

galera deu certo aqui, em partes .... segui o conselho do Roberto Fagundes, eu tirei o form de consulta do Available Form e passei ele para o auto create la em : PROJECT->OPTIONS->FORMS ....

 

ai para eu chamar o form ao inves de:

if frmExamesClientes = nil then
begin
frmExamesClientes:=TfrmExamesClientes.Create(Self);
frmExamesClientes.ShowModal;
end;
estou só chamado da seguinte maneira.
frmExamesClientes.showmodal
Acontece que é uma maneira errada de se fazer não é?
O que está pegando é que tenho que entregar esse projeto hoje, acho que dessa forma vai me dar mais um tempo pra mim quebrar a cabeça e tentar achar o erro.
Dessa forma que está não influencia nada se o sistema for em rede não neh?

Share this post


Link to post
Share on other sites

Não infuencia não, porque o sistema roda no cliente e não no servidor.

 

Mas isso dará erro se você continuar utilizando o onclose daquela forma,

você pode continuar com isso:

 

frmExamesClientes:=TfrmExamesClientes.Create(Self);
frmExamesClientes.ShowModal;

Share this post


Link to post
Share on other sites

Beleza pura então, vou deixar desta forma que está.

Roberto Fagundes e Chrnos, obrigadão pela força ...

Ta indo certinho agora ....

 

Vou ver se consigo descobrir o motivo de acontecer aquele erro, se eu conseguir descobrir posto aqui blza...

 

abraço

Vlw, tudo de bom.



[RESOLVIDO]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.