Ir para conteúdo
  • Cadastre-se

dev botao

Problema no totalizador tQRExpr Delphi rio quickreport 6


Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 951 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Ola, Pessoal. 

Migrei o sistema do Delphi7 para o Delphi 10.3 Rio, e coloquei o quickreport 6.0 build 4.25.

Foi quase tudo bem, exceto uns problemas entre o usercontrol com o conector Zeos e a zeoslib, que consegui resolver.

O problema que me travou mesmo é que os campos numéricos com mascara não são impressos na rbdetail, tive que limpar a máscara do tqrdbtext e usar  TFloatField.displayformat apos abrir a query.. No entanto, os campos tQRExpr com função Sum não são impressos, e não consigo avançar com o sistema. Não imprimem no qrGroupFooter nem na rbSumary. Agradeço muito se alguém puder ajudar.

Configuração: o Quickrep aponta para zq e zq ponta para zconnnection

execucao.JPG

projeto.JPG

Project1.zip

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O suporte da QuickReport não conseguiu nada?

outra sugestão é migrar seus relatórios para Fast Report ou FortesReport que é gratuito.

sei que no Fast Report tem units que ajudam na conversão do Quickreport para ele gerando fr3

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

19 horas atrás, Juliomar Marchetti disse:

O suporte da QuickReport não conseguiu nada?

outra sugestão é migrar seus relatórios para Fast Report ou FortesReport que é gratuito.

sei que no Fast Report tem units que ajudam na conversão do Quickreport para ele gerando fr3

E, Juliomar, até já converti um relatório para fortes, como teste. fiz rápido, então complicou um pouco em relação aos qrGroups, mas de forma genérica, apenas alterei no .dfm:

TQuickRep->TRLReport
tqrimage->trlimage
tqrband->trlband
bandtype rbdetail->btDetail
tqrdbtext->trldbtext
tqrlabel->trllabel
tqrexpr->trldbresult
rbSummary->btSummary
tqrgroup->trlgroup->

e funciona bem para relatorios simples.
Nunca acionei o suporte do quickreport. Vou ver se encontro alguma dica, caso contrário o trabalho vai ser grande.

Se alguém souber de algo, favor informar. Se eu achar o problema, posto aqui.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Uma dúvida esse projeto em anexo foi criado para exemplificar o problema certo?

então ele é novo e foi feito já na versão que está dando erro? na documentação não tem alguma particularidade?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

13 horas atrás, Juliomar Marchetti disse:

Uma dúvida esse projeto em anexo foi criado para exemplificar o problema certo?

então ele é novo e foi feito já na versão que está dando erro? na documentação não tem alguma particularidade?

Bom dia, Juliomar. 
Exatamente, é um projeto novo para exemplificar. na documentação(help) somente informações genericas

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Juliomar Marchetti disse:

Vamos aguardar alguém que use ainda o quickreport. eu usei a última vez em 2002 com delphi 6 e depois nunca mais

Aproveitando, você recomenda o Fortes como gerador de relatórios free ou alguma outra? é que não pretendo investir licença para relatorios.

Link para o comentário
Compartilhar em outros sites

  • Moderadores
22 horas atrás, vitorpires disse:

Nunca acionei o suporte do quickreport. Vou ver se encontro alguma dica, caso contrário o trabalho vai ser grande.

Se alguém souber de algo, favor informar. Se eu achar o problema, posto aqui.

Tenho o Quick mas nunca usei Zeos, instalei ele aqui pra fazer o teste.

Acredito que seja algo com o mapeamento dos TFields feito pelo Lazarus Zeos que o QuickReport não esteja suportando...

Usando o seu projeto de exemplo criei a base com o campo VR_TOTAL com NUMERIC(15, 2) dessa forma a soma não apareceu.

Com a mesma base mas usando Firedac não houve problema.

O Zeos cria o TField do VR_TOTAL como TExtendedField. Caso você use um CAST na query para, por exemplo:

