Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diogobuenodb

Carregar Combobox + access + c#

Recommended Posts

Bom dia a todos

alguem pode me ajudar acho que é simples, porem pra min te meio complecido =)

 

qro carregar o meu combo box com p valor do banco..

 

 

estou usando este codigo

form1.Load(){

combproduto.DisplayMenber ="Nome";

combproduto.ValueMenber ="Codigo";

combproduto.datasoure =AlimentaComboboxCliente();

}

 

assims determinamos que aparecera o nome do cliente e o valor sera o código..

 

para alimentar a combo eu crio um datatable

 

private datatable AlimentaComboboxCliente()

{

 

 

oledbCommand cmd = new oledbCommand("select Nome from cproduto");

 

oledbConnection cnn = new oledbConnection("string de conexao");

 

oledbDataAdapter eledbAdapter = new oledbDataAdapter(cmd,cnn); // aqui tem um erro... "fica vermelhar a linha"

 

 

DataTable dt = new DataTable();

 

 

 

 

try

 

{

 

sqlAdapter.SelectCommand = cmd;

 

sqlAdapter.Fill(dt);

 

}

 

 

 

catch (Exception Ex) // aqui tem um erro... "fica vermelhar a linha"

 

{

 

 

 

 

MessageBox.Show(Ex.Message); // aqui tem um erro... "fica vermelhar a linha"

 

}

 

 

 

 

return dt;

 

 

 

}

 

 

 

eu ano deria que colocar esco codigo... apertando em cima do combobox??

 

peguei ese na net...

 

 

vlw

 

obs. È sistema desktop

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só esta com eror neste linha agora

 

oledbDataAdapter eledbAdapter = new oledbDataAdapter(cmd,cnn); // cannot convert from system.Data.OledbCommand do 'string'

 

oq será??

 

esse comando utilizo mesmo né cliclando em cima do meu combobox 2 X

 

vlw

 

Alguem ai sabe??

 

to procurando na net + não to achando nada

 

vlw

 

Vlw aew... acheiem um forum como fazer se mais alguem tiver está duvida segue o código

 

N~]ao sei sé é proibido coplar coódigo de outro site de desculpa se for.. pode coloca como "RESOLVIDO"

 

using (SqlConnection CN = new SqlConnection("STRING DE CONEXAO"))

{

//Cria um dataadapter para receber o select do banco de dados

using(SqlDataAdapter da = new SqlDataAdapter("Select Codigo, Nome from TABELA", CN))

{

//cria um datatable

DataTable dt = new DataTable();

//Faz um fill dos dados do DataAdapter para o DataTable

da.Fill(dt);

//Fonte de dados do Combobox recebe o datatable

this.comboBox1.DataSource = dt;

//DisplayMember = recebe o nome que está no banco de dados

this.comboBox1.DisplayMember = "Nome";

//ValueMember = recebe o código e guarda internamente em cada item do combobox.

this.comboBox1.ValueMember = "Codigo";

}

}

 

 

aki tem o link

http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/2fb03947-3cf6-487e-9d1b-1d15b1dda3ae/

 

Obrigado

 

------------------------------------------------------------------------------------------------------------------------------------

 

Só uma duvida no meu select ("Select nome from cproduto", CN)

 

como só mostrar os dados do form selecionado..

 

exemplo escola X tem produto a,b

e escola W tem produtos c.d

quando eu escolha a escola X só mostra os produtos a,b no meu combobox "produtos"

tentei assim ("Select nome from cproduto WHERE 'escola=combEscola.text'", CN)

porem da erro..

 

alguem sabe???

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

a questão é a sobre carga do new DataAdapter

 

use assim

 


private datatable AlimentaComboboxCliente()
{

oledbConnection cnn = new oledbConnection("string de conexao");

oledbCommand cmd = new oledbCommand("select Nome from cproduto", cnn);

oledbDataAdapter eledbAdapter = new oledbDataAdapter(cmd); 

DataTable dt = new DataTable(); 

try

{
sqlAdapter.Fill(dt);
}

catch (Exception Ex) // aqui tem um erro... "fica vermelhar a linha"

{

MessageBox.Show(Ex.Message); // aqui tem um erro... "fica vermelhar a linha"
}


return dt;

}

 

no caso que você estava usando você não passa o objeto oledbConnection e sim a string de connexão

 

a forma que mostrei acima é a forma que prefiro usar pois mantenho o objeto oledbConnection

Compartilhar este post


Link para o post
Compartilhar em outros sites

Intao está parte já esta ok

 

o problema é agora...

 

Só uma duvida no meu select ("Select nome from cproduto", CN)

 

como só mostrar os dados do form selecionado..

 

exemplo escola X tem produto a,b

e escola W tem produtos c.d

quando eu escolha a escola X só mostra os produtos a,b no meu combobox "produtos"

tentei assim ("Select nome from cproduto WHERE 'escola=combEscola.text'", CN)

porem da erro..

 

alguem sabe???

 

grato

 

 

 

a questão é a sobre carga do new DataAdapter

 

use assim

 


private datatable AlimentaComboboxCliente()
{

oledbConnection cnn = new oledbConnection("string de conexao");

oledbCommand cmd = new oledbCommand("select Nome from cproduto", cnn);

oledbDataAdapter eledbAdapter = new oledbDataAdapter(cmd); 

DataTable dt = new DataTable(); 

try

{
sqlAdapter.Fill(dt);
}

catch (Exception Ex) // aqui tem um erro... "fica vermelhar a linha"

{

MessageBox.Show(Ex.Message); // aqui tem um erro... "fica vermelhar a linha"
}


return dt;

}

 

no caso que você estava usando você não passa o objeto oledbConnection e sim a string de connexão

 

a forma que mostrei acima é a forma que prefiro usar pois mantenho o objeto oledbConnection

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é assim não

 

Uma solução rápida seria :

 

oledbCommand cmd = new oledbCommand("select Nome from cproduto where escola= '" & combescola.selectedvalue & "'", cnn);

 

Na propriedade ValueMember do combo você deve colocar o código da escola, como naquele exemplo que você postou anteriormente

 

...........................

 

Eu disse solução rápida pois o legal é usar parametros, dá uma pesquisada pois isso vai te ajudar e muito

 

 

QQ coisa é só postar , tanto se deu errado como se deu certo

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu nao =/

 

coloquei o valuemember "escola" no meu comb produto..

 

da erro no Select "operador '&' connot aplied to operands of type 'string' and 'object'" // esta com esse erro

 

tentei assim troquei o "&" pelo "+" nao deu erro porem nao mostra nem um produto

 

tendei tb com uma ' e com "" porem mesmo assim não foi...

 

meu select fica no comb "produto" né.. primeiro seleciono a escola e depois o produto

 

oq pode estar errado??

 

Não é assim não

 

Uma solução rápida seria :

 

oledbCommand cmd = new oledbCommand("select Nome from cproduto where escola= '" & combescola.selectedvalue & "'", cnn);

 

Na propriedade ValueMember do combo você deve colocar o código da escola, como naquele exemplo que você postou anteriormente

 

...........................

 

Eu disse solução rápida pois o legal é usar parametros, dá uma pesquisada pois isso vai te ajudar e muito

 

 

QQ coisa é só postar , tanto se deu errado como se deu certo

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Intao tentei co o +

 

oledbCommand cmd = new oledbCommand("select Nome from cproduto where escola= '" + combescola.selectedvalue + "'", cnn);

 

 

mais nao carrega nada pq??

 

Você ta programando em c#, c# não usa & você concatena com +.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim ...

 

tem escolas e produtos..

 

uma duvida não tem q colocar o "Código" no enveto "click" do meu combobox "produto"

 

vi no forum que tinha q colocar no envento select.value porem este nao tem como "escrever" o codigo...

 

o q seria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim ...

 

tem escolas e produtos..

 

uma duvida não tem q colocar o "Código" no enveto "click" do meu combobox "produto"

 

vi no forum que tinha q colocar no envento select.value porem este nao tem como "escrever" o codigo...

 

o q seria?

 

 

o evento é onSelectedValueChange esse evento é chamado quando ocorre a mudança no valor de um comboBox

 

não coloquei essa observação mas é bom verificar sempre se algum valor foi selecionado com comboescola.selectedvalue <> -1

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixi agora complico o meu codigo... tando do combescola e o do produto..

 

eu estou colocando eles no evento click dos combobox..la no "Rainho" primeira opção

 

esta ok??

 

ou coloco o codigo no SelectedValueChange ??

 

ou clicando em cima deles 2X??

 

ja to travado aki a 1 semana da um help aiew

 

vlw =)

 

Tem sim ...

 

tem escolas e produtos..

 

uma duvida não tem q colocar o "Código" no enveto "click" do meu combobox "produto"

 

vi no forum que tinha q colocar no envento select.value porem este nao tem como "escrever" o codigo...

 

o q seria?

 

 

o evento é onSelectedValueChange esse evento é chamado quando ocorre a mudança no valor de um comboBox

 

não coloquei essa observação mas é bom verificar sempre se algum valor foi selecionado com comboescola.selectedvalue <> -1

 

============================================================================================================

O galera o meu codigo esta assim..

 

este é para preencher o combescola..

 

private void combEscola_Click(object sender, EventArgs e)

{

using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDB.4.0; Data Source=C:\controle-de-vendas\controle-de-ropas\bin\Debug\controlederoupas.mdb"))

{

using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT escola FROM cproduto", cn))

{

DataTable dt = new DataTable();

da.Fill(dt);

this.combEscola.DataSource = dt;

this.combEscola.DisplayMember = "escola";

this.combProduto.ValueMember = "escola";

 

}

 

 

}

}

 

aki beleza.. mostra todos as escolas

 

esse aki é o combProduto

 

 

private void combProduto_ValueMemberChanged(object sender, EventArgs e)

{

using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDB.4.0; Data Source=C:\controle-de-vendas\controle-de-ropas\bin\Debug\controlederoupas.mdb"))

{

using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT nome FROM cproduto WHERE 'escola="+combEscola.ValueMember+"'", cn))

{

DataTable dt = new DataTable();

da.Fill(dt);

this.combProduto.DataSource = dt;

this.combProduto.DisplayMember = "nome";

this.combProduto.ValueMember = "escola";

 

 

}

}

}

 

 

ele só garega depois que escolhe uma escola beleza... porem carrega TODOS os produtos e nao so aquele refetente a escola selecionada pq..

 

ja tentei de tudo =\

 

alguma ideia alguem...

 

vlw

===========================================================================================================

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá

 

o combo de produtos é carregado quando o valor do combo escola e alterado, ou seja, no evento onSelectedValueCange logo seu código fica

 

private void combEscola_SelectedValueChange(object sender, EventArgs e)

{

using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDB.4.0; Data Source=C:\controle-de-vendas\controle-de-ropas\bin\Debug\controlederoupas.mdb"))

{

using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT nome FROM cproduto WHERE 'escola="+combEscola.selectedValue+"'", cn))

{

DataTable dt = new DataTable();

da.Fill(dt);

this.combProduto.DataSource = dt;

this.combProduto.DisplayMember = "nome";

this.combProduto.ValueMember = "escola";

 

 

}

}

}

 

observação, no access você usa uma consulta sql na propriedade RecordSource (se não me engano) e diz qual a coluna valor atraés de um indice numérico..

 

ao invez de você falar o indice você deve informa o nome do campo que será a fonte do valor , essa propriedade é a value member , para você saber o valor do combo deve utilizar a propriedade selectedValue..

 

o codigo que carrega o comboescola você coloca no evento formLoad

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza intendi +/-

 

o proble e a consulta.. pelo numero dela...

 

tipo eu cadastro escola X com produto A

a mesma escola X com o produto B

 

cadas cadastro tem um numero diferente

 

Tipo 1 escola X produto A

2 escola X produto B

 

e a mesma escola porem com numeros direfentes..

 

se eu chamar pelo "ID" nao vai carrega todos os produtos...

 

 

se eu alterar so o

 

this.combProduto.selectedValue = "escola";

 

e faser as outras alterações q você falo ja não fica ok?

 

tem mesmo que chamar pelo id? nao de pelo nome?como chamar pelo id?

 

 

 

 

===========================================================================================================================

 

private void combEscola_SelectedValueChange(object sender, EventArgs e)

{

using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDB.4.0; Data Source=C:\controle-de-vendas\controle-de-ropas\bin\Debug\controlederoupas.mdb"))

{

using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT nome FROM cproduto WHERE 'escola="+combEscola.selectedValue+"'", cn))

{

DataTable dt = new DataTable();

da.Fill(dt);

this.combProduto.DataSource = dt;

this.combProduto.DisplayMember = "nome";

this.combProduto.ValueMember = "escola";

 

 

}

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.