| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
vilmarsantothome Novato

Registrado: Quarta-Feira, 5 de Novembro de 2008 Mensagens: 10
|
Enviada: Qua Ago 22, 2018 4:54 pm Assunto: Quick Report OnNeedData...... Resolvido....... |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Ago 22, 2018 6:24 pm Assunto: |
|
|
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 |
|
 |
vilmarsantothome Novato

Registrado: Quarta-Feira, 5 de Novembro de 2008 Mensagens: 10
|
Enviada: Qui Ago 23, 2018 4:59 pm Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Ago 23, 2018 5:57 pm Assunto: |
|
|
Boa tarde,
A propriedade DataSet do QuickReport está preenchida? Se estiver experimente deixa-la em branco.
Espero que ajude |
|
| Voltar ao Topo |
|
 |
vilmarsantothome Novato

Registrado: Quarta-Feira, 5 de Novembro de 2008 Mensagens: 10
|
Enviada: Sex Ago 24, 2018 10:59 am Assunto: |
|
|
| sim, o dataset do quick reporter esta em branco. |
|
| Voltar ao Topo |
|
 |
vilmarsantothome Novato

Registrado: Quarta-Feira, 5 de Novembro de 2008 Mensagens: 10
|
Enviada: Sex Ago 24, 2018 11:03 am Assunto: |
|
|
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 |
|
 |
|