Ir para conteúdo
Fórum Script Brasil
  • 0

Quickreport


wilsonrosa

Pergunta

Pessoal,

Estou fazendo um relatório q imprimirá um crachá para pessoas, com nome, empresa e foto(vide anexo). Ainda neste mesmo crachá, terei 3 tarjas coloridas.

Desenhei o relatório no quickreport, e ao acessar via programa com o comando "QRCracha.Preview" os dados estão chegando normalmente, nome, empresa e foto.

Porém, não consigo controlar as tarjas para aparecerem de acordo com uma condição de data q estou fazendo, como mostra o código abaixo, ou seja, quando mostro o crachá no preview eu consigo rodar o banco clicando nas setinhas do preview, porém a tarja não muda de acordo com a condição. Faço uma query para coletar os dados (nome, empresa e foto) e só estou demonstrando uma condição para apenas uma tarja.

Alguém poderia me ajudar ??

Obrigado

WillRos

Segue onde coloquei a lógica: Neste caso

procedure TQRCarAcesso.QuickRepBeforePrint(Sender: TCustomQuickRep;

var PrintReport: Boolean);

begin

DMBAncos.QCracha.SQL.Clear ;

DMBAncos.QCracha.SQL.Add('Select clp.dt_nr11, clp.dt_nr33, clp.dt_nr10, clp.foto, cp.Nome as Pessoa, ce.rSocial as Fantasia');

DMBAncos.QCracha.SQL.Add('from TB_ComplProf as lp, tb_relacionamento as r, TB_CadProf as cp, TB_CadEmp as ce');

DMBAncos.QCracha.SQL.Add('Where r.CPF = clp.CPF and r.CPF = cp.CPF and r.CNPJ = ce.CNPJ');

//Showmessage(DMBAncos.QCracha.SQL.Text );

DMBAncos.QCracha.Open;

if dmbancos.QCrachaDT_NR11.Value > StrToDate ('01/01/1900') then

begin

NR11.Visible := true;

QRShape3.Visible := true ;

end

else

begin

NR11.Visible := false;

QRShape3.Visible := false;

end;

end;

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
if dmbancos.QCrachaDT_NR11.Value > StrToDate ('01/01/1900') then

acho que qualquer data em seu sistema será acima desta que voce está testando

logo, somente esta parte do codigo é que será executada

NR11.Visible := true;
QRShape3.Visible := true;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas,

Obrigado por responder.

Não necessariamente, porque existe um flag no dtpicker q se o mesmo for flegado a data foi modificada para maior q 01/01/1900 e caso não a mesma permanece em 01/01/1900.

O problema é q sem estar flegada o sistema sempre executa as linhas caso a condição seja satisfeita.

if dmbancos.QCrachadt_nr11.Value > StrToDate('01/01/1900') then

begin

QRShape2.Visible:= true;

QRLabel3.Visible:= true;

end

else

begin

QRShape2.Visible:= false;

QRLabel3.Visible:= false;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

wilsonrosa, o erro está no local onde você está fazendo o teste de controle. Considerando que este seu relatório esteja mostrando vários crachás, o mais lógico é que você faça este teste exatamente antes de imprimir o crachá específico, ou seja, em sua banda detalhe e não antes de imprimir todo o relatório, pois desta forma você estará aplicando a informação contida no primeiro registro para todos os que vem depois.

E observe isto que você está fazendo...

...
if dmbancos.QCrachaDT_NR11.Value > StrToDate ('01/01/1900') then
begin
  NR11.Visible := true;
  QRShape3.Visible := true;
end
else
begin
  NR11.Visible := false;
  QRShape3.Visible := false;
end;
agora pense com um pouco de lógica, não poderia ser apenas
NR11.Visible := dmbancos.QCrachaDT_NR11.Value > StrToDate ('01/01/1900');
QRShape3.Visible := NR11.Visible;

voce colocará este tipo de código no evento BeforePrint da banda detalhe, onde encontra-se o QRShape em questão.

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus,

Obrigado pela resposta, porém colocando o código na banda detalhes como você disse, o contador de páginas do preview dispara e não pára mais a não ser q eu aborte o delphi.

Eu tenho o desenho (shapes) do crachá e os dados do mesmo na banda detail, alías neste relatório eu só tenho a banda detail.

Como poderia resolver esse problema, estou usando a mesma query do primeiro post.

No Aguardo

Agradeço

WillRos

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, de qualquer forma, o local para você fazer qualquer mudança antes da impressão de cada item (detalhe = detail), é no BeforePrint da referida banda onde ele se encontre.

Quanto ao contador de páginas disparar, é meio estranho, exceto pelo fato de que você possa ter colocado todo o seu código inicial na banda detalhe - o que seria errado (sem dúvida). Voce teria que apenas remover, lá do seu evento BeforePrint do QuickRep, aquela parte que eu fiz o comentario e colocá-la no BeforePrint da banda detail.

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Micheus,

Era isso mesmo, deixei a select na QuickRepBeforePrint e as condições na banda, assim funciona. Está acontecendo algumas coisas estranhas ainda mas acredito não ser mais em relação ao quick e sim alguma coisa de lógica.

Aproveitando, o webbrowser do delphi , tem como abrir um documento do word dentro do mesmo, ou seja sem q ele abra pra isso o word ?

Muito Obrigado pelas dicas referente ao quickreport

Willros

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...