Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexsnci

Diário de frequência escolar

Recommended Posts

pessoal sou novato em delphi, estou finalizando um sistema para escola de informática, no entanto estou com dificuldades em criar um diário de frequência escolar, vi um modelo em um programa e achei interessante, gostaria de fazer parecido, vejam a imagem...378260-20141104-011715.jpg

 

então pessoal montar o formulário, usar os botões isso tudo eu consegui fazer, o X da questão é o seguinte:

No banco de dados tenho apenas os campos:

 

NOME (nome do aluno),

TURMA (turma do aluno),

CURSO (curso que o aluno está cursando);

DISCIPLINA (disciplina que o aluno esta estudando);

DATA (data da aula)

ENTRADA (hora da entrada)

SAÍDA (hora da saída);

 

Então o que preciso! , que na tabela conforme a imagem acima, apareça os dias do mês em curso, que ao especificar uma data no campo data conforme imagem acima, na tabela, seja pintado a coluna referente ao dia a que foi escolhido, como exemplo na imagem, o campo DATA está 08/11/2014, na tabela está pintada a coluna correspondente ao dia 08, pessoal não sei nem por onde começar, quem puder me ajudem...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A query para obter dados na forma que você quer pode ser feita usando CASE com MAX ou SUM numa combinação para montar o PIVOT da forma requerida, talvez até algum objeto Delphi faça este PIVOT (Cross Reference)

http://forum.imasters.com.br/topic/515040-listar-quantidade-de-pedidos-por-ms-sem-repetir-cliente/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que estou entendendo...

em seu post pra que o nome dos meses sejam colunas da dbgrid, é necessário que exista uma tabela com os nomes dos mesmos certo?..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que a sugestão que o nosso amigo Motta passou seria fazer um select neste estilo Alex. Fiz o exemplo a partir do SQL Server.

 

 

create table #temp (data_entrada datetime)

insert into #temp values ('2014-10-10 00:00:00')
insert into #temp values ('2014-10-30 00:00:00')
insert into #temp values ('2014-10-15 00:00:00')

select data_entrada, Dia = CASE DAY(data_entrada)
         WHEN 01 THEN '01'
         WHEN 02 THEN '02'
         WHEN 03 THEN '03'
         WHEN 04 THEN '04'
         WHEN 05 THEN '05'
         WHEN 06 THEN '06'
         WHEN 07 THEN '07'
         WHEN 08 THEN '08'
         WHEN 09 THEN '09'
         WHEN 10 THEN '10'
         WHEN 11 THEN '11'
         WHEN 12 THEN '12'
         WHEN 13 THEN '13'
         WHEN 14 THEN '14'
         WHEN 15 THEN '15'
         WHEN 16 THEN '16'
         WHEN 17 THEN '17'
         WHEN 18 THEN '18'
         WHEN 19 THEN '19'
         WHEN 20 THEN '20'
         WHEN 21 THEN '21'
         WHEN 22 THEN '22'      
         WHEN 23 THEN '23'
         WHEN 24 THEN '24'
         WHEN 25 THEN '25'
         WHEN 26 THEN '26'
         WHEN 27 THEN '27'
         WHEN 28 THEN '28'
         WHEN 29 THEN '29'
         WHEN 30 THEN '30'
         WHEN 31 THEN '31'
        END
from #temp      
order by 1

 

Mas ainda assim irá precisar fazer um tratamento em código para definir quando será marcado ou não no grid a presença.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim , seria +ou- pelo sql do Chrnos ,


select  nome,
        max(case day(data) = 01
              then (case entrada is null then ' ' else 'x' end)
              else ' ' end) "01" ,
         max(case day(data) = 02
              then (case entrada is null then ' ' else 'x' end)
              else ' ' end) "02" ,   
         ...
where year(data) = '2014' and month(data) = '11'
group by nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.