Relatorio QuickReport
Olá amigos delphianos....
Estou precisando de criar um relatorio de espelho de ponto eletronico, porem estou sem saber como vou fazer.
Tenho 6 tabelas com as seguintes estruturas:
FUNCIONARIO
ID_FUNC integer NOT NULL (chave primaria)
NOME
...
CARGAHORARIA
ID_CARGAHORARIA INTEGER NOT NULL,
CODIGO
TIPO
ENTRADA
ALMOCO
RETORNO
SAIDA
HRDIARIA
HRSEMANAL
HORAEXTRA
DOM
SEG
TER
QUA
QUI
SEX
SAB
PRESENCA
ID_FUNC integer NOT NULL +
DATA date NOT NULL (chave primaria)
DATA
HR_ENTRADA
HR_ALMOCO
HR_RETORNO
HR_SAIDA
FALTAS
CODIGO integer NOT NULL (chave primaria)
ID_FUNC integer NOT NULL (chave secundaria)
DATAINICIAL
DATAFINAL
MOTIVO
OCORRENCIAS
CODIGO integer NOT NULL (chave primaria)
ID_FUNC integer NOT NULL (chave secundaria)
DATA
DESCRICAO
FERIADO
CODIGO integer NOT NULL (chave primaria)
DATA
DESCRICAOFERIADO
Bom agora vem o grande lance.... preciso fazer um relacionamento entre todas essas tabelas para gerar um relatorio basicamente assim..
DATA
DIA SEMANA
ENTRADA
ALMOCO
RETORNO
SAIDA
HR TRABALHADAS
HR FALTAS
HR EXTRA
05/02/2010
SEXTA-FEIRA
08:00:0012:30:0014:00:0019:00:0007:30:00
00:30:00
01:00:00
06/02/2010
SABADO
08:00:00
12:00:00
14:00:00
18:00:00
08:00:00
00:00:00
00:00:00
07/02/2010
DOMINGO
-----------
-----------
-----------
-----------
00:00:00
00:00:00
00:00:00
08/02/2010
FERIADO
--------------------------------------------00:00:0000:00:0000:00:00
Como fazer isso caso o usuario selecione o periodo 01/02/2010 a 28/02/2010, deve listar todos os dias desse periodo e na coluna DATA do relatorio deve listar todos os dias do periodo selecionado, na coluna DIA SEMANA deve listar se qual dia da semana é aquela DATA, se for dia util e se na tabela de cargahoraria estiver marcado como dia que trabalha e nao for feriado (isso deve ser comparado nas tabelas de cargahoraria e na tabela feriado) preenche as colunas ENTRADA, ALMOCO, RETORNO e SAIDA e calcula as demais horas (isso ja esta funcionando).
Espero que deu para todos entenderem e possam me ajudar o mais rapido possivel.
Desde ja agradeço,
Iramar
ADS
Estou precisando de criar um relatorio de espelho de ponto eletronico, porem estou sem saber como vou fazer.
Tenho 6 tabelas com as seguintes estruturas:
FUNCIONARIO
ID_FUNC integer NOT NULL (chave primaria)
NOME
...
CARGAHORARIA
ID_CARGAHORARIA INTEGER NOT NULL,
CODIGO
TIPO
ENTRADA
ALMOCO
RETORNO
SAIDA
HRDIARIA
HRSEMANAL
HORAEXTRA
DOM
SEG
TER
QUA
QUI
SEX
SAB
PRESENCA
ID_FUNC integer NOT NULL +
DATA date NOT NULL (chave primaria)
DATA
HR_ENTRADA
HR_ALMOCO
HR_RETORNO
HR_SAIDA
FALTAS
CODIGO integer NOT NULL (chave primaria)
ID_FUNC integer NOT NULL (chave secundaria)
DATAINICIAL
DATAFINAL
MOTIVO
OCORRENCIAS
CODIGO integer NOT NULL (chave primaria)
ID_FUNC integer NOT NULL (chave secundaria)
DATA
DESCRICAO
FERIADO
CODIGO integer NOT NULL (chave primaria)
DATA
DESCRICAOFERIADO
Bom agora vem o grande lance.... preciso fazer um relacionamento entre todas essas tabelas para gerar um relatorio basicamente assim..
DATA
DIA SEMANA
ENTRADA
ALMOCO
RETORNO
SAIDA
HR TRABALHADAS
HR FALTAS
HR EXTRA
05/02/2010
SEXTA-FEIRA
08:00:0012:30:0014:00:0019:00:0007:30:00
00:30:00
01:00:00
06/02/2010
SABADO
08:00:00
12:00:00
14:00:00
18:00:00
08:00:00
00:00:00
00:00:00
07/02/2010
DOMINGO
-----------
-----------
-----------
-----------
00:00:00
00:00:00
00:00:00
08/02/2010
FERIADO
--------------------------------------------00:00:0000:00:0000:00:00
Como fazer isso caso o usuario selecione o periodo 01/02/2010 a 28/02/2010, deve listar todos os dias desse periodo e na coluna DATA do relatorio deve listar todos os dias do periodo selecionado, na coluna DIA SEMANA deve listar se qual dia da semana é aquela DATA, se for dia util e se na tabela de cargahoraria estiver marcado como dia que trabalha e nao for feriado (isso deve ser comparado nas tabelas de cargahoraria e na tabela feriado) preenche as colunas ENTRADA, ALMOCO, RETORNO e SAIDA e calcula as demais horas (isso ja esta funcionando).
Espero que deu para todos entenderem e possam me ajudar o mais rapido possivel.
Desde ja agradeço,
Iramar
ADS
Iramar Junior
Curtidas 0
Respostas
Alison Bissoli
06/02/2010
Faça essa consulta utilizando um clientdataset, com os devidos inner joins para pegar o que quizer, no relatório do quick você coloca um qrband e seta para o tipo qrdetail e coloca os campos a serem impressos. Relacione o qrband do tipo detail criado ao seu clientdataset dos resultados da sua pesquisa.
GOSTEI 0
Perivaldo Martins
06/02/2010
Você poderia fazer as junções dos dados, trazendo-os prontos da sua query para o seu relatorio.
Eu particularment, substituiria os campos domingo, segunda, etc... pelo campo dia da semana ou talvez nem o colocasse optando por um campo virtual, mas isso é critério de cada um.
Pesquise sobre INNER
Boa sorte e bons códigos.
GOSTEI 0