Ir para conteúdo
Fórum Script Brasil
  • 0

Constraint com mais de 1 campo


Pr0gr4m4d0r

Pergunta

no access, como eu defino q 2 campos ou mais, sejam uma constraint, isto é, como faço para q 2 campos de uma tabela não possam entrar com dados repetidos, eu sei q se definir uma chave dupla funciona, mas a questão é q minha tabela já tem uma chave primária, q é o ID da tabela, alguém saberia responder? :blush:

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Va em modo estrutura da tabela, selecione o campo, va em Indexado, e escolha a opção Sim (Duplicação não autorizada)

desta forma não vai permitir duplicar, como se fosse uma chave primária.

Por favor de retorno se conseguiu.

At.

Everaldo

eve_anjos@hotmail.com

isso eu já tinha tentado, hehe, o q quero é impedir duplicidade no registro qd se entra com dados iguais no campo1 E no campo2, ex:

- tabela1 -

campo1 (ID - autonumeração)

campo2 (texto)

campo3 (texto)

- situação 1 (deve ser permitido) -

1 - "uva" - "goiaba"

2 - "uva" - "melancia"

- situação 2 (não deve ser permitido) -

1 - "uva" - "goiaba"

2 - "uva" - "goiaba"

entendeu? isto é, sei q definindo uma chave composta selecionando ambos os campos e clicando na chave, funciona, porém a chave dessa tabela já está definida q é o campo1 (ID), q é uma chave primária, entende? eu não posso ter ao mesmo tempo uma chave primária e uma chave composta na mesma tabela, isso q quero fazer, no sql server e oracle é mole fazer, mas no access como estou usando a pouquíssimo tempo, não descobri como faz :(

Link para o comentário
Compartilhar em outros sites

  • 0

cara você pode usar um consulta para puxar todos as infos do campo 3 e fazer uma coparaçao...... se for = da uma msg de erro e limpa o campo....

pode fazer assim:

DoCmd.RunSQL vSql

v2 = "select campo2 from tabela"

if v2 = campo2 then

msgbox "msg de erro", vbexclamation = vbok

me.campo3 = null

exit sub

end if

acredito q isso ira funcionar

Editado por brunocasado
Link para o comentário
Compartilhar em outros sites

  • 0
cara você pode usar um consulta para puxar todos as infos do campo 3 e fazer uma coparaçao...... se for = da uma msg de erro e limpa o campo....

pode fazer assim:

DoCmd.RunSQL vSql

v2 = "select campo2 from tabela"

if v2 = campo2 then

msgbox "msg de erro", vbexclamation = vbok

me.campo3 = null

exit sub

end if

acredito q isso ira funcionar

beleza cara, esse tipo de verificação eu já faço via código, mas sempre é bom ter esse tipo de segurança na base, caso algum problema (fator externo) aconteça, impedindo esse tipo de problema (duplicidade de informações em 2 campos ao mesmo tempo) q é o meu caso, por exemplo, mas tudo bem, já me conformei q o access está longe de ser um sql server ou um oracle, hehe, vlw!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...