Ir para conteúdo
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Sem resultado na expressão if


Alef Menezes

Posts Recomendados


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  41
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Boa Tarde,

 

Estou tentando montar uma expressão para montar um quadro de horário, porém a expressão não retorna valor algum.

O relatório utiliza quatro consultas SQL, porém os dados que preciso estão sendo retornados na consulta.

A situação é a seguinte: preciso montar um quadro de horário onde tenho três informações para me localizar na matriz de horário da semana, sendo eles: TURNO (CODTURNO), DIA DASEMANA (DIA) E CODHORPRE.

O turno pode me retornar os códigos: 1 (manhã), 2 (tarde) e 3 (noite);
O dia pode me retornar os códigos: 1, 2, 3, 4, 5, 6 e 7. (no meu caso só utilizo de 2 a 6)
O CODHORPRE me retorna um horário especifico, nele tenho do 1 ao 21.

Para facilitar a expressão, já que tenho uma combinação de 3 x 6 x 21. Eu criei uma uma quarta coluna na tabela, denominada CODMATRIZHORARIO, que é a concatenação de:

CODTURNO + DIA + CODHORPRE

Essa concatenação me retorna codigos de 3 a 4 digitos no seguinte formato:

Se eu tenho uma aula no turno na MANHÃ, na TERÇA-FEIRA, no QUINTO horário o código seria: 135Se eu tenho uma aula no turno na MANHÃ, na TERÇA-FEIRA, no QUINTO horário o código seria: 135

sainda do banco.png

RELÁTORIO.png

Editado por Alef Menezes
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@Alef Menezes, boa tarde!

 

Entendi seu drama, porém como sua matriz do relatório é fixa, podes tentar utilizar o PIVOT resolver, só tem que criar cuidar que o PIVOT funciona com campos numéricos, ou seja, caso queira tratar que apresente na sua matriz como retorno a disciplina, terás que criar uma lógica utilizando alguma forma de identificação. 

Como exemplo podes acessar o link  https://sqlfromhell.wordpress.com/2013/07/18/transformando-linhas-em-colunas-com-pivot/, caso não consigas, inclua a data do seu result set e nós enviei com o formato de excel que podemos ajudar.

 

abraços.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  41
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

No meu caso não trabalho com matriz, denominei matriz pq visualmente é uma. Todos são campos fixos. Faltou informação na postagem, pq o forum caiu para mim. Alterei agora o texto.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

Sim, não é o componente matriz do gerador... é sim matriz visual igualmente você comentou... mas podes montar a consulta para sair uma matriz visual. 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@Alef Menezes, boa noite!

Segue uma possível solução.

