Hippler 0 Denunciar post Postado Maio 28, 2011 Olá pessoal boa noite!!! Tipo quero que o programa pegue os dados contido na minha combobox, (essa combobox é uma chave estrangeira, nela contem os dados da outra tabela) se eu clicar em alguma cidade ele não vai dar erro, mais se eu deixar ela vazia ele dá erro (the insert statement conflicted with the foreign key constraint "Fk_Estabeleciment_subtipo_psicosocial". The conflict occured in database "Exames_TCC", table "dbo.subtipo.....", column "cod_sub_ti... . the statement has benn terminated.") Então o que posso fazer para salvar ele normal sem erros ? estab.cod_sub_tipo_estabelecimento = cb_sub_tp_estab.SelectedIndex; ALGUEM AJUDA EU AI FAZENDO UM GRANDE FAVOR Olá pessoal tipo fiz de tudo :S cara to ficando até vesgo de tanto olhar esse erro e não encontrar a solução. Em outros foruns o pessoal fala que é que não criou o campo na tabela e tals outros que está errada a senha de conexao com o banco... Mais tipo chequei tudo e está ok. Não entendo o que esteja errado... Por favor de verdade alguém me ajuda. Vai ai os prints mostrando que está tudo ok. foto1 foto2 foto3 foto4 foto5 foto6 Está ai agora acho que vou dormir pois estou ficando com dor nos olhos já. Obrigado desde já :) Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Maio 28, 2011 Em que momento ocorre o erro? Compartilhar este post Link para o post Compartilhar em outros sites
Hippler 0 Denunciar post Postado Maio 28, 2011 eu executo o programa, não preencho nenhum dos campos, ou pode preencher todos também que dá erro. dai quando eu clico no botão gravar vem essa mensagem ai de erro. Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Maio 28, 2011 Posta seu codigo ai. por que pelo erro, esta ocorrendo que ao tentar executar um insert, esta indo um valor que deve existir antes em outra tabela. Compartilhar este post Link para o post Compartilhar em outros sites
Hippler 0 Denunciar post Postado Maio 28, 2011 aqui a camada DAL: conexao = new SqlConnection(conexao_sqlserver); SqlCommand sql = new SqlCommand("insert into Estabelecimento (est_pessoa_fisica_juridica,est_cod_tipo_estabelecimento,est_situacao,est_cod_sub_tipo_estabelecimento,est_cnes, est_cnpj_cpf ,est_cnpj_mantenedora,est_razao_social,est_nome_fantasia,est_logradouro,est_numero,est_complemento,est_bairro,est_cod_ibge_mun,est_cod_estado,est_cep,est_r_saude,est_microregiao,est_d_sanitario,est_mod_assist,est_telefone,est_fax) values (@est_pessoa_fisica_juridica,@est_cod_tipo_estabelecimento, @est_situacao, @est_cod_sub_tipo_estabelecimento, @est_cnes,@est_cnpj_cpf ,@est_cnpj_mantenedora,@est_razao_social,@est_nome_fantasia, @est_logradouro, @est_numero, @est_complemento,@est_bairro, @est_cod_ibge_mun ,@est_cod_estado, @est_cep,@est_r_saude,@est_microregiao, @est_d_sanitario,@est_mod_assist, @est_telefone, @est_fax)", conexao); sql.Parameters.AddWithValue("@est_pessoa_fisica_juridica", estabelecimento.est_pessoa_fisica_juridica); sql.Parameters.AddWithValue("@est_cod_tipo_estabelecimento", estabelecimento.est_pessoa_fisica_juridica); sql.Parameters.AddWithValue("@est_situacao", estabelecimento.situacao); sql.Parameters.AddWithValue("@est_cod_sub_tipo_estabelecimento", estabelecimento.cod_sub_tipo_estabelecimento); sql.Parameters.AddWithValue("@est_cnes", estabelecimento.cnes); sql.Parameters.AddWithValue("@est_cnpj_cpf", estabelecimento.cnpj_cpf); sql.Parameters.AddWithValue("@est_cnpj_mantenedora", estabelecimento.cnpj_mantenedora); sql.Parameters.AddWithValue("@est_razao_social", estabelecimento.razao_social); sql.Parameters.AddWithValue("@est_nome_fantasia", estabelecimento.nome_fantasia); sql.Parameters.AddWithValue("@est_logradouro", estabelecimento.logradouro); sql.Parameters.AddWithValue("@est_numero", estabelecimento.numero); sql.Parameters.AddWithValue("@est_complemento", estabelecimento.complemento); sql.Parameters.AddWithValue("@est_bairro", estabelecimento.bairro); sql.Parameters.AddWithValue("@est_cod_ibge_mun", estabelecimento.cod_ibege_mun); sql.Parameters.AddWithValue("@est_cod_estado", estabelecimento.cod_estado); sql.Parameters.AddWithValue("@est_cep", estabelecimento.cep); sql.Parameters.AddWithValue("@est_r_saude", estabelecimento.regiao_saude); sql.Parameters.AddWithValue("@est_microregiao", estabelecimento.microregiao); sql.Parameters.AddWithValue("@est_d_sanitario", estabelecimento.depart_sanitario); sql.Parameters.AddWithValue("@est_mod_assist", estabelecimento.mod_assist); sql.Parameters.AddWithValue("@est_telefone", estabelecimento.telefone); sql.Parameters.AddWithValue("@est_fax", estabelecimento.fax); //sql.Parameters.AddWithValue("@est_email", estabelecimento.email); //sql.Parameters.AddWithValue("@est_n_alvara", estabelecimento.n_alvara); sql.Parameters.AddWithValue("@est_data_expedicao", estabelecimento.data_expedicao); /*sql.Parameters.AddWithValue("@est_orgao_expedidor", estabelecimento.orgao_expedidor); sql.Parameters.AddWithValue("@est_representante_cpf", estabelecimento.representante_cpf); sql.Parameters.AddWithValue("@est_representante_nome", estabelecimento.representante_nome); sql.Parameters.AddWithValue("@est_representante_cargo", estabelecimento.representante_cargo); sql.Parameters.AddWithValue("@est_representante_email", estabelecimento.representante_email); sql.Parameters.AddWithValue("@est_cod_esfera_adm", estabelecimento.cod_esfera_adm); sql.Parameters.AddWithValue("@est_cod_natureza_organizacao", estabelecimento.cod_natureza_organizacao); sql.Parameters.AddWithValue("@est_cod_retencao_atributos", estabelecimento.cod_retencao_atributos); sql.Parameters.AddWithValue("@est_cod_hierarquia", estabelecimento.cod_hierarquia); sql.Parameters.AddWithValue("@est_cod_atv_ensino_pesquisa", estabelecimento.cod_atv_ensino_pesquisa); sql.Parameters.AddWithValue("@est_tipo", estabelecimento.tipo); sql.Parameters.AddWithValue("@est_gestao", estabelecimento.gestao); sql.Parameters.AddWithValue("@est_cod_atividade", estabelecimento.cod_atividade); sql.Parameters.AddWithValue("@est_cod_atendimento", estabelecimento.cod_atendimento); sql.Parameters.AddWithValue("@est_cod_convenio", estabelecimento.cod_convenio); sql.Parameters.AddWithValue("@est_conexao_net", estabelecimento.conexao_net); sql.Parameters.AddWithValue("@est_tipo_conexao", estabelecimento.tipo_conexao); sql.Parameters.AddWithValue("@est_telefonia_fixa", estabelecimento.telefonia_fixa); sql.Parameters.AddWithValue("@est_telefonia_movel", estabelecimento.telefonia_movel);*/ conexao.Open(); sql.ExecuteNonQuery(); } catch (Exception erro) { throw erro; } finally { conexao.Close(); } } aqui a camada BLL public void gravaEstabDal(AcessaDadosEstabelecimento estabelecimento) { try { estab_dal = new estabelecimentoDAL(); estab_dal.gravaEstabelecimento(estabelecimento); } catch (Exception erro) { throw erro; } } E por ultimo o de interface AcessaDadosEstabelecimento estab = new AcessaDadosEstabelecimento();//estancio a classe de acesso aos dados estab.est_pessoa_fisica_juridica = Convert.ToInt32(cb_pessoa.SelectedValue); estab.cod_tipo_estabelecimento = Convert.ToInt32(cb_tp_estab.SelectedValue); estab.situacao = Convert.ToInt32(cb_situacao.SelectedValue); estab.cod_sub_tipo_estabelecimento = Convert.ToInt32(cb_sub_tp_estab.SelectedValue); estab.cnes = string.IsNullOrEmpty(tb_cnes.Text) ? 0 : Convert.ToInt16(tb_cnes.Text); estab.cnpj_cpf = tb_cnpj_estab.Text; estab.cnpj_mantenedora = tb_cnpj_mantenedora.Text; estab.razao_social = tb_razao_social.Text; estab.nome_fantasia = tb_nome_fantasia.Text; estab.logradouro = tb_logradouro.Text; estab.numero = tb_numero.Text; estab.complemento = tb_complemento.Text; estab.bairro = tb_bairro.Text; estab.cod_ibege_mun = Convert.ToInt32(cb_municipio.SelectedValue); estab.cod_estado = Convert.ToInt32(cb_estado.SelectedValue); estab.cep = tb_cep.Text; estab.regiao_saude = string.IsNullOrEmpty(tb_r_saude.Text) ? 0 : Convert.ToInt16(tb_r_saude.Text); estab.microregiao = string.IsNullOrEmpty(tb_microregiao.Text) ? 0 : Convert.ToInt32(tb_microregiao.Text); estab.depart_sanitario =string.IsNullOrEmpty(tb_d_sanitario.Text) ? 0 : Convert.ToInt32(tb_d_sanitario.Text); estab.mod_assist = tb_mod_assist.Text; estab.telefone = tb_telefone.Text; estab.fax = tb_fax.Text; estab.data_expedicao = Convert.ToDateTime(dt_data.Text); try { LimpaControles(); estabelecimentoBLL estab_bll = new estabelecimentoBLL(); estab_bll.gravaEstabDal(estab);//chamo o metodo do bll para gravar MessageBox.Show("Estabelecimento Gravado com Sucesso"); } catch (Exception erro) { MessageBox.Show("Erro ao Cadastrar o estabelecimento" + erro); } } Tipo tenho quase certeza que o erro está acontecendo que quando não tem nada na combobox ele joga um valor louco para o banco dai o banco não aceita.... teria que fazer meio que assim.... se a pessoa não selecionou nada na combo ele manda o valor null para o banco... mais nao sei fazer isso.... se alguem puder me ajudar.... postei um video para mostrar melhor.... segue o link :http://www.youtube.com/watch?v=sFLGc8PRxIc obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Maio 28, 2011 No caso, você tem que validar se o usuario selecionou algo nas combos, pois as informações que deve entrar no insert estão com relacionementos, e isso obriga o usuario a selecionar algo na combo. Devido ao relacinamento você não pode entrar com um valor qualquer ou um valor nulo, tem q ser uma informação da outra tabela que esteja relacionada. Quanto au entrar limpar os dados, você lipar após o carregamento do formulário, ou seja, após carregar, limpa os campos. sacou! Compartilhar este post Link para o post Compartilhar em outros sites
Hippler 0 Denunciar post Postado Maio 28, 2011 Tipo queria que ele fizesse o mesmo que foi feito no inteiro.. fiz o mesmo mais não deu certo estab.cod_sub_tipo_estabelecimento = string.IsNullOrEmpty(cb_sub_tp_estab.Text) ? 0 : Convert.ToInt32(cb_sub_tp_estab.SelectedValue); estab.cnes = string.IsNullOrEmpty(tb_cnes.Text) ? 0 : Convert.ToInt16(tb_cnes.Text); Cara sou meio leigo em programação... como faria para validar os dados ? ver se tem algo na combo ou nao... e o que ele salvaria no banco se nao tivesse nada na combo ? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Maio 28, 2011 Por existir uma relação entre tabelas, o valor nunca pode ser null ou diferente de um codigo que exista na tabela estabelecimento. Quanto a validar, é bem simples, no evento salvar, antes de qualquer coisa você valida campo por campo. Compartilhar este post Link para o post Compartilhar em outros sites
Hippler 0 Denunciar post Postado Maio 28, 2011 Tudo bem entendi o que você quis dizer... Mais estava pensando uma coisa. Cadastrei por exemplo dentro da tabela estado com codigo 9999 descricao não informado. Como que faço para que se o usuario não selecionar nada ele salve esse codigo automatico dentro da outra tabela ? Tipo isso deve ter como fazer. Se puder posta +- como seria a linha de programação... pois ainda estou na facu e não manjo quase nada.. E como eu faria para apareçer na tela do usuario no caso uma mensagem para que ele preencher algum campo que ele deixou em branco... essa mensagem apareceria quando ele clicasse no botao salvar ok. Obrigado. Atá achei como fazer ele salvar o 9999 é só eu colocar ele no lugar do zero :) mais e a outra parte da mensagem como faria ? Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Maio 28, 2011 faça assim: estab.cod_sub_tipo_estabelecimento = string.IsNullOrEmpty(cb_sub_tp_estab.SelectedValue) ? "" : 9999; Compartilhar este post Link para o post Compartilhar em outros sites
Hippler 0 Denunciar post Postado Maio 28, 2011 É Ivan estou fazendo +- assim... Tipo um amigo meu de faculdade que tinha me ensinado... estab.est_pessoa_fisica_juridica = string.IsNullOrEmpty(cb_pessoa.Text) ? 99999 : Convert.ToInt32(cb_pessoa.SelectedValue); estab.cod_tipo_estabelecimento = string.IsNullOrEmpty(cb_tp_estab.Text) ? 99999 : Convert.ToInt32(cb_tp_estab.SelectedValue); estab.situacao = string.IsNullOrEmpty(cb_situacao.Text) ? 99999 : Convert.ToInt32(cb_situacao.SelectedValue); estab.cod_sub_tipo_estabelecimento = string.IsNullOrEmpty(cb_sub_tp_estab.Text) ? 99999 : Convert.ToInt32(cb_sub_tp_estab.SelectedValue); Mais teria como eu mostra pelo menssage.show(); que o usuario deixo combo sem selecionar ? Por que no seu tem " " e eu coloquei o 99999? aquele aspas pega o que ? Cara desculpa se tiver incomodando... Estou vendo video aulas mais não acho nada relacionado... so com combo normal sem ligacao com banco... Sabe algum lugar onde posso achar tutorial ou algo assim? Obrigado ______________________________ Consegui fazer apareçer a mensagem que é para preencher todos os campos... Mais teria como eu especificar qual campo seria ? Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Maio 28, 2011 Sim Basta chamar o metodo com a mensagem desejada Compartilhar este post Link para o post Compartilhar em outros sites
Hippler 0 Denunciar post Postado Maio 28, 2011 É deu certo aqui tá salvando belezinha. Só ainda não consegui fazer ele expecificar qual campo não foi preenchido mais tudo bem vejo com o professor na facu segunda. Ah só uma coisa, tipo eu inseir no form um TabControl, pois quero dividir o cadastro em varias partes, tipo uma aba Informações Principais, outra Residenciais, e tals esse tipo, dai cliquei nela e chamei o metodo LimpaControles(); que no caso quando ela abrisse ela já limparia todos os campos deixando em branco. Mais quando clico ele não limpa, e antes sem essr TabControl estava limpando normal. Mais se não souber de boa já ajudou muitooo Obrigado Compartilhar este post Link para o post Compartilhar em outros sites