select [...], cast(VR_TOTAL as DOUBLE PRECISION) VR_TOTAL from NFSITEM

O campo passa a ser TFloatField e a soma do QuickReport passa a funcionar...

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, BigWings disse:

Tenho o Quick mas nunca usei Zeos, instalei ele aqui pra fazer o teste.

Acredito que seja algo com o mapeamento dos TFields feito pelo Lazarus que o QuickReport não esteja suportando...

Usando o seu projeto de exemplo criei a base com o campo VR_TOTAL com NUMERIC(15, 2) dessa forma a soma não apareceu.

Com a mesma base mas usando Firedac não houve problema.

O Zeos cria o TField do VR_TOTAL como TExtendedField. Caso você use um CAST na query para, por exemplo:

select [...], cast(VR_TOTAL as DOUBLE PRECISION) VR_TOTAL from NFSITEM

O campo passa a ser TFloatField e a soma do QuickReport passa a funcionar...

hum, muito interessante, BigWings. 

Vou testar a alteração no select.

Obrigado.

Link para o comentário
Compartilhar em outros sites

Testei a alteração sugerida pelo BigWings, e realmente voltaram a funcionar os campos tQrdbText numericos e os tQRExpr. Ainda assim não convém ter que ajustar todas as queries usando o cast.

Creio que tem alguma coisa a ver com ControlCodePage, ClientCodePage e talvez AutoEncodeStrings.. Por exemplo, no select de um campo string tamanho 1, agora me dá a expressão "Type Mismatch.Expecting WideString actual String ". Ocorreu parecido com um campo numérico,, 

Editado por vitorpires
Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
12 horas atrás, vitorpires disse:

Creio que tem alguma coisa a ver com ControlCodePage, ClientCodePage e talvez AutoEncodeStrings.. Por exemplo, no select de um campo string tamanho 1, agora me dá a expressão "Type Mismatch.Expecting WideString actual String ". Ocorreu parecido com um campo numérico,, 

Isso é um problema em usar TFields persistentes.

Se mudar qualquer coisa, Delphi, Firebird, componente de acesso o mapeamento dos TFields pode ser diferente e vai ter esses erros.

Aí tem que ficar ajustando...

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, BigWings disse:

Isso é um problema em usar TFields persistentes.

Se mudar qualquer coisa, Delphi, Firebird, componente de acesso o mapeamento dos TFields pode ser diferente e vai ter esses erros.

Aí tem que ficar ajustando...

verdade. Muito obrigado!

11 horas atrás, Juliomar Marchetti disse:

Não foi você quem postou algo sobre conectar com zeos no firebird?

Não, Juliomar. Mas obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Para que tiver com o mesmo problema, consegui arrumar alterando a unit qrexpr.pas;

Procure a function TQREvElementDataField.Value(FiFo : TQRFiFo) : TQREvResult;

nela tem o mapeamento dos tipos de Fields e aonde tiver o TFloatField adiciona na condição TExtendedField e TSingleField

 

Exemplo de como ficou:

      if (FField is TFloatField)  or
         (FField is TCurrencyField) or
         (FField is TExtendedField) or // adicionado manualmente
         (FField is TSingleField) or // adicionado manualmente
         (FField.DataType = ftFMTbcd) then

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Complementando a resposta anterior do EwertonGerencial e para quem utiliza o firebird com o quickreport alterar o bloco anterior adicionando as mesmas linhas:

Delphi: Delphi 10.3 Version 26.0.36039.7899 

Firebird: 2.5.9

Quickreport: Version 6.00 Win64, Build 4.25 (16/11/20218)

// numeric fields
  else if (FField is TBCDField) or
          (FField is TExtendedField) or // adicionado manualmente
          (FField is TSingleField) or // adicionado manualmente
          (FField is TFMTBCDField) then
  begin
        result.Kind := resDouble;
        result.dblResult := TNumericField(FField).AsFloat;
  end

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 951 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.