Ir para conteúdo

Arquivado

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

Flávio Fortes

INSERT com PK e FK

Recommended Posts

Galera, bom dia!

 

Tenho estas tabelas:

TB_ATENDIMENTO
(PK) codigo
     dataCadastro
     codigoCliente

TB_CLIENTE
(PK) codigo
     nome

 

Não estou conseguindo inserir a data de cadastro na TB_ATENDIMENTO.


Tenho os seguintes INSERT's:

objConexao.CommandText = "INSERT INTO tb_atendimento (codCliente) SELECT tb_cliente.codigo FROM tb_cliente WHERE tb_cliente.nome = '" + nomeCliente + "' ";
objConexao.ExecuteNonQuery();

objConexao.CommandText = "INSERT INTO tb_atendimento (dataCadastro) VALUES ('" + dataCadastro + "')";
objConexao.ExecuteNonQuery();

 

Apresenta o seguinte erro no segundo Insert:

"Não é possível adicionar ou alterar registros, pois é necessário que eles tenham um registro relacionado na tabela 'tb_cliente'."

A data de cadastro vem de uma textbox;
Esta sendo feito o cadastro do cliente normalmente através de um outro FORM.

Alguém pode me ajudar?

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É porque você precisa inserir um cliente primeiro, antes de inserir a data e tudo mais, porém tudo de primeira, você não pode executar duas querys separadas, porque uma delas vai adicionar uma linha e a outra vai adicionar outra, só poderia ser deste jeito que vocÊ está fazendo se você utilizasse um update na segunda query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No segundo INSERT o Cliente fica com valor nulo pois não é informado.

 

Informe as duas colunas no mesmo INSERT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

KhaosDoctor, você tem razão. Muito Obrigado!

 

Nem lembrei do UPDATE.

 

ficou assim:

objConexao.CommandText = "INSERT INTO tb_atendimento (codCliente) SELECT tb_cliente.codigoFROM tb_cliente WHERE tb_cliente.nome = '" + nomeCliente + "' ";
objConexao.ExecuteNonQuery();

objConexao.CommandText = "UPDATE tb_atendimento SET tb_atendimento.dataCadastro = '" + dataCadastro + "' WHERE tb_atendimento.codCliente in (SELECT tb_cliente.codigo FROM tb_cliente INNER JOIN tb_atendimento ON tb_cliente.codigo = tb_atendimento.codCliente WHERE tb_atendimento.codCliente = tb_cliente.codigo)";
objConexao.ExecuteNonQuery();

 

Mais uma vez... valeu!

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.