Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

passado

[Resolvido] Relação de dependencia entre tabelas em BD SQL

Recommended Posts

Boa tarde, eu tenho uma BD com 3 Tabelas e queria que entre determinados campos o a relação fosse de dependencia ou seija:

 

Ao inserir um valor no campo ID_Empresa na tabela Contactos, ele só permite inserir se o mesmo valor existir no campo ID_Empresa na tabela Empresas.

 

Eu tenho uma relação entre estes dois campos criada mas nao faz como falei, o que posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você precisar criar uma FK no banco de dados, isso vai garantir a consistência dos dados.

Você ao inserir um registro na tabela de Contatos, antes disso, você verifica se existe o valor na empresa, se não existir mostre uma mensagem amigável ao usuário.

Você pode usar um ComboBox também, para listar as empresas disponíveis, assim você garante que o usuário escolhe uma que existe.

 

Mas isso depende da regra de negócio do seu sistema, da maneira que ele deve se comportar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim é isso mesmo que eu tambem queria fazer usar uma combobox a ir buscar todos os valores a tabela empresa, mas atenção pois eu tenho as empresas identificadas por ID e nao por nome, ou seija na combobox aparceria o nome mas ele depositaria o ID

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todo combobox possui dois valores, o Value e o Text.

O text é o que aparece no combo, o value é um valor escondido que cada linha do combobox tem.

No seu caso value seria o ID e text o nome da empresa.

 

Se você for no combobox e depois nas propriedades, em DataSource, lá ele vai fazer um passo a passo para montar o combo e no final você informa qual o Value e o Text.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja fiz isso mas dame sempre erro de INT32, ou tenho definido esse campo como int ja tentei definir como string mas de nenhuma maneira da :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque seu código e o erro para eu tentar ajudar, não consegui entender o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao tenho codigo estou a tentar fazer atravez das opçoes da combobox, o erro é o seguinte, a combobox na tabela de dados esta difinida do tipo integer, e se eu la colocar um numero ela guarda ate aqui tudo bem, mas quando meto a ir buscar os dados a tabela eu no valor coloco o campo da tabela do ID_Empresa que o que contem o numero que vai ser gravado mas ele da erro de integer, vou tirar uns screens para ilusidar

 

Penso que o problema esta na linha de inserção

 

eu antigamente tinha assim

 

command.Parameters.Add("@ID_TEmpresa", SqlDbType.Int).Value = empID_TEmpresaComboBox.Text ()

 

agora tenho assim

 

command.Parameters.Add("@ID_TEmpresa", SqlDbType.Int).Value = empID_TEmpresaComboBox.ValueMember()

 

mas continua a dar o mesmo erro "Failed to convert parameter value from a string to a int32" é este o erro quando tento gravar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

command.Parameters.Add("@ID_TEmpresa", SqlDbType.Int).Value = empID_TEmpresaComboBox.SelectedValue
Se não for SelectedValue, tente SelectedItem.Value.

 

Estou sem o VS aqui para confirmar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O combobox possui uma propriedade chamada DisplayMember, o valor dessa propriedade precisa ser a coluna correspondente ao texto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu tenho essa propriedade definida e quando e para escolher tudo da certo, o problema e quando pesquiso por um contacto e o chamo para mostrar a combobox apresentame o numero ligado a empresa e nao o nome....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está fazendo para mostrar? Você está mostrando só a empresa que foi cadastrada? Eu geralmente monto a combobox com todos os registros e seleciono via programação aquela que o usuário cadastrou anteriormente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu para mostrar estou a fazer assim, tenho uma coluna do lado direito com um formulario de pesquisa com uma listbox, o user introduz "te" na pesquisa na listbox apresenta todos os resultados que contenham "te" eu selecciona e ao seleccionar os resultados aparecem no formulário ao lado com todos os comandos enabled=false, quando crio um registo o formulario e o mesmo mas todos os comandos ficam enabled=true

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.