Acma 1 Denunciar post Postado Setembro 12, 2011 Olá Pessoal, Bom dia!! Estou com uma dúvida. Estou desenvolvendo uma aplicação, e nela tem cadastro de Departamentos, Setores, Cargos. Os cadastros de Departamento e Setores estão funcionando beleza, só estou com dúvida, no cadastro de Cargos, onde na tela de Cadastro de Cargo, tem informações como Título do Cargo, Salário Base.. e tem 3 ComboBox, Uma para selecionar o Tipo de Cargo, outra pra selecionar o Departamento que este cargo pertence, e o terceiro combo é para informar a qual setor pertence este Cargo a imagem da tela de Cadastro de Cargo eu postei neste link http://www.4shared.com/photo/ohsWtztj/cad_cargos.html precisava que quando selecionava um departamento, ele automaticamente carrega somente os setores do departamento escolhido na combo de departamento, e toda vez que mudasse o departamento, ele atualizava a combo de setores.. Segue o código do form de Cadastro de Cargos using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using TCC.Manipulacao; using TCC.Metodos; using TCC.RegradeNegocio; namespace Projeto_Principal { public partial class frm_cad_cargo : Form { public frm_cad_cargo() { InitializeComponent(); } private void frm_cad_cargo_Load(object sender, EventArgs e) { CarregaComboTipoCargo(); CarregarComboDep(); CarregaSetores(); } protected void CarregarComboDep() { SqlConnection conexao = new SqlConnection(); conexao.ConnectionString = Dados.StringConexao; conexao.Open(); try { SqlCommand cmd = new SqlCommand("SELECT CODEP,NOMEDEP FROM DEPARTAMENTOS", conexao); SqlDataReader reader = cmd.ExecuteReader(); DataTable table = new DataTable(); table.Load(reader); this.cbbDep.DataSource = table; this.cbbDep.DisplayMember = "NOMEDEP"; this.cbbDep.ValueMember = "CODEP"; reader.Close(); reader.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { conexao.Close(); conexao.Dispose(); } } public void CarregaComboTipoCargo() { SqlConnection conexao = new SqlConnection(); conexao.ConnectionString = Dados.StringConexao; conexao.Open(); try { SqlCommand cmd = new SqlCommand("SELECT CODTIPOCARGO,NOMETIPOCARGO FROM TIPOS_CARGO", conexao); SqlDataReader reader = cmd.ExecuteReader(); DataTable table = new DataTable(); table.Load(reader); this.cbbTipoCargo.DataSource = table; this.cbbTipoCargo.DisplayMember = "NOMETIPOCARGO"; this.cbbTipoCargo.ValueMember = "CODTIPOCARGO"; reader.Close(); reader.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { conexao.Close(); conexao.Dispose(); } } public void CarregaSetores() { SqlConnection conexao = new SqlConnection(); conexao.ConnectionString = Dados.StringConexao; conexao.Open(); try { SqlCommand cmd = new SqlCommand("SELECT S.CODSETOR,S.NOMESETOR,D.NOMEDEP FROM SETORES S INNER JOIN DEPARTAMENTOS D ON S.CODEP=D.CODEP WHERE D.NOMEDEP=" + cbbDep.DisplayMember, conexao); SqlDataReader reader = cmd.ExecuteReader(); DataTable table = new DataTable(); table.Load(reader); this.cbbSetor.DataSource = table; this.cbbSetor.DisplayMember = "NOMESETOR"; this.cbbSetor.ValueMember = "CODSETOR"; reader.Close(); reader.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { conexao.Close(); conexao.Dispose(); } } private void btnSalvarCargo_Click(object sender, EventArgs e) { try { MetodosCargo cargo = new MetodosCargo(); cargo.NOMECARGO = txtNomeCargo.Text; cargo.CODTIPOCARGO = Convert.ToInt32(this.cbbTipoCargo.SelectedValue); cargo.CODEP = Convert.ToInt32(this.cbbDep.SelectedValue); cargo.CODSETOR = Convert.ToInt32(this.cbbSetor.SelectedValue); cargo.ATRIBUICOES = txtAtribuicoes.Text; cargo.REQUISITOS = txtRequisitos.Text; cargo.OBS = txtObservacoes.Text; cargo.SALARIO = Convert.ToDouble(this.txtSalario.Text); RegraCargo item = new RegraCargo(); item.IncluiCargo(cargo); MessageBox.Show("Cargo incluído com sucesso"); LimpaCampos.Limpa(this); txtNomeCargo.Focus(); } catch (Exception excecao) { MessageBox.Show(excecao.Message); txtNomeCargo.Focus(); } } private void cbbTipoCargo_Click(object sender, EventArgs e) { } private void cbbSetor_Click(object sender, EventArgs e) { } } } Se puderem me ajudar nisso, fico agradecido.. Att, Rodrigo! Compartilhar este post Link para o post Compartilhar em outros sites
Acma 1 Denunciar post Postado Setembro 13, 2011 Pessoal, se alguém puder ajudar, agradeço muito, estou precisando muito disso, nunca progamei a sério, e este é um projeto que quero terminar, estou lendo livros pra me ajudar, mais travei nisso, já tentei várias coisas, e não deu certo. Att, Rodrigo Compartilhar este post Link para o post Compartilhar em outros sites
Leonardo Miranda Hofling 0 Denunciar post Postado Setembro 13, 2011 Rodrigo, O problema está na sua query, você está passando como parâmetro o nome do campo e não valor o do combobox, para pegar o valor utilize a propriedade SelectedValue do combobox. Sugiro que coloque no evento SelectedIndexChanged do seu combobox de Departamentos para chamar o método CarregarSetores(), assim toda vez que você mudar o primeiro combobox, o segundo será atualizado. Segue o código corrigido: public void CarregaSetores() { SqlConnection conexao = new SqlConnection(); conexao.ConnectionString = Dados.StringConexao; conexao.Open(); try { SqlCommand cmd = new SqlCommand(); cmd.Connection = conexao; StringBuilder sbSQL = new StringBuilder(); sbSQL.Append("SELECT S.CODSETOR,S.NOMESETOR,D.NOMEDEP").AppendLine(); sbSQL.Append("FROM SETORES S").AppendLine(); sbSQL.Append("INNER JOIN DEPARTAMENTOS D ON S.CODEP=D.CODEP").AppendLine(); sbSQL.Append("WHERE").AppendLine(); sbSQL.Append("D.NOMEDEP=@NOMEDEP").AppendLine(); cmd.Parameters.AddWithValue("@NOMEDEP", cbbDep.SelectedValue); cmd.CommandText = sbSQL.ToString(); SqlDataReader reader = cmd.ExecuteReader(); DataTable table = new DataTable(); table.Load(reader); this.cbbSetor.DataSource = table; this.cbbSetor.DisplayMember = "NOMESETOR"; this.cbbSetor.ValueMember = "CODSETOR"; reader.Close(); reader.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { conexao.Close(); conexao.Dispose(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Acma 1 Denunciar post Postado Setembro 13, 2011 Valeu Muleque!! Abraço!! \o/ Compartilhar este post Link para o post Compartilhar em outros sites