Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Relatório Com 2 Quebras, A Partir De Sentença Sql


araujoronaldo

Posts Recomendados


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Prezados,

Preciso fazer um relatório com 2 quebras (LD01 e LD01.01), do tipo quebra por status do movimento e quebra por número do movimento. Exemplo: Status pendente, com totalização para esta quebra e nº movimento 00001 com totalização dos itens deste movimento.

Como confeccionei o relatório a partir de sentença SQL, utilizei o recurso alias status$ e Numero$, sendo o caracter "$" que garante a quebra.

Porém não consegui o efeito desejado. A LD mais interna está totalizando o valor dos itens porém a LD mais externa (LD01) não está quebrando pelo campo STATUS do movimento.

Alguém sabe como resolver isso?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Ninguém?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Você está usando 2 sql's distintas?

Tem campos da base na LD? Se tiver pode ser que a sql não está sendo a master. Sugiro retirar os campos da base ou adicionar o campo que quer a quebra da base, e fazer a quebra dando dois cliques na LD.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Testei aqui e está funcionando...

Verifique se tem 2 sqls, se tem a quebra em cada uma, se o totalizador está configurado para imprimir na quebra... Se não der certo poste suas consultas!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Diga aí cruzeirense, saudações celestes!

"... NÓS SOMOS LOUCOS, SOMOS CRUZEIRO!"

Não estou utilizando campos da base no relatório.

Não usei 2 SQLs, usei apenas 1, certamente é por isso que não estou conseguindo.

Quando você citou a questão de 2 SQLs clareou o raciocínio. Vou fazer o teste aqui. Neste caso seriam 2 SQLs distintas, sim?

A 1ª SQL poderia conter os campos mais sintéticos do tipo: data de emissão, centro de custo (que passarei via parâmetro), status do movimento, id do movimento e nº do movimento.

A 2ª SQL conteria os campos mais analíticos, descendo até o nível de item do movimento (TITMMOV).

Desde já agradeço.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Saudações celestes!!!

Exatamente! Voce pode pensar como pai e filho. Na LD01 vc coloca uma quebra, por status, com uma sql. Na LD01.01 vc coloca a outra consulta buscando os itens do movimento, e coloca um totalizador.

Assim, o TD01 irá totalizar tudo por status e o TD01.01 irá totalizar os itens do movimento.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Ok, farei o teste. Obrigado.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

E ai Araujoronaldo, deu certo?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Fiz o teste hoje e funcionou. Muito obrigado pela orientação.

Saudações celestes!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Cruzeiro,

Tenho outro relatório com a mesma característica desse e estou com dificuldade para relacionar a SQL constante na LD 01.01 com a SQL da LD01.

É o seguinte:

Na LD 01 mostro todas as ordens de compra e demais campos.

Na LD 01.01 desejo mostrar todas as notas fiscais que foram geradas a partir da ordem de compra da LD 01. Fiz a consulta SQL, funciona direitinho quando executo Via SQL, porém, não estou sabendo como linkar esta SQL para mostrar somente as notas da ordem de compra da LD 01 (IDMOVORIGEM). Estou tentando usar a passagem de parâmetro na cláusula where usando : e não estou conseguindo. Em outros relatórios usando campos da base misturado com SQL já consegui isso, porém, nesse que possui só SQL, não consigo fazer esse link.

Qual seria o detalhe faltante?

Obrigado.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Pode ser a estrutura do relatório.

Existem 3 opções, exemplo:

WHERE IDMOV=:IDMOVORIGEM

WHERE IDMOV=:P_IDMOVORIGEM

WHERE IDMOV=:NOMEDOCAMPO (provavelmente é IDMOVORIGEM1, está em Desenho>Nome nas propriedades do campo )

Cada uma é usada de acordo com a estrutura do relatório. Já apanhei muito pra isso tb, o negócio é ir testando pra ver qual se encaixa.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Fiz desta forma:

na SQL apresentada na LD 01, acrescentei o campo tmov.idmov as IDMOVORIGEM (que refere-se ao ID da ordem de compra). Na sequencia de campos é o campo SQL#14.

O problema está na SQL da LD 01.01. Quando refiro-me a este campo, ou seja Where ... and tmovrelac.IDMOVORIGEM = :IDMOVORIGEM ao gerar o relatório o sistema apresenta mensagem: Parâmetro IDMOVORIGEM da consulta SQL "xxxx" não foi encontrado. No caso xxxx é a minha SQL da LD 01.01.

OBS:

Não entendi quando você escreveu:

"está em Desenho>Nome nas propriedades do campo )"

Como todos os campos do relatório são sentença SQL, o nome que aparece nas propriedades é o nome dado à senteça SQL.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Ah tá, achei que era no Reports. No gerador .NET que tem essas propriedades...

No seu caso vc usa WHERE tmovrelac.IDMOVORIGEM = :SQL#14.

Se não der certo, tenta colocar o 'P_' antes do sql.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Farei o teste hoje à tarde mas inicialmente já havia testado WHERE tmovrelac.IDMOVORIGEM = :SQL#14 e o sistema apresentava a mensagem de erro: Parâmetro SQL#14 da consulta SQL "xxxx" não foi encontrado. No caso xxxx é a minha SQL da LD 01.01.

Tentarei usar :P_SQL#14. Lembrando que este campo SQL#14 pertence à LD 01, por isso o erro relatado acima.

De qualquer forma agradeço muito sua atenção.

Abraços,

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Ah, outra coisa que você pode tentar é criar um espelho na LD01.01, espelhar o campo SQL#14 e use o espelho na consulta:

