SQL e relatorio Quickreport
01/03/2010
0
Em uma tabela que é a principal tenho alguns campos e dependo de mais 2 tabelas para preencher outros campos.
este é meu sql:
select presenca.id_cod,
presenca.id_func,
presenca.data,
presenca.codigo,
presenca.codigogeracao,
presenca.entrada,
presenca.almoco,
presenca.retorno,
presenca.saida,
presenca.horaextra,
presenca.somadiaria,
presenca.atrasado,
presenca.dt_cadastro,
presenca.hora,
presenca.fechado,
presenca.regmarcacaoentrada,
presenca.regmarcacaoalmoco,
presenca.regmarcacaoretorno,
presenca.regmarcacaosaida,
presenca.regponto,
presenca.regultimo,
presenca.ocorrencia,
cargahoraria.id_cargahoraria,
cargahoraria.entrada as c_entrada,
cargahoraria.almoco as c_almoco,
cargahoraria.retorno as c_retorno,
cargahoraria.saida as c_saida
from funcionario
inner join presenca on (funcionario.id_func = presenca.id_func)
inner join cargahoraria on (funcionario.id_cargahoraria = cargahoraria.id_cargahoraria)
where
(
(presenca.id_func = 1)
and
(presenca.data >= '01/01/2010')
and
(presenca.data <= '01/31/2010')
and
(presenca.fechado = 'S')
)
order by presenca.id_func, presenca.data
Problema é que no relatorio preciso imprimir os campos relacionados: cargahoraria.id_cargahoraria, cargahoraria.entrada, cargahoraria.almoco, cargahoraria.retorno, cargahoraria.saida. Acontece que estes campos nao aparecem de jeito nenhum. Eles deveriam aparecer na tabela presenca, que é a tabela que estou fazendo a juncao atraves dos joins?
Nos QRDBText estou selecionando o dataset cdsPresenca, mas estes campos nao aparecem....
Me ajudem...
Iramar Junior
Posts
01/03/2010
Iramar Junior
select presenca.id_cod,
presenca.id_func,
presenca.data,
presenca.codigo,
presenca.codigogeracao,
presenca.entrada,
presenca.almoco,
presenca.retorno,
presenca.saida,
presenca.horaextra,
presenca.somadiaria,
presenca.atrasado,
presenca.dt_cadastro,
presenca.hora,
presenca.fechado,
presenca.regmarcacaoentrada,
presenca.regmarcacaoalmoco,
presenca.regmarcacaoretorno,
presenca.regmarcacaosaida,
presenca.regponto,
presenca.regultimo,
presenca.ocorrencia,
funcionario.nome,
cargahoraria.id_cargahoraria,
cargahoraria.entrada as c_entrada,
cargahoraria.almoco as c_almoco,
cargahoraria.retorno as c_retorno,
cargahoraria.saida as c_saida
from presenca
inner join funcionario on (funcionario.id_func = presenca.id_func)
inner join cargahoraria on (funcionario.id_cargahoraria = cargahoraria.id_cargahoraria)
where
(
(presenca.id_func = 1)
and
(presenca.data >= '01/01/2010')
and
(presenca.data <= '01/31/2010')
and
(presenca.fechado = 'S')
)
order by presenca.id_func, presenca.data
01/03/2010
Wilson Junior
01/03/2010
Iramar Junior
ID_COD pk
ID_FUNC fk
Tabela funcionario
ID_FUNC pk
ID_CARGAHORARIA fk
Tabela cargahoraria
ID_CARGAHORARIA pk
01/03/2010
Wilson Junior
Outra coisa, suas FK são NOT NULL né? Pois você está fazendo INNER.
Qualquer coisa post aí.
Espero ter colaborado.
01/03/2010
Iramar Junior
with DMPrincipal do
begin
cdspresenca.close;
cdspresenca.params.clear;
qrypresenca.sql.clear;
qrypresenca.sql.add('select p.id_cod, p.id_func, p.data, p.codigo, p.codigogeracao, p.entrada, ');
qrypresenca.sql.add('p.almoco, p.retorno, p.saida, p.horaextra, p.somadiaria, p.atrasado, ');
qrypresenca.sql.add('p.dt_cadastro, p.hora, p.fechado, p.regmarcacaoentrada, p.regmarcacaoalmoco, ');
qrypresenca.sql.add('p.regmarcacaoretorno, p.regmarcacaosaida, p.regponto, p.regultimo, p.ocorrencia, ');
qrypresenca.sql.add('f.nome, ch.id_cargahoraria, ch.entrada as c_entrada, ch.almoco as c_almoco, ');
qrypresenca.sql.add('ch.retorno as c_retorno, ch.saida as c_saida ');
qrypresenca.sql.add('from presenca p ');
qrypresenca.sql.add('inner join funcionario f on (f.id_func = p.id_func) ');
qrypresenca.sql.add('inner join cargahoraria ch on (f.id_cargahoraria = ch.id_cargahoraria) ');
qrypresenca.sql.add('where ((p.id_func = ' + RzEdit.text +') and (p.data >= ' + EvDateEditI.Value + ') ');
qrypresenca.sql.add('and (p.data <= ' + EvDateEditF.Value +') and (p.fechado = 'S') ');
qrypresenca.sql.add('order by p.id_func, p.data');
cdsPresenca.FetchParams;
cdsPresenca.Open;
end;
mas acontece que nao aparece os campos das tabelas ligadas pelo inner join (detalhe da linha em negrito), esta aparecendo somente os campos da tabela presenca p.
Nao deveria aparecer o resultado de todos os campos igual esta aparecendo no ibexpert?
Por esse motivo nao consigo fazer com que imprima no quickreport os campos dessas tabelas ligadas....
Todas as FK sao NOT NULL
01/03/2010
Emerson Nascimento
01/03/2010
Iramar Junior
01/03/2010
Perivaldo Martins
01/03/2010
Emerson Nascimento
1- remover todos os campos persistidos; ou
2- persistir todos os campos que deseja exibir;
Clique aqui para fazer login e interagir na Comunidade :)