none
Erro, ao fazer Cadastro de um Cliente RRS feed

  • Pergunta

  • Boa noite galera
    o meu problema é o seguinte, eu tenho uma tabela Pessoa, uma Pessoa_fisica e uma tabela de Endereço, conforme a imagem
    na minha pagina de cadastro vo trabalhar com essas 3 tabelas, so q da erro ao querer inserir os dados do cliente, segue o codigo de como to fznd pra cadastrar esse cliente e a imagem do erro
    codigo:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using LojaVirtual.BLL;
    using LojaVirtual.DAO;
    
    namespace LojaVirtual.WEB
    {
        public partial class CadastrarPf : System.Web.UI.Page
        {
            CidadeBLL cidadesbll = new CidadeBLL();
            EstadoBLL estadosbll = new EstadoBLL();
            PessoaBLL clientebll = new PessoaBLL();
            EnderecoBLL enderecobll = new EnderecoBLL();
            PessoaFisicaBLL pessoafisicabll = new PessoaFisicaBLL();
            PESSOA cliente = new PESSOA();
            PESSOA_FISICA clientepf = new PESSOA_FISICA();
            ENDERECO endereco = new ENDERECO();
    
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ddlUF.DataSource = estadosbll.BuscarTodos();
                    ddlUF.DataTextField = "UF_ESTADO";
                    ddlUF.DataValueField = "UF_ESTADO";
                    ddlUF.DataBind();
    
                    ddlUF.Items.Insert(0, new ListItem("Selecione Estado", "0"));
                }
            }
    
            protected void rdBtnPJ_CheckedChanged(object sender, EventArgs e)
            {
                Response.Redirect("CadastrarPj.aspx");
            }
    
            protected void btnCancelar_Click(object sender, EventArgs e)
            {
                Response.Redirect("Default.aspx");
            }
    
            protected void ddlUF_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (ddlUF.SelectedValue != "0")
                {
                    string Uf = ddlUF.SelectedValue;
                    ddlCidade.DataSource = cidadesbll.ListarCidade(Uf);
                    ddlCidade.DataTextField = "NOME_CIDADE";
                    ddlCidade.DataValueField = "ID_CIDADE";
                    ddlCidade.DataBind();
                }
            }
    
            protected void btnSalvar_Click(object sender, EventArgs e)
            {
                cliente.NOME_PESSOA = txtNome.Text.Trim();
                cliente.FONE = txtFone.Text.Trim();
                cliente.EMAIL = txtEmail.Text.Trim();
                cliente.SENHA = txtSenha.Text.Trim();
                cliente.TIPO_PESSOA = "C";
                cliente.DT_CADASTRO = DateTime.Now;
    
                clientepf.ID_PESSOA = cliente.ID_PESSOA;
                clientepf.CPF = txtCPF.Text.Trim();
                clientepf.RG = txtRG.Text.Trim();
                clientepf.DT_NASCIMENTO = DateTime.Parse(txtDtNasc.Text.Trim());
                clientepf.CELULAR = txtCelular.Text.Trim();
                if (ddlSexo.SelectedValue == "Masculino")
                {
                    clientepf.SEXO = "M";
                }
                else
                {
                    clientepf.SEXO = "F";
                }
    
                endereco.ID_PESSOA = cliente.ID_PESSOA;
                endereco.LOGRADOURO = txtLogradouro.Text.Trim();
                endereco.NUMERO = int.Parse(txtNum.Text);
                endereco.COMPLEMENTO = txtComplemento.Text.Trim();
                endereco.BAIRRO = txtBairro.Text.Trim();
                endereco.CEP = int.Parse(txtCep.Text.Trim());
                endereco.ID_CIDADE = int.Parse(ddlCidade.SelectedValue);
    
                clientebll.CadastrarCliente(cliente);
                pessoafisicabll.CadastrarPF(clientepf);
                enderecobll.CadastrarEndereco(endereco);
            }
        }
    }
    
     a imagem do erro:
    terça-feira, 4 de outubro de 2011 03:42

Todas as Respostas

  • Bom dia amigo, neste  caso você precisa passar como parâmetro o ID_Pessoa? Acredito que o melhor seria que estes campos fossem auto incrementáveis(IDENTITY), ai bastaria inserir o cliente, retornar o ID que foi gerado pelo banco e usar para cadastrar a pessoa física/jurídica.

    O erro que está mostrando é de chave estrangeira(Foreing Key), isto ocorre se você tentar inserir por exemplo um ID na tabela Pessoa_Fisica que é chave estrangeira do campo ID da tabela de Pessoa mas esse ID ainda não existe na tabela de Pessoa.

    Verifique se ao chamar

    clientebll.CadastrarCliente(cliente);
    
    


    Esta sendo inserido corretamente na tabela Pessoa antes de chamar o método:

     pessoafisicabll.CadastrarPF(clientepf);
    
    

    Acredito que seja esse o problema. Faça um teste e avise se resolver. Abraços

    terça-feira, 4 de outubro de 2011 11:11
  • Amigo no seu banco vc tem uma foreign key chamada "fk_pessoa_fisica_pessoa" e ela está em conflito ou seja já existe um registro apontando para isso,  melhor seria vc rever seu banco, customiza-lo melhor e rever as chaves estrangeiras, o erro mostrado é apenas esse.
    Junior
    terça-feira, 4 de outubro de 2011 11:47
  • resolvido
    so peguei essa linha
     clientebll.CadastrarCliente(cliente);

    e coloquei ela logo depois de 
    cliente.DT_CADASTRO = DateTime.Now;
    
    funcionou certinho
    terça-feira, 4 de outubro de 2011 18:37
  • resolvido
    so peguei essa linha
     clientebll.CadastrarCliente(cliente);

    e coloquei ela logo depois de 
    cliente.DT_CADASTRO = DateTime.Now;
    funcionou certinho
    beleza! :)
    terça-feira, 4 de outubro de 2011 18:56