ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Quick Report OnNeedData...... Resolvido.......

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
vilmarsantothome
Novato
Novato


Registrado: Quarta-Feira, 5 de Novembro de 2008
Mensagens: 10

MensagemEnviada: Qua Ago 22, 2018 4:54 pm    Assunto: Quick Report OnNeedData...... Resolvido....... Responder com Citação

Alguem pode me informar se na hora de imprimir na impressora o evento OnNeedData e ativado?
Pois enquanto esta fazendo o preview vejo no debug que passa por esse evento mas quando mando imprimir pelo preview ele nao passa por ele e so imprime a ultima pagina.


Editado pela última vez por vilmarsantothome em Sex Ago 24, 2018 11:10 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Ago 22, 2018 6:24 pm    Assunto: Responder com Citação

Boa tarde,

Todo o código adicionado nos eventos dos componentes do Quick Report são executados no preview e ao imprimir (tanto direto como através do preview), então no caso de imprimir através do preview todo o código será executado 2 vezes.
E quando se utiliza código no evento OnNeedData costuma ser necessário adicionar código no evento BeforePrint do Quick Report para posicionar o DataSet no início e inicializar variáveis. Talvez você esteja com esse problema porque o DataSet não está no início nesse segundo processamento.

Espero que ajude


Editado pela última vez por imex em Seg Dez 04, 2023 11:54 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
vilmarsantothome
Novato
Novato


Registrado: Quarta-Feira, 5 de Novembro de 2008
Mensagens: 10

MensagemEnviada: Qui Ago 23, 2018 4:59 pm    Assunto: Responder com Citação

Boa tarde Imex, obrigado pela sua ajuda, mas eu tenho um report configurado assim:
01 QRBand1 como PageHeader somente com Labels
01 QRBand2 como GroupHeader com alguns QRDBTexts
01 QRBand3 como PageFooter somente com Labels
01 SubDetails
01 SubDetails

Veja alguns codigos que imagino sejam importantes:

procedure TFormCartaoPonto.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
pagina := 0;
end;

procedure TFormCartaoPonto.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := True;
if pagina < TextListBoxSel.Count then
begin
matricula := copy(TextListBoxSel.Items.Strings[pagina],1,04);
IBQEmpregado.Close;
IBQEmpregado.ParamByName('matricula').AsInteger := StrToInt(matricula);
IBQEmpregado.Open;
IBQTotal.Close;
IBQTotal.ParamByName('inicio').AsString := '01/'+FormatFloat('00',ComboBoxPeriodo.ItemIndex+1)+'/'+ComboBoxAno.Items[ComboBoxAno.ItemIndex];
IBQTotal.ParamByName('fim').AsString := ndiasmes[ComboBoxPeriodo.ItemIndex+1]+'/'+FormatFloat('00',ComboBoxPeriodo.ItemIndex+1)+'/'+ComboBoxAno.Items[ComboBoxAno.ItemIndex];
IBQTotal.Open;
IBQCartao.Close;
IBQCartao.ParamByName('inicio').AsString := '01/'+FormatFloat('00',ComboBoxPeriodo.ItemIndex+1)+'/'+ComboBoxAno.Items[ComboBoxAno.ItemIndex];
IBQCartao.ParamByName('fim').AsString := ndiasmes[ComboBoxPeriodo.ItemIndex+1]+'/'+FormatFloat('00',ComboBoxPeriodo.ItemIndex+1)+'/'+ComboBoxAno.Items[ComboBoxAno.ItemIndex];
IBQCartao.Open;
pagina := pagina + 1;
MoreData := True;
end else MoreData := False;

end;

procedure TFormCartaoPonto.QRBand2BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
pagina := pagina;
qrlabel47.Caption := matricula;
IBQHorario.ParamByName('grupo').AsString := '001';
IBQHorario.ParamByName('data').AsDate := StrToDate(ndiasmes[ComboBoxPeriodo.ItemIndex+1]+'/'+FormatFloat('00',ComboBoxPeriodo.ItemIndex+1)+'/'+ComboBoxAno.Items[ComboBoxAno.ItemIndex]);
IBQHorario.Open;
if not IBQHorarioHORENT0.IsNull then
QRL7.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL7.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL7.Caption := QRL7.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Next;
if not IBQHorarioHORENT0.IsNull then
QRL1.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL1.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL1.Caption := QRL1.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Next;
if not IBQHorarioHORENT0.IsNull then
QRL2.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL2.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL2.Caption := QRL2.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Next;
if not IBQHorarioHORENT0.IsNull then
QRL3.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL3.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL3.Caption := QRL3.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Next;
if not IBQHorarioHORENT0.IsNull then
QRL4.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL4.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL4.Caption := QRL4.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Next;
if not IBQHorarioHORENT0.IsNull then
QRL5.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL5.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL5.Caption := QRL5.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Next;
if not IBQHorarioHORENT0.IsNull then
QRL6.Caption := IBQHorarioHORENT0.AsString+'-'+IBQHorarioHORSAI0.AsString
else QRL6.Caption := '';
if not IBQHorarioHORENT1.IsNull then
QRL6.Caption := QRL6.Caption +' '+IBQHorarioHORENT1.AsString+'-'+IBQHorarioHORSAI1.AsString;
IBQHorario.Close;

end;

Nas minhas simulacoes, No preview os passos sao
1. QuickRep1BeforePrint
2. QuickRep1NeedData
3. QRBand2BeforePrint
Monta o relatorio de forma satisfatoria, so que quando mando imprimir pelo botao do preview ele imprime somente a ultima folha e os passos sao
1. QuickRep1BeforePrint
3. QRBand2BeforePrint
ele nao passa pelo evento 2. QuickRep1NeedData
Creio que e interessante informar-te da minha pouca experiencia em programacao, que a pratico somente para hobby.
Agradeco sua ajuda
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Ago 23, 2018 5:57 pm    Assunto: Responder com Citação

Boa tarde,

A propriedade DataSet do QuickReport está preenchida? Se estiver experimente deixa-la em branco.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
vilmarsantothome
Novato
Novato


Registrado: Quarta-Feira, 5 de Novembro de 2008
Mensagens: 10

MensagemEnviada: Sex Ago 24, 2018 10:59 am    Assunto: Responder com Citação

sim, o dataset do quick reporter esta em branco.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
vilmarsantothome
Novato
Novato


Registrado: Quarta-Feira, 5 de Novembro de 2008
Mensagens: 10

MensagemEnviada: Sex Ago 24, 2018 11:03 am    Assunto: Responder com Citação

resolvido..........´

Obrigado Imex, realmente o dataset do formulario estava linkado a query principal.
deixei-0 em branco conforme tua recomendacao e funcionou PERFEITAMENTE


Voce me salvou........
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB