Como fazer ligações do dm em relacionamento n/n?
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
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
Curtidas 0
Respostas
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
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
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....
Mas ainda não sei como fazer o relacionamento muitos para muitos de medico - local_atendimento....
GOSTEI 0
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
31/05/2011
Faça o que é chamado de tabela intermediária.
ou seja uma tabela entre as duas N -> 1 <- N
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
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