AJUDA COM SELECT
Bo o caminho esta correto, apenas a colocação que não estamos encontrando
mas o jeito é testar, então analizando vi outra possibilidade
por favor tente mais uma vez agora
mas o jeito é testar, então analizando vi outra possibilidade
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr And a.codempr IS NOT NULL order by e.codempr} AS Command1 APPEND ({ SELECT count(A.matricula) as Total,a.chapa,a.matricula,a.nomeassociado, a.codempr, a.dtInscricao, a.bairroAssociado , a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado FROM tbassociados a Where a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Matricula ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2
por favor tente mais uma vez agora
Marcelo-Treze obrigado pelo retorno, o meu código ficou assim:
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr And a.codempr IS NOT NULL order by e.codempr} AS Command1 APPEND ({ SELECT count(A.matricula) as Total,a.chapa,a.matricula,a.nomeassociado, a.codempr, a.dtInscricao, a.bairroAssociado , a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado FROM tbassociados a Where a.codAssociado <> 0 and a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Chapa ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2
Más seu a mensagem
Sem suporte para a expressão de associação
Posso estar enganado, más esse comando que estamos tentado fazer, ele pega os dados do banco que não estão nulos não é isso?
Pensei nisso agora de manhã, onde a gente pode estar batendo
Más o que eu preciso é que no resultado não saiam as empresas que através do filtro, deixem de ter associados selecionados, pois no meu banco, todas as empresas tem associados vinculados, nem que seja 1, e com isso todas as empresas entram na seleção e por isso que elas devem estar saindo em branco.
Por exemplo tem uma empresa a Gyotoku e ela tem 236 associados, só que quando eu seleciono, associados demitidos ela não tem nenhum, então no relatório ela não poderia ser impressa, é isso
Existem associados para todas as empresas porém dependendo da seleção que fazemos, as empresas não tem associados que se enquadram no filtro
Por isso que pensei em um contador e tentar que ele exiba somente as empresas que através do filtro tenha mais que 1 associado.
Será que meu pensamento está errado quanto a esse comando?
Se tiver eu retiro tudo o que disse
Abraço
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr And a.codempr IS NOT NULL order by e.codempr} AS Command1 APPEND ({ SELECT count(A.matricula) as Total,a.chapa,a.matricula,a.nomeassociado, a.codempr, a.dtInscricao, a.bairroAssociado , a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado FROM tbassociados a Where a.codAssociado <> 0 and a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Chapa ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2
Más seu a mensagem
Sem suporte para a expressão de associação
Posso estar enganado, más esse comando que estamos tentado fazer, ele pega os dados do banco que não estão nulos não é isso?
Pensei nisso agora de manhã, onde a gente pode estar batendo
Más o que eu preciso é que no resultado não saiam as empresas que através do filtro, deixem de ter associados selecionados, pois no meu banco, todas as empresas tem associados vinculados, nem que seja 1, e com isso todas as empresas entram na seleção e por isso que elas devem estar saindo em branco.
Por exemplo tem uma empresa a Gyotoku e ela tem 236 associados, só que quando eu seleciono, associados demitidos ela não tem nenhum, então no relatório ela não poderia ser impressa, é isso
Existem associados para todas as empresas porém dependendo da seleção que fazemos, as empresas não tem associados que se enquadram no filtro
Por isso que pensei em um contador e tentar que ele exiba somente as empresas que através do filtro tenha mais que 1 associado.
Será que meu pensamento está errado quanto a esse comando?
Se tiver eu retiro tudo o que disse
Abraço
Pessoal alguém pode me ajudar nesse pepino
ALVAROVB2009, boa tarde.
Deixa eu fazer umas perguntas.
Há possibilidades de um assossiado esteja em mais de uma empresa???
A amarração que você esta fazendo é tipo chave estrangeira, ou seja, a tabela esta normalizada nas quatro fases de normalização, sendo que esta amarração é feita via código do assossiado??
Se sim este campo é de que tipo, numérico??
Estive pensando em uma forma de te ajudar e acho que pode dar certo.
Deixa eu fazer umas perguntas.
Há possibilidades de um assossiado esteja em mais de uma empresa???
A amarração que você esta fazendo é tipo chave estrangeira, ou seja, a tabela esta normalizada nas quatro fases de normalização, sendo que esta amarração é feita via código do assossiado??
Se sim este campo é de que tipo, numérico??
Estive pensando em uma forma de te ajudar e acho que pode dar certo.
DANIKULL obrigado pelo retorno
Vamos as respostas
Há possibilidades de um assossiado esteja em mais de uma empresa???
Não
A amarração que você esta fazendo é tipo chave estrangeira, ou seja, a tabela esta normalizada nas quatro fases de normalização, sendo que esta amarração é feita via código do assossiado??
Sim, na tabela tbempresas tem o campo codempr que é chave e na tbassociados tem o campo codempr como chaveestrangeira e o codassociado como chave primária
Se sim este campo é de que tipo, numérico??
Sim
Detalhe, estou rodando esse relatório do datareport
Se tiver mais perguntas pode fazer
Vamos as respostas
Há possibilidades de um assossiado esteja em mais de uma empresa???
Não
A amarração que você esta fazendo é tipo chave estrangeira, ou seja, a tabela esta normalizada nas quatro fases de normalização, sendo que esta amarração é feita via código do assossiado??
Sim, na tabela tbempresas tem o campo codempr que é chave e na tbassociados tem o campo codempr como chaveestrangeira e o codassociado como chave primária
Se sim este campo é de que tipo, numérico??
Sim
Detalhe, estou rodando esse relatório do datareport
Se tiver mais perguntas pode fazer
ALVAROVB2009,
Então se não me engano a solução é a seguinte.
Faça uma consula seleção pegando somente os registros onde o campo codempr seja diferente de null, ou zero. Desta forma você vai eliminar as empressas sem associados. Nesta mesam cosulta voce devera usar a expressão INNER JOINN que pegará na tabela de associados somente registros encontrados na tabela empressas.
Se você nao conseguir montar a consulta me avise, pq agora nao estou em casa, ok??
Então se não me engano a solução é a seguinte.
Faça uma consula seleção pegando somente os registros onde o campo codempr seja diferente de null, ou zero. Desta forma você vai eliminar as empressas sem associados. Nesta mesam cosulta voce devera usar a expressão INNER JOINN que pegará na tabela de associados somente registros encontrados na tabela empressas.
Se você nao conseguir montar a consulta me avise, pq agora nao estou em casa, ok??
Um exemplo seria a seguinte:
SELECT campos FROM empresas C INNER JOIN associados V ON C.[campo_relacionado] = V.[campo_relacionado] WHERE [campo_relacionado] <> null;
Se não me engano a sequencia da consulta é esta, ok???
testa ai e depois vc reporta...
SELECT campos FROM empresas C INNER JOIN associados V ON C.[campo_relacionado] = V.[campo_relacionado] WHERE [campo_relacionado] <> null;
Se não me engano a sequencia da consulta é esta, ok???
testa ai e depois vc reporta...
DANIKULL obrigado pelo retorno, segunda feira irei testar sim e darei a resposta
Valeu
Valeu
Alvaro,
Desculpa ser chato mas eu criei aqui em casa no SQL Server um modelo igual ao seu e com o select que te enviei funcionou 100%. Tenta, pelo menos !!!!
Com relação ao REPORT, ajusta ele para que a coluna de quebra seja CODEMPR e fica tudo impresso como você quer.
Abraços
SELECT
e.codempr,
e.nomeempr,
a.chapa,
a.matricula,
a.nomeassociado,
a.dtInscricao,
a.bairroAssociado,
a.endAssociado,
a.estadoAssociado,
a.cidadeAssociado,
a.telAssociado
FROM tbempresas e
INNER JOIN tbassociados a
ON e.codempr = a.codempr
WHERE a.demAssociado <> [ô]__/__/____[ô]
AND a.dtInscricao >= #01/01/1900#
AND a.dtInscricao <= #12/31/9999#
GROUP BY e.codempr, e.nomeempr, a.chapa, a.matricula, a.nomeassociado,
a.nomeassociado, a.dtInscricao, a.dtInscricao, a.bairroAssociado,
a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado
ORDER BY e.codempr, a.chapa, a.matricula
Desculpa ser chato mas eu criei aqui em casa no SQL Server um modelo igual ao seu e com o select que te enviei funcionou 100%. Tenta, pelo menos !!!!
Com relação ao REPORT, ajusta ele para que a coluna de quebra seja CODEMPR e fica tudo impresso como você quer.
Abraços
SELECT
e.codempr,
e.nomeempr,
a.chapa,
a.matricula,
a.nomeassociado,
a.dtInscricao,
a.bairroAssociado,
a.endAssociado,
a.estadoAssociado,
a.cidadeAssociado,
a.telAssociado
FROM tbempresas e
INNER JOIN tbassociados a
ON e.codempr = a.codempr
WHERE a.demAssociado <> [ô]__/__/____[ô]
AND a.dtInscricao >= #01/01/1900#
AND a.dtInscricao <= #12/31/9999#
GROUP BY e.codempr, e.nomeempr, a.chapa, a.matricula, a.nomeassociado,
a.nomeassociado, a.dtInscricao, a.dtInscricao, a.bairroAssociado,
a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado
ORDER BY e.codempr, a.chapa, a.matricula
DANIKULL e RCMRO obrigado pelo retorno, eu vi hoje segunda as respostas de voces e as testei:
RCMRO infelizmente seu comando não funcionou pois continuou exibindo as empresas que no filtro deixaram de ter associados selecionados
DANIKULL também infelizmente não deu certo, o último comando testado foi esse:
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr order by e.codempr} AS Command1 APPEND ({ SELECT count(A.matricula) as Total,a.chapa,a.matricula,a.nomeassociado, a.codempr, a.dtInscricao, a.bairroAssociado , a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado FROM tbassociados a Where a.demAssociado <> [ô]__/__/____[ô] and a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# and a.matricula is not null group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Matricula ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2
Quanto ao Inner Join que você comentou é substituida pelo RELATE que é onde acontece a relação entre as tabelas no datareport
RCMRO infelizmente seu comando não funcionou pois continuou exibindo as empresas que no filtro deixaram de ter associados selecionados
DANIKULL também infelizmente não deu certo, o último comando testado foi esse:
SHAPE { SELECT DISTINCT e.codempr,e.nomeempr FROM tbempresas e INNER JOIN tbassociados a ON e.codempr = a.codempr order by e.codempr} AS Command1 APPEND ({ SELECT count(A.matricula) as Total,a.chapa,a.matricula,a.nomeassociado, a.codempr, a.dtInscricao, a.bairroAssociado , a.endAssociado, a.estadoAssociado, a.cidadeAssociado, a.telAssociado FROM tbassociados a Where a.demAssociado <> [ô]__/__/____[ô] and a.dtInscricao >=#01/01/1900# and a.dtInscricao <=#12/31/9999# and a.matricula is not null group by chapa, matricula, nomeassociado, codempr, dtInscricao,bairroAssociado, endAssociado, estadoAssociado, cidadeAssociado, telAssociado order by a.Matricula ASC } AS Command2 RELATE [ô]codempr[ô] TO [ô]codempr[ô]) AS Command2
Quanto ao Inner Join que você comentou é substituida pelo RELATE que é onde acontece a relação entre as tabelas no datareport
Tópico encerrado , respostas não são mais permitidas