Exemplo:

WHERE tmovrelac.IDMOVORIGEM = :ESPELHO#1

Acho que assim funcionará!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Isso mesmo, estava dando uma olhada aqui no fórum e encontrei este recurso também, farei o teste.

O único problema, já pensando em uma conversão futura para RM Report (.NET), parece-me que este recurso espelho não mais é utilizado, é isso mesmo?

Falando sobre a sugestão anterior, também encontrei aqui no fórum explicação para uso do parâmetro iniciado por :P_.

O uso desse recurso significa que havendo mais de uma LD, a sentença SQL utilizada na LD 01.01 será gerada a partir de informação constante na LD01, no caso em questão, :P_SQL#14 é o tmov.idmov as IDMOVORIGEM que foi selecionado na Sentença SQL que está na LD01.

Farei o teste à tarde e posto aqui.

Valeu demais.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

É, no Gerador .NET não tem esse recurso, é feito daquele jeito que te mandei no primeiro exemplo.

Recomendo começar a utilizar o .NET, é bem melhor! E já elimina você ter que converter tudo depois, vai ter que ser na mão, o conversor é uma bosta...

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Sobre o relatório, funcionou utilizando o recurso ESPELHO. O recurso :P_..., não funcionou. Ocorre aquela mensagem que P_SQL#14 da consulta SQL xxxx não foi encontrado.

Sobre o novo gerador, comecei dar uma estudada.

Como você tem adotado, melhor confeccionar relatórios com campos da base ou via sentença SQL ?

Outra coisa, para familiarizar com o ambiente, assisti aqueles 6 vídeos disponibilizados pela TOTVS. Você conseguiu mais algum material, fez curso ou foi na raça mesmo?

Obrigado.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Eu só faço em SQL! Uso campos da base quando o relatório for impresso na tela de visão, tipo uma CP. Ai coloco só o IDMOV da base de dados pra ficar como master na LD. Fora isso, tudo em SQL.

Eu assisti esses 6 videos muitas vezes, tirei bastante dúvidas aqui no forum, mas o bruto foi na raça mesmo! É testando tudo quanto é coisa. Tem horas que me surpreendo com esse Gerador .NET, ele é muito útil e da pra fazer muita coisa legal nele... Eu aprendi mesmo depois de resolver converter 70% dos relatórios aqui para .NET. Ai fui primeiro nos mais simples, e fui pegando o jeito.

Não adianta, tem que quebrar a cabeça mesmo. Qualquer dúvida lá pode perguntar, se eu souber te ajudo!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Valeu brother, vou proceder desta forma, tentar começar a converter meus relatórios bem antes de converter a base para 11.8x. Tem algumas dicas que já colhi aqui no Fórum e dei uma consolidada para quando precisar ter à mão.

No mais, muito obrigado pelas dicas.

Saudações celestes!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Quando você disse:

"Uso campos da base quando o relatório for impresso na tela de visão, tipo uma CP. Ai coloco só o IDMOV da base de dados pra ficar como master na LD. Fora isso, tudo em SQL."

Não consegui entende, O que seria um relatório tipo CP ?

"Você disse que coloca o IDMOV da base de dados", seria por exemplo, colocar na LD a tabela TMOV, o campo que é chave primária da tabela (IDMOV) . E nesse caso seria util para utilizá-lo no parâmetro da SQL, ex: where idmov = :IDMOV ?

Obs: Já estou tomando coro, rsrsrs.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

hahaha! Isso mesmo, tomando que se aprende!

O que eu quis dizer foi relatórios onde voce imprime na visão, ex: Entra no movimento de compras, selecione um movimento e vai em imprimir documentos. Ai voce seleciona um relatório e imprime. CP seria Contas a Pagar.

Ai, nesses casos, coloco primeiro a TMOV no relatório e coloco o IDMOV na LD, invisível. Ai voce usa assim mesmo, where idmov = :IDMOV. Mas a tabela Movimentos tem que estar como tabela da LD, nas propriedades da LD, campo Dados>Tabela. Com isso, o relatório pode ser impresso na visão selecionando algum movimento.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Estou fazendo um teste aqui, em uma máquina de 4GB de memória, base de testes convertida para não usar o license server, acessando a nova MDI na versão da biblioteca 11.52.50.129, e tá osso. Demora um pouco para disponibilizar as opções de relatório. Demora para abrir. Achei bastaaaante lento.

Vou fazer teste na empresa que trabalho hoje à tarde, em ambiente acessando o license server. Lá, estamos com versão 11.52.58 e converteremos para 11.52.60. Vamos ver a perfórmance.

Como você avalia a perfórmance aí no seu ambiente?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

É mais lento mesmo, mas ainda não usamos a nova MDI, só para testes. Pelos aplicativos da pra trabalhar tranquilo aqui com o gerador... inclusive tenho local na minha máquina!

Mas se eu começar a trabalhar na minha máquina com a nova MDI fica lento mesmo, 4GB tb...

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  67
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  269
  • Conteúdo/Dia:  0.05
  • Reputação:   9
  • Pontos/Conquistas:  2.029
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Dispositivo:  Windows

Fazendo o teste aqui na empresa no ambiente de trabalho com license server, minha máquina com 4GB, até que a perfórmance está boa.

Só uma curiosidade:

Você já está convertendo os seus relatórios para quando for converter definitivamente para a 11.8x ou os usuários já estão utilizando os relatórios convertidos, utilizando a antiga MDI?

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

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

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.