/*

USE MASTER 
GO 

;WITH TAB
AS
(
    SELECT CODCOLIGADA,CODFILIAL,CODPROF,NMDISCIPLINA,DIA,DIASEMANA,CODTURNO,TURNO,HORPREVISAO,CODHORPRE,NMTURMA 
    FROM 
    (VALUES
     (2,9,'001706','LINGUA PORTUGUESA'    ,3,'3ª TERÇA-FEIRA'        ,1,'1° TURNO: MANHA','09:50 - 10:40',5,'7º ANO D')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,3,'3ª TERÇA-FEIRA'        ,1,'1° TURNO: MANHA','10:40 - 11:30',6,'7º ANO D')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,5,'5ª QUINTA-FEIRA'    ,1,'1° TURNO: MANHA','08:40 - 09:30',3,'7º ANO D')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,5,'5ª QUINTA-FEIRA'    ,1,'1° TURNO: MANHA','09:50 - 10:40',5,'7º ANO D')
    ,(2,9,'001706','REDAÇÃO'            ,5,'5ª QUINTA-FEIRA'    ,1,'1° TURNO: MANHA','10:40 - 11:30',6,'6º ANO G')
    ,(2,9,'001706','REDAÇÃO'            ,6,'6ª SEXTA-FEIRA'        ,1,'1° TURNO: MANHA','08:40 - 09:30',3,'6º ANO F')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,6,'6ª SEXTA-FEIRA'        ,1,'1° TURNO: MANHA','10:40 - 11:30',6,'7º ANO D')

    ,(2,9,'001706','LINGUA PORTUGUESA'    ,2,'2ª SEGUNDA-FEIRA'    ,2,'2° TURNO: TARDE','15:50 - 16:40',5,'7º ANO D')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,3,'3ª TERÇA-FEIRA'        ,2,'2° TURNO: TARDE','14:40 - 15:30',3,'7º ANO D')
    ,(2,9,'001706','REDAÇÃO'            ,4,'4ª QUARTA-FEIRA'    ,2,'2° TURNO: TARDE','15:50 - 16:40',5,'6º ANO G')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,5,'5ª QUINTA-FEIRA'    ,2,'2° TURNO: TARDE','14:40 - 15:30',3,'7º ANO D')
    ,(2,9,'001706','REDAÇÃO'            ,6,'6ª SEXTA-FEIRA'        ,2,'2° TURNO: TARDE','14:40 - 15:30',3,'6º ANO F')
    ,(2,9,'001706','LINGUA PORTUGUESA'    ,6,'6ª SEXTA-FEIRA'        ,2,'2° TURNO: TARDE','15:50 - 16:40',5,'7º ANO D')
    ) AS T (CODCOLIGADA,CODFILIAL,CODPROF,NMDISCIPLINA,DIA,DIASEMANA,CODTURNO,TURNO,HORPREVISAO,CODHORPRE,NMTURMA)

--SELECT * FROM TAB
, TAB_HORARIO
AS
(
    SELECT CODCOLIGADA,CODFILIAL,CODHORPRE,HORPREVISAO,CODTURNO,TIPO
    FROM 
    (VALUES 
         (2,9,1,'07:00 - 07:50',1,'N') ,(2,9,1,'13:00 - 13:50',2,'N')
        ,(2,9,2,'07:50 - 08:40',1,'N') ,(2,9,2,'13:50 - 14:40',2,'N')
        ,(2,9,3,'08:40 - 09:30',1,'N') ,(2,9,3,'14:40 - 15:30',2,'N')
        ,(2,9,4,'09:30 - 09:50',1,'I') ,(2,9,4,'15:30 - 15:50',2,'I')
        ,(2,9,5,'09:50 - 10:40',1,'N') ,(2,9,5,'15:50 - 16:40',2,'N')
        ,(2,9,6,'10:40 - 11:30',1,'N') ,(2,9,6,'16:40 - 17:30',2,'N')
        ,(2,9,7,'11:30 - 12:20',1,'N') ,(2,9,7,'17:30 - 18:20',2,'N')
    ) AS T (CODCOLIGADA,CODFILIAL,CODHORPRE,HORPREVISAO,CODTURNO,TIPO)
)
SELECT * 
FROM TAB_HORARIO H 
OUTER APPLY 
(
    SELECT TI.NMDISCIPLINA AS '2ª SEGUNDA-FEIRA'
    FROM TAB TI
    WHERE TI.CODCOLIGADA = H.CODCOLIGADA 
    AND TI.CODFILIAL = H.CODFILIAL
    AND TI.CODTURNO = H.CODTURNO
    AND TI.CODHORPRE = H.CODHORPRE
    AND TI.DIA = 2 
) SEG
OUTER APPLY 
(
    SELECT TI.NMDISCIPLINA AS '3ª TERÇA-FEIRA'
    FROM TAB TI
    WHERE TI.CODCOLIGADA = H.CODCOLIGADA 
    AND TI.CODFILIAL = H.CODFILIAL
    AND TI.CODTURNO = H.CODTURNO
    AND TI.CODHORPRE = H.CODHORPRE
    AND TI.DIA = 3
) TER
OUTER APPLY 
(
    SELECT TI.NMDISCIPLINA AS '4ª QUARTA-FEIRA'
    FROM TAB TI
    WHERE TI.CODCOLIGADA = H.CODCOLIGADA 
    AND TI.CODFILIAL = H.CODFILIAL
    AND TI.CODTURNO = H.CODTURNO
    AND TI.CODHORPRE = H.CODHORPRE
    AND TI.DIA = 4
) QUA
OUTER APPLY 
(
    SELECT TI.NMDISCIPLINA AS '5ª QUINTA-FEIRA'
    FROM TAB TI
    WHERE TI.CODCOLIGADA = H.CODCOLIGADA 
    AND TI.CODFILIAL = H.CODFILIAL
    AND TI.CODTURNO = H.CODTURNO
    AND TI.CODHORPRE = H.CODHORPRE
    AND TI.DIA = 5
) QUI
OUTER APPLY 
(
    SELECT TI.NMDISCIPLINA AS '6ª SEXTA-FEIRA'
    FROM TAB TI
    WHERE TI.CODCOLIGADA = H.CODCOLIGADA 
    AND TI.CODFILIAL = H.CODFILIAL
    AND TI.CODTURNO = H.CODTURNO
    AND TI.CODHORPRE = H.CODHORPRE
    AND TI.DIA = 6
) SEX
OUTER APPLY 
(
    SELECT TI.NMDISCIPLINA AS 'SABADO'
    FROM TAB TI
    WHERE TI.CODCOLIGADA = H.CODCOLIGADA 
    AND TI.CODFILIAL = H.CODFILIAL
    AND TI.CODTURNO = H.CODTURNO
    AND TI.CODHORPRE = H.CODHORPRE
    AND TI.DIA = 7
) SAB
ORDER BY H.CODCOLIGADA, H.CODFILIAL, H.CODTURNO, H.CODHORPRE


/*

 

Result sets 

image.png

Assim nesta consulta, podes colocar a quebra nos campos CODCOLIGADA, CODFILIAL CODTURNO e na questão do intervalo é só colocar um campo texto sobreposto aos campos da consulta e imprimir utilizando regra de formação no campo TIPO.

 

Executando essa matriz visual pela consulta, certamente irá ficar muito rápido.

 

Espero lhe ajudar.

Abraços.

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  884
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.800
  • Conteúdo/Dia:  1.34
  • Reputação:   289
  • Pontos/Conquistas:  106.251
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Online
  • Idade:  51
  • Dispositivo:  Windows

@Alef Menezes Tudo bem? Recebi um alerta que queria apagar o post aqui em questão, pois havia colocado algo errado. Pelo que vi nos demais posts acima, me parece que resolveu, certo ?? Posso manter normalmente? 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  41
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Pode manter sim, vou verificar a solução do colaborador acima e verificar se entendi o que ele quis dizer, pois no caso acima dele forçou turma e disciplina.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  41
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

@luisgustavogomes eu tentei executar sua solução, mas não consegui adapta-la a minha solução. Na questão do Intervalo, ele não precisa aparecer. 

Consegui gerar com PIVOT como você me aconselhou a tabela de horário, porém as linhas "fantasmas" dos horários que o professor não tem aula elas são o desafio. 

 

E a posterior, tenho um segundo problema no período noturno, tenho dois tipos de horarios: aulas de 50 minutos e outras de 1 hora.
só que existe uma equivalência na tabela que terei que tratar, provavelmente criando 2 sql a parte um para cada horário e ao invez de gerar 3 tabelas irei gerar 4, um para cada horário, sem fazer o "de - para" no código noturno.

 

 

Porém no fim disso tudo, se existe-se uma forma de utilizar no RM - SGE expressão, forçando que "Se CODIGO_HORARIO = X ENTÃO NMTURMA", resolveria todos os problemas, atenderia minha usuária e o trabalho só seria realmente formatação de texto e adição das expressões a tabela.

1843773493_ResultSetcomPIVOT.thumb.png.460663853427bb878c751061eb1af6db.png

 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  41
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Vamos por partes:

(1) Em uma expressão IF do RM-SGE é possível comparar um campo "STRING" com uma string fixa '123'?

(2) É possível que o retorno de uma comparação IF do RM seja um retorno de um campo não utilizado na comparação do IF? 

 

Ex: "Se CODIGO_HORARIO = X ENTÃO NMTURMA",

Não devo colocar o SENÂO ' ', pq senão a cada execução de linha ela vai sobrescrever com vazio o resultado nos outros campos.

CODIGO_HORARIO => é uma coluna da minha tabela, ela é STRING e retorna STRING númerica que varia de 121 até 3621 (No total são apenas 120 códigos, pois é uma combinação de (Turno[1,2 ou 3], DiaDaSemana[2, 3, 4,5 ou 6] e horário[ 1 ao 21]).

 X => é um campo FIXO no relatório criado RM que identificada cada campo da matriz de horário. É um campo que deve ser string, porém não se de no IF devo escrever '123' ou 123.

NMTURMA => é uma coluna (pivotada no exemplo acima) porém no SQL original que eu tenho sem pivot, é uma coluna com o nome da turma. É um campo STRING.

 

 

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  470
  • Conteúdo/Dia:  0.21
  • Reputação:   132
  • Pontos/Conquistas:  3.143
  • Conteúdo Resolvido:  0
  • Dias Ganho:  63
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@Alef Menezes, Bom dia. 

 

Vamos por parte já dizia jack!!! 

eu tentei executar sua solução, mas não consegui adapta-la a minha solução. Na questão do Intervalo, ele não precisa aparecer. 

    R. A questão da montagem da lógica para aqueles teste, pode ser aplicado na sua consulta com CTE, porém criei a tabela de horário fixa, juntamente para a matriz, logo, como não trabalho com o educacional, acredito, que tenhamos uma tabela que possamos fazer a mesma lógica.... sobre o intervalo, tranquilo só repliquei seu exemplo do print. Caso precise de uma ajuda é só me achar no skype luisgustavogomes@outlook.com...

 

Consegui gerar com PIVOT como você me aconselhou a tabela de horário, porém as linhas "fantasmas" dos horários que o professor não tem aula elas são o desafio. 

    R. Soma 0 (Zero).

 

E a posterior, tenho um segundo problema no período noturno, tenho dois tipos de horarios: aulas de 50 minutos e outras de 1 hora.
só que existe uma equivalência na tabela que terei que tratar, provavelmente criando 2 sql a parte um para cada horário e ao invez de gerar 3 tabelas irei gerar 4, um para cada horário, sem fazer o "de - para" no código noturno.

    R. Aqui teríamos que ajustar a logica, da consulta.

Porém no fim disso tudo, se existe-se uma forma de utilizar no RM - SGE expressão, forçando que "Se CODIGO_HORARIO = X ENTÃO NMTURMA", resolveria todos os problemas, atenderia minha usuária e o trabalho só seria realmente formatação de texto e adição das expressões a tabela.

 

    R. Se sua consulta já está fazendo o PIVOT com a sua logica de código... só um IF todas as possibilidades para cada dia da semana, porém de já aviso que isso tornará o relatório lento, pois para cada linha... cada campo... o compilador tem que validar..

 

abraços

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  41
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Não entendi muito bem, pois sou iniciante.

 

Vou te chamar no Skype e facilitar para ambos.

 

 

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.