Forum Pplware
Access 2007 - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Access 2007 (/showthread.php?tid=12056)

Páginas: 1 2 3


RE: Access 2007 - progster - 25-07-2012 13:50

Apresenta o código.


RE: Access 2007 - Dnaboy - 25-07-2012 15:21

Não estou a fazer por código, estou a usar o construtor de consultas..
resumindo é assim:
tenho 1 cadeira 15 alunos 1 professor. Tinha esta consulta a dar a lista de formandos por cadeira. Aparecem os 15 sem problemas.
Quis passar a mostrar o nome do professor, então adicionei a tabela do professor à consulta e o campo professor.nome para o nome aparecer. Se tiver apenas 1 professor associado à cadeira, tudo ok, aparece tudo certo. O problema é se tiver 2 ou mais professores.. A lista aparece com os alunos duplicados, 1 vez por cada professor. É isto que quero tentar resolver


RE: Access 2007 - nioxys - 25-07-2012 16:18

Olá Smile

Clica com o botão direito do rato no separador da consulta e depois em Vista de SQL, desta forma consegues ver a consulta no "formato" SQL.

Depois para resolveres o teu problema acho que basta adicionares a opção GROUP BY

Podes ver aqui um exemplo da utilização desta opção.


RE: Access 2007 - progster - 25-07-2012 16:38

Penso que o @nioxys já respondeu à tua questão, em todo o caso para se ter a certeza mostra o código para ver se é mesmo isso que falta.


RE: Access 2007 - Dnaboy - 25-07-2012 16:41

Ora bem, se eu meter o group by nos critérios, não dá?
Se for pelo SQL, aquilo tem o SELECT -- FROM -- WHERE, meto o GROUP BY antes ou depois do WHERE?


RE: Access 2007 - progster - 25-07-2012 16:43

Mostra o código.


RE: Access 2007 - Dnaboy - 25-07-2012 16:47

(25-07-2012 16:38)Progster Escreveu:  Penso que o @nioxys já respondeu à tua questão, em todo o caso para se ter a certeza mostra o código para ver se é mesmo isso que falta.

O código é um pouco mais complicado que isso, tem mais campos associados para além desses, se calhar o problema pode ser pelo SELECT FROM estar mal construído.
Mas tb acho que o problema pode ser por afinal não ser uma consulta de referência cruzada, mas sim consulta de seleccionar. Já não me lembro se o group by dá neste tipo de consulta. Se calhar nem dá para fazer aquilo que quero.


RE: Access 2007 - progster - 25-07-2012 16:51

(25-07-2012 16:47)Dnaboy Escreveu:  O código é um pouco mais complicado que isso, tem mais campos associados para além desses, se calhar o problema pode ser pelo SELECT FROM estar mal construído.

Big Grin...
Tu é que pediste ajuda.


RE: Access 2007 - Dnaboy - 25-07-2012 16:53

Citar:SELECT DISTINCTROW Cadeira.Codigo_da_Cadeira, Cadeira.Designacao_da_disciplina, [Local de Realizacao].[Local de realizacao], [Localidade de realização das Cadeiras].nome_local, Cadeira.Data_de_Inicio, Cadeira.Data_de_Fim, Aluno.nome, [Escola].nome, Categoria.descricao, Cadeira_aluno.Aluno, Cadeira_aluno.Cadeira, Cadeira_aluno.situacao_inscricao, Pagamento.situacao, [Natureza Vinculativa].tipo, Cadeira.Duracao_da_Cadeira, [Cadeira-Professor].professor, Professor.Nome
FROM Pagamento INNER JOIN ([Natureza Vinculativa] INNER JOIN ([Localidade de realização das Cadeiras] INNER JOIN ([Local de Realizacao] INNER JOIN (Aluno INNER JOIN (Professor INNER JOIN ([Escola] INNER JOIN ((Cadeira INNER JOIN (Categoria INNER JOIN Cadeira_aluno ON Categoria.ID_categoria = Cadeira_aluno.categoria) ON Cadeira.ID_Cadeira = Cadeira_aluno.Cadeira) INNER JOIN [Cadeira-Professor] ON Cadeira.ID_Cadeira = [Cadeira-Professor].Cadeira) ON [Escola].ID_Dep = Cadeira_aluno.Entidade_Departamento) ON Professor.codigo = [Cadeira-Professor].professor) ON Aluno.codigo = Cadeira_aluno.Aluno) ON [Local de Realizacao].ID_local = Cadeira.Local_de_realizacao) ON [Localidade de realização das Cadeiras].ID_localidade_de_realiz = Cadeira.localidade) ON [Natureza Vinculativa].ID_naturezavinculativa = Cadeira_aluno.vinculo) ON Pagamento.ID_pagamento = Cadeira_aluno.situacao_pagamento
WHERE (((Cadeira.Codigo_da_Cadeira)=[Formulários]![Inscricao-Cadeira]![Codigo_da_Cadeira]) AND ((Cadeira_aluno.situacao_inscricao)=3));

Eu disse que era meio confuso em sql Big Grin


RE: Access 2007 - progster - 25-07-2012 17:22

Ok. A consulta está um pouco confusa, ajudava ter a BD para fazer testes, ou então o modelo entidade relação.

Se assim como está te retorna a informação que queres, desde que tenha só um professor associado à cadeira, então experimenta adicionar algo deste género

Código:
GROUP By Professor.ID,Professor.Nome;

EDIT: A seguir ao WHERE.

EDIT1:Recomendo que faças uma cópia desse código para um .doc à parte, pois vale mais prevenir do que remediar.