Usuário com melhor resposta
tentando preencher uma combo e carregar uma textbox

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
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
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ã? -
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
-
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