none
tentando preencher uma combo e carregar uma textbox RRS feed

  • Pergunta

  • ola estou programando em camadas para desktop no visual studio tenho uma tabela de materiais com codigo,descricao e tipo tenho no meu form uma combo onde quero carregar a descricao dos materiais e qdo selecionar um item ele carrega o tipo do material na tabela de movimentação...eu fiz uma select na camada de acesso ao banco do material e programei no evento leave da combo da tabela de movimentação ,vou colocar as programações abaixo...nao esta gerando erro mas nao esta passando nenhum para a combo...executei a select no sqlserver e ela funcionou  alguem pode ajudar ? desde ja agradeço

     

    PROGRAMAÇÃO NA CAMADA DE ACESSO AO BANCO DO MATERIAL

     

    public MateriaisMOV SourceMateriais(string Material, string query, string parametro)

     

    MateriaisMOV m = new MateriaisMOV();

     

    SqlConnection con = new SqlConnection(ConStr);

     

     

    string sql = "SELECT ma.CdMateriais,ma.DeMateriais,ma.Tipo FROM Materiais ma " +

     

     

    " WHERE ma.CdMateriais like @mat + '%'";

     

     

    try

    {

     

    SqlCommand cmd = new SqlCommand(query, con);

     

    SqlDataReader dr = cmd.ExecuteReader();

     

    while (dr.Read())

     

    Convert.ToInt32(dr[0].ToString());

    m.DescMateriais = (

     

    string)dr[0];

    m.TipoMateriais = (

     

    string)dr[2];

     

    catch (Exception)

     

    return m;

     

    }

     

     

    NO EVENTO LEAVE DA COMBO ESTA ASSIM

     

     

    private void cbMateriais_Leave(object sender, EventArgs e)

     

    if (cbMateriais.Text != "")

     

    int i;

     

     

    int.TryParse(cbMateriais.Text, out i);

     

     

    MateriaisDAU m = new MateriaisDAU();

     

     

    MateriaisMOV ma = new MateriaisMOV();

     

     

    string query = "SELECT ma.CdMateriais, ma.DeMateriais, " +

     

     

    " ma.Tipo FROM Materiais ma WHERE ma.DeMateriais LIKE @mat +'%' ";

    ma = m.SourceMateriais(cbMateriais.Text +

     

    "%", query, "@mat");

     

     

    //eq = p.SourceEquipamentc(i);

    DeTipo.Text = ma.TipoMateriais;

     

    //cbEquipamento.Text = eq.DescEquipamento;

    CdMateriais.Text = ma.CodMateriais.ToString();

     

    //lblArea.Text = eq.Area.CodArea.ToString();

     

    //lblArea.Visible = false;

     

    //lblCodFuncao.Visible = false;

    }

    }

     

    MINHA COMBO FICA EM BRANCO E NAO GERA ERRO ... DESDE JA AGRADEÇO

    {

     

    {

     

    {

     

    }

    con.Close();

     

     

    }

    }

     

    {

    m.CodMateriais =

     

     

    cmd.Parameters.AddWithValue(parametro, Material);

    con.Open();

     

     

     

    {

     

    • Movido Gustavo Maia Aguiar quarta-feira, 29 de setembro de 2010 04:38 (De:SQL Server - Desenvolvimento Geral)
    • Editado claudio_ramone quarta-feira, 29 de setembro de 2010 17:35
    terça-feira, 28 de setembro de 2010 15:02

Respostas

  • Oi Claudio, segue uma sugestão de alteração

     

     

    public int SourceMateriais(string Material, string query, string parametro, MateriaisMOV pRetorno)

    {

    .... //seu código como está

     

    //antes de retornar, iguale o parametro passado a variavel m

    //isso faz com que os dados sejam compiados para a variavel passada //como parametro

    pRetorno = m;

    //troquei o retorno para inteiro, assim quem usar este método deve // comparar o retorno. Se for 0, indica sucesso, se for diferente de 0 tem // erro na execução deste método

    // voce precisará identificar no seu código os possiveis locais que podem //retornar erro e retornar algo diferente de 0. O valor 0 só será retornado //se tudo correr bem

    return 0;

    }

     

    abraço

    dTito

     



    hã?
    • Marcado como Resposta claudio_ramone terça-feira, 28 de setembro de 2010 16:47
    • Não Marcado como Resposta claudio_ramone quarta-feira, 29 de setembro de 2010 17:33
    • Marcado como Resposta Levi DomingosModerator sexta-feira, 12 de novembro de 2010 13:57
    terça-feira, 28 de setembro de 2010 15:23

Todas as Respostas

  • Claudio

    Voce está com o combo em branco porque a declaração da variável utilizada para armazenar os dados "m" está dentro do método, e quando o método termina de ser executado esta variável é destruida.

    Existem 3 opçoes:

     

    •  ou passar a variavel que irá guardar os resultados por parametro do seu método (mais recomendado)
    • ou declarar esta variavel como propriedade do seu objeto 
    • ou declarar esta variavel como global do seu projeto (menos recomendado)

    att.
    dTito

     


    hã?
    terça-feira, 28 de setembro de 2010 15:11
  • dTito sou estudante e estou iniciando no c# vc poderia me mostrar oq esta errado e me dar um exemplo do q posso fazer ?

      passar a variavel que irá guardar os resultados por parametro do seu método (mais recomendado) // fazendo isso q vc citou

    desde ja agradeço a atenção

    terça-feira, 28 de setembro de 2010 15:16
  • Oi Claudio, segue uma sugestão de alteração

     

     

    public int SourceMateriais(string Material, string query, string parametro, MateriaisMOV pRetorno)

    {

    .... //seu código como está

     

    //antes de retornar, iguale o parametro passado a variavel m

    //isso faz com que os dados sejam compiados para a variavel passada //como parametro

    pRetorno = m;

    //troquei o retorno para inteiro, assim quem usar este método deve // comparar o retorno. Se for 0, indica sucesso, se for diferente de 0 tem // erro na execução deste método

    // voce precisará identificar no seu código os possiveis locais que podem //retornar erro e retornar algo diferente de 0. O valor 0 só será retornado //se tudo correr bem

    return 0;

    }

     

    abraço

    dTito

     



    hã?
    • Marcado como Resposta claudio_ramone terça-feira, 28 de setembro de 2010 16:47
    • Não Marcado como Resposta claudio_ramone quarta-feira, 29 de setembro de 2010 17:33
    • Marcado como Resposta Levi DomingosModerator sexta-feira, 12 de novembro de 2010 13:57
    terça-feira, 28 de setembro de 2010 15:23