none
Ajuda com INSERT e Parametro SQL RRS feed

  • Pergunta

  • Olá amigos.
    estou com um problema xato aqui.

    Tenho UMA TABELA USUARIO E UMA TABELA CHAMADOS QUE ESTAO RELACIONADO PELO ID_USUARIO.
    Bom na minha aplicação faço um insert na tabela Chamados com os campos no form, o problema é que quando mando fechar que chama to procedimento ele da o seguinte erro:

    "A instrução INSERT conflitou com a restrição do FOREIGN KEY "FK_TBL_CHAMADOS_TBL_USUARIOS". O conflito ocorreu no bando de dados "DBHelp", tabela "dbo.TBL_USUARIOS", column 'ID_USER'. A instrução foi finalizada. "

    Não Entendo, pois estão relacionada, a chave primaria esta na tabela usuário ID_USER e, a chave estrangeira esta na tabela chamados ID_USER, normal, sei lá.

    Dei uma olhada no código da minha aplicação. Quem sabe não surge uma luz. Obrigado.

    string str_comando = "INSERT INTO TBL_CHAMADOS (ID_EMPRESA,ID_USER,ID_PROBLEMA,DATA,DESCRICAO,RESPOSTA,STATUS)"
                                     + "VALUES(@ID_EMPRESA,@ID_USER,@ID_PROBLEMA,@DATA,@DESCRICAO,@RESPOSTA,@STATUS)";


                SqlConnection con = new SqlConnection(str_conecta);
                try
                {
                    SqlCommand comando = new SqlCommand(str_comando, con);
                   
                    comando.Parameters.Add(new SqlParameter("@ID_EMPRESA",radEmpresa.SelectedValue)); // Radio buuton não sei se é assim mesmo que pego o valor.

                    comando.Parameters.Add(new SqlParameter("@ID_USER",dropUsuario.SelectedValue)); // será que também esta certo ?
                    comando.Parameters.Add(new SqlParameter("@ID_PROBLEMA", droTipoProblema.SelectedValue)); // será que também esta certo ?

                    comando.Parameters.Add(new SqlParameter("@DATA", System.DateTime.Now));
                    comando.Parameters.Add(new SqlParameter("@DESCRICAO", txtProblema.Text));
                    comando.Parameters.Add(new SqlParameter("@RESPOSTA", txtResposta.Text));
                    comando.Parameters.Add(new SqlParameter("@STATUS", "0")); // Quero que fique com 0 para fazer uma consulta posteriormente.
                   

                    con.Open();
                    comando.ExecuteNonQuery();
                    con.Close();
                    limpaDados();
                    lblMensagem.Text = "Chamado encerrado com sucesso!!";

                }
                catch (Exception err)
                {
                    Response.Write(err.Message);
                }
                finally
                {
                    if (con.State == ConnectionState.Open)
                        con.Close();
                }

    segunda-feira, 22 de fevereiro de 2010 14:14

Respostas

  • Resolvido estava comendo bronha, ai em cima esta certinho, o problema era meu dropdownlist que vinculei ao ID_TIPO e NOME, mas eu precisava do ID_USER, só que o ID_TIPO era minha base de pesquisa, pois queria apenas os com tipo=2. Sendo assim no dropdownlist eu fiz um SELECT ID_USER,NOME FROM TBL_USUARIOS WHERE ID_TIPO=@ID_TIPO e pronto, funcionou.

    ISSO AI.

    • Editado Maciel Alves segunda-feira, 22 de fevereiro de 2010 17:17 CORREÇÃO
    • Marcado como Resposta Maciel Alves segunda-feira, 22 de fevereiro de 2010 17:18
    segunda-feira, 22 de fevereiro de 2010 17:00