Fórum Relacionamento de muitos para muitos #226989
19/04/2004
0
Por exemplo: Tenho uma tabela alunos, outra cursos e outra alucur. Um aluno pode ter feitos varios cursos e um curso pode ter sido feito por varios alunos. Assim criei tres tabelas: alunos, cursos, alucur. Porem não consigo fazer o relacionamento direito. O formulario mostra o nome do aluno e apenas um curso (o primeiro) no dbgrid para os cursos. O dbgrid para alucur (esse eu não vou mostrar no form) eu consigo fazer corretamente, porem no dbgrid para cursos mostra apenas o curso em que o cursor está posicionado no dbgrid para alucur. Se alguem puder me dar alguma luz sobre isso, eu agradeço.
Radax
Curtir tópico
+ 0Posts
19/04/2004
Andremuller
Não ficou muito claro: pelo que entendi tu quer clicar no grid de alunos e mostrar todos os cursos do aluno e depois clicar nos cursos e mostrar todos os alunos que fazer o curso. É isso?
Qual o tipo de conexção que tu está usando?
Gostei + 0
19/04/2004
Radax
Gostei + 0
19/04/2004
Radax
Gostei + 0
19/04/2004
Glecio
Cara teu problema não é díficil de resolver. O que você tem q fazer é filtrar os dados q voce quer. Por exemplo:
Se você está pesquisando os cursos que JOSÉ já se matriculou, você filtra a tabela ALUCUR, que será mostrada também, pelo codigo de JOSÉ que é o registro q deve estar selecionado na tabela de ALUNOS. Acredito q terá q criar um campo lookup na sua table ALUCUR com o nome do curso.
TABELA ALUNOS
-> TABELA ALUCUR
TABELA CURSOS
se tiver usando query não precisará criar um campo lookup, e a filtragem dos dados é mais simples, tendo em vista a utilização de instrunções SQL.
O ponto chave para resolver seu problema é vc aprender como filtrar registros...
fui...
Gostei + 0
19/04/2004
Aroldo Zanela
A sua modelagem está correta, ou seja, se você possui um relacionamento N pra N, deve-se criar uma entidade associativa como você fez.
Acho que já temos os detalhes necessários em termos de requisitos, mas se você puder, adicione a estrutura das três tabelas para que possamos elaborar um exemplo mais pragmático.
Gostei + 0
19/04/2004
Tarcisiojr
Gostei + 0
26/04/2004
Radax
Desculpem a demora. E obrigado pelas dicas. Eu vou tentar resolver com as dicas que me deram e retorno quando conseguir.
Gostei + 0
26/04/2004
Marco Salles
Gostei + 0
27/04/2004
Radax
Não consegui resolver o problema.
Apesar de ja conhecer programação ha algum tempo, só agora comecei a usar um ambiente RAD. E estou encontrando algumas dificuldades.
Estou usando agora uma ADOQuery em lugar da ADOTable. Isto para mostrar a DBGridCursos. A DBGridALUCUR esta correta. De saida ela (DBGridCursos) me mostra todos os registro da tabela cursos. Na propriedade SQL já tentei usar uma instrução SQL assim:
select * from Cursos where DBGridALUCUR.Columns[1] = Cursos.CodCur
Alem de não ter dado certo, não vai resolver meu problema pois o resultado seria igual a se eu estivesse usando a ADOTable.
Percebo que terei que usar uma parte programada neste caso. O problema é que eu não estou sabendo ir para a parte que posso usar codigo. E tambem estou tendo dificuldades em usar o nome dos campos. No select do exemplo acima o erro deve estar no nome dos campos e eu não consegui encontrar o nome correto.
A estrutura das tabelas é a seguinte:
ALUNOS = CODALU, NOME, NASCIMENTO
ALUCUR = CODALU, CODCUR
CURSOS = CODCUR, NOME, CARGA HORARIA
Gostei + 0
28/04/2004
Radax
Gostei + 0
28/04/2004
Pabhen
faça o seguinte na instrução sql faça assim:
select * from Cursos where CodCur = :CodCur
e ligue a propriedade DataSOurce dessa query ao datasource da query ALUCUR, se naum tiver esse datasource, crie um e ligue a propriedade dataset dele ao da query ALUCUR.
ps. O :(dois pontos) do CodCur siginifica q ele é um parametro e o valor dele vem da query ALUCUR(codcur) q vc amarrou com a query CURSO atraves do datasource.
espero ter ajudado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)