Como fazer ligações do dm em relacionamento n/n?

Delphi

31/05/2011

Olá, estou com uma dúvida em relação a ligações do datamodule  em relacionamentos n/n e gravação de campos dbloockupcombobox.
Primeiramente tenho as seguintes tabelas em um banco mysql
MEDICO
ESPECIALIDADE
LOCAL_ATENDIMENTO
(tabela do relacionamento n/n de medico-local_atendimento)MEDICO_ATENDE { ID_MEDICOID_LOCAL_ATENDIMENTO}
Para o relacionamento medico-especialidade criei um master-detail e coloquei um dbloockupcombobox no formulario de médico apontando para tabela especialidade, ele lista os campos tudo ok, porém quando dou o applyupdates da um erro de Key Violation. pq será?
O outro problema é que não sei como faço a ligação de medico com local_atendimento através do relacionamento n/n. Tem que criar no datamodule tbm? se tiver como faço isso?Resumindo vou precisar selecionar os locais que o medico atende no formulário de médico através de um combo.

Estrura: dbexpress / delphi 2010 / Mysql
Conexão>sdsMedico>dspMedico>cdsMedico

Junior

Junior

Curtidas 0

Respostas

Wilton Júnior

Wilton Júnior

31/05/2011

Olha companheiro, verifica se vc nao colocou ID_MEDICO esta como chave primaria se estiver vai sermpre dar key viloation duplicacao de chave primaria
GOSTEI 0
Wilton Júnior

Wilton Júnior

31/05/2011

Olha companheiro, verifica se vc nao colocou ID_MEDICO esta como chave primaria se estiver vai sermpre dar key viloation duplicacao de chave primaria
GOSTEI 0
Junior

Junior

31/05/2011

Descobri o que era, na verdade não precisa de um master/detail no form de médico, da maneira que estava ele tentava gravar uma nova especialidade na tabela com o mesmo id, por isso key violation, como eu só queria listar as especialidades e gravar o id da esp. na tabela de médico foi só retirar o master detail..
Mas ainda não sei como fazer o relacionamento muitos para muitos de medico - local_atendimento....
GOSTEI 0
Nigro

Nigro

31/05/2011

Faça o que é chamado de tabela intermediária. ou seja uma tabela entre as duas N -> 1 <- N
GOSTEI 0
Junior

Junior

31/05/2011


Faça o que é chamado de tabela intermediária.
ou seja uma tabela entre as duas N -> 1 <- N
 

Exatamente Nigro, por isso criei a tabela MEDICO_ATENDE pra gravar o id do médico e o id do local de atendimento, assim com um simples select eu consigo buscar onde o médico atende.
Porém estou com dificuldades para inserir o id-medico e id-local nessa tabela ao mesmo tempo.
Tenho um form de cadastro de médico onde tenho um dblookupcombobox que lista todos os locais de atendimento disponíveis, então o usuário seleciona o local de atendimento, e na hora de gravar esse médico eu gostaria que gravasse na tabela medico_atende o id-medico e o id-local.
trabalho com 
sdsMedico>dspMedico>cdsMedicosdsLocal>dspLocal>cdsLocal
para fazer as conexões.
GOSTEI 0
Nigro

Nigro

31/05/2011

Sua modelagem está correta, não entendí qual a sua dificuldade. ahhh apenas uma ressalva, essa tabela deve conter uma PK auto incremento, ou algo assim, se você usar PK composta, ou seja, com mais de um campo isso irá dar performance no banco.
GOSTEI 0
POSTAR