RECUPERAR VALOR NO COMBOBOX
Boa Noite Amigos
Eu uso o Combobox a muito tempo no VB6, entretanto em uma rotina de alteracao quando tenho que trazer o valor gravado no banco, eu realmente trago o valor devido.Dai quando clico no combo, eu perco o valor que foi trazido do banco e o combo seleciona todos os campos que eu mandei exibir.
O correto seria clicar no Combo e se eu nao selecionar nenhum campo, o conteudo que ja era mostrado deveria ficar la.Mas isso nao acontece.
Felizmente resolvi arrumar isso e agora ao menos na inclusao, quando clico em um valor do combo ele fica selecionado enquanto eu nao clico no proximo.
O que eu quero realmente e trazer o que esta gravado no banco e exibir no ComboBox e quando eu clicar enel, esse valor que foi trazido deve ficar selecionado de imediato como e comum nesse controle e quando eu clicar nele, os demais valores do Combo sao exibidos e so sera alterado o conteudo quando eu realmente selecioanar algum outro dado.
Obrigado e um Abraço
Ventana
Eu uso o Combobox a muito tempo no VB6, entretanto em uma rotina de alteracao quando tenho que trazer o valor gravado no banco, eu realmente trago o valor devido.Dai quando clico no combo, eu perco o valor que foi trazido do banco e o combo seleciona todos os campos que eu mandei exibir.
O correto seria clicar no Combo e se eu nao selecionar nenhum campo, o conteudo que ja era mostrado deveria ficar la.Mas isso nao acontece.
Felizmente resolvi arrumar isso e agora ao menos na inclusao, quando clico em um valor do combo ele fica selecionado enquanto eu nao clico no proximo.
O que eu quero realmente e trazer o que esta gravado no banco e exibir no ComboBox e quando eu clicar enel, esse valor que foi trazido deve ficar selecionado de imediato como e comum nesse controle e quando eu clicar nele, os demais valores do Combo sao exibidos e so sera alterado o conteudo quando eu realmente selecioanar algum outro dado.
Obrigado e um Abraço
Ventana
Amigo, se quiser, poste o exemplo ai do seu programa, eu não consegui entender muito bem sua dúvida, se quiser pode me mandar por email que vejo o que tá acontecendo... cleber.al@hotmail.com
Valew!
Valew!
CmbItem.SelectedValue = ClassecomSeuitem;
LEMBRANDO EM WINDOWS FORMS VC DEVE CONVERTER O VALOR PARA COLOCALO NO SELECTED VALUE .
SE FOR INT CONVERTE PRA INT.
LEMBRANDO EM WINDOWS FORMS VC DEVE CONVERTER O VALOR PARA COLOCALO NO SELECTED VALUE .
SE FOR INT CONVERTE PRA INT.
SIDSIL,
Veja o exemplo que eu coloquei aqui (faça download do aquivo):
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=428706
[][ô]s,
Tunusat.
Veja o exemplo que eu coloquei aqui (faça download do aquivo):
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=428706
[][ô]s,
Tunusat.
Bom Dia Amigos
Bem, eu ainda estou com problemas na hora de trazer o conteudo gravado no banco para o ComboBox.
Claro que eu uso o Combobox e ja a algum anos,entretanto havia uma falha que finalmente eu resolvi corrigir e agora nao estou conseguindo.
Ja procurei na internet,inclusive aqui mesmo noVBMania mas ainda nao cheguei a uma conclusao.
O exemplo que mais me ajudou foi o do link abaixo mas ainda nao solucionou em definitivo.
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=428706
Atualmente estou fazendo assim:
CboMeuCombo.ListIndex = CDbl([Ô]0[Ô] & rsPais!ID_REGIAO) - 1
Como o indice do combo começa no [Ô]0[Ô], subtrai [Ô]1[Ô] do [Ô]ID[Ô] gravado,para trazer o ID correto.Entretanto nao esta funcionando totalmente, as vezes traz a informacao correta no Combo e as vezes traz a informacao do [Ô]ID[Ô] imediatamente superior,ou seja, se o [Ô]ID[Ô] e [Ô]4[Ô],traz a informacao referente ao [Ô]ID [Ô]5[Ô].
Nao encontrei nenhuma relacao nisso.
Alguem pode me ajudar.
Obrigado e um Abraço
Bem, eu ainda estou com problemas na hora de trazer o conteudo gravado no banco para o ComboBox.
Claro que eu uso o Combobox e ja a algum anos,entretanto havia uma falha que finalmente eu resolvi corrigir e agora nao estou conseguindo.
Ja procurei na internet,inclusive aqui mesmo noVBMania mas ainda nao cheguei a uma conclusao.
O exemplo que mais me ajudou foi o do link abaixo mas ainda nao solucionou em definitivo.
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=428706
Atualmente estou fazendo assim:
CboMeuCombo.ListIndex = CDbl([Ô]0[Ô] & rsPais!ID_REGIAO) - 1
Como o indice do combo começa no [Ô]0[Ô], subtrai [Ô]1[Ô] do [Ô]ID[Ô] gravado,para trazer o ID correto.Entretanto nao esta funcionando totalmente, as vezes traz a informacao correta no Combo e as vezes traz a informacao do [Ô]ID[Ô] imediatamente superior,ou seja, se o [Ô]ID[Ô] e [Ô]4[Ô],traz a informacao referente ao [Ô]ID [Ô]5[Ô].
Nao encontrei nenhuma relacao nisso.
Alguem pode me ajudar.
Obrigado e um Abraço
colega não estou entendendo, mas vamos do principio, como você preenche o combo, coloque o código por favor.
depois diga explicadamente o que vc quer fazer pois ainda não entendi completamente.
depois diga explicadamente o que vc quer fazer pois ainda não entendi completamente.
SIDSIL Boa tarde!
Concordo como o Marcelo, melhor postar codigo mais amplamente!
Pelo pouco que entendi vc esta vinculando o ID do registro ao index do combobox,o que não acho viável até porque se mudar a ordem de classificação de qualquer registro pode mudar index (se for isso).
Já tentou assim
Na hora de salvar vs utiliza só o ID..
Se não for nada diso ...deleta, rsrsrrss
Concordo como o Marcelo, melhor postar codigo mais amplamente!
Pelo pouco que entendi vc esta vinculando o ID do registro ao index do combobox,o que não acho viável até porque se mudar a ordem de classificação de qualquer registro pode mudar index (se for isso).
Já tentou assim
CboMeuCombo.additem format(rsPais!ID_REGIAO,[Ô]000[Ô]) &[Ô] - [Ô] & rsPais!INomePais
Na hora de salvar vs utiliza só o ID..
Se não for nada diso ...deleta, rsrsrrss
Boa Tarde MARCELO-TREZE, muito obrigado por sua ajuda.
Eu populo o ComboBox sem problemas, dai seleciono um item e gravo no banco.Supondo que eu tenho um banco com as unidades federativas.Seleciono uma, [Ô]SP[Ô] por exemplo e a gravo,atraves do ID do item selecionado.
Em uma rotina de alteracao quando eu for trazer os dados do banco, eu quero que o Combo exiba [Ô]SP[Ô],pois foi essa unidade que eu selecionei.
Para trazer o dado do cambo, como disse faço assim : MeuCombo.ListIndex = ID - 1 (referente a UF.)
Obrigado e um Abraço
Eu populo o ComboBox sem problemas, dai seleciono um item e gravo no banco.Supondo que eu tenho um banco com as unidades federativas.Seleciono uma, [Ô]SP[Ô] por exemplo e a gravo,atraves do ID do item selecionado.
Em uma rotina de alteracao quando eu for trazer os dados do banco, eu quero que o Combo exiba [Ô]SP[Ô],pois foi essa unidade que eu selecionei.
Para trazer o dado do cambo, como disse faço assim : MeuCombo.ListIndex = ID - 1 (referente a UF.)
Obrigado e um Abraço
Bem, eu nao postei o codigo porque nao achei necessario, ja que a gravacao esta correta e o problema ocorre no momento de trazer a informacao do banco e exibi-la no Combo.
Para grava-la eu utilozo o MeuCombo.ItemData(MeuCombo.ListIndex) que nada mais é do que o meu ID.
rs!ID_REGIAO = CboRegiao.ItemData(CboRegiao.ListIndex) (Gravo o item selecionado no banco)
CarregaControle CboRegiao, [Ô]REGIAO[Ô], [Ô]ID[Ô], [Ô]Nome[Ô] (Uso essa funcao para carregar todos os dados do Combo)
CarregaControle = Funcao a ser chamada
CboRegiao = Nome do Combo
REGIAO = Nome da Tabela
ID = Campo ID do banco que tera o codigo da informacao a ser trazida do banco
Nome = Campo do Banco que sera exibido no Combo.
Como disse essa funcao ira apenas preencher o combobox, com todos os registros da tabela,inclusive na rotina de alteracao.
Depois disso, eu tento jogar para o combo o item que eu quero que apareça quando eu estiver na alteracao, afinal selecionarei um registro e quero que os dados dele sem exibidos e é nesse momento que a UF [Ô]SP[Ô] que eu gravei inicialmente devera ser exibida.
Vamos supor que o ID da UF [Ô]SP[Ô] seja 3, entao eu gravei o ID 3 e quando eu quiser que o [Ô]SP[Ô] seja exibido devo jogar o conteudo desse ID para dentro do combo.Faço isso assim
MeuCombo.ListIndex = ID (ID do banco)
na verdade eu ja coloquei ID - 1,ou ID + 1, em algumas situações.Porem em alguns registros da certo na hora de trazer a informacao correta e em outros registros e trazido um registro com ID acima/abaixo do que foi gravado.Essa falta de logica e que me deixou confuso.
Aceito sugestoes.
Obrigado e um Abraço
Para grava-la eu utilozo o MeuCombo.ItemData(MeuCombo.ListIndex) que nada mais é do que o meu ID.
rs!ID_REGIAO = CboRegiao.ItemData(CboRegiao.ListIndex) (Gravo o item selecionado no banco)
CarregaControle CboRegiao, [Ô]REGIAO[Ô], [Ô]ID[Ô], [Ô]Nome[Ô] (Uso essa funcao para carregar todos os dados do Combo)
CarregaControle = Funcao a ser chamada
CboRegiao = Nome do Combo
REGIAO = Nome da Tabela
ID = Campo ID do banco que tera o codigo da informacao a ser trazida do banco
Nome = Campo do Banco que sera exibido no Combo.
Como disse essa funcao ira apenas preencher o combobox, com todos os registros da tabela,inclusive na rotina de alteracao.
Depois disso, eu tento jogar para o combo o item que eu quero que apareça quando eu estiver na alteracao, afinal selecionarei um registro e quero que os dados dele sem exibidos e é nesse momento que a UF [Ô]SP[Ô] que eu gravei inicialmente devera ser exibida.
Vamos supor que o ID da UF [Ô]SP[Ô] seja 3, entao eu gravei o ID 3 e quando eu quiser que o [Ô]SP[Ô] seja exibido devo jogar o conteudo desse ID para dentro do combo.Faço isso assim
MeuCombo.ListIndex = ID (ID do banco)
na verdade eu ja coloquei ID - 1,ou ID + 1, em algumas situações.Porem em alguns registros da certo na hora de trazer a informacao correta e em outros registros e trazido um registro com ID acima/abaixo do que foi gravado.Essa falta de logica e que me deixou confuso.
Aceito sugestoes.
Obrigado e um Abraço
Entendi vc quer que seja selecionado o estado pelo ID armazenado no itemdata, bom faça assim
cole esta função em seu código
a função acima valerá para todos os combos do seu projeto, basta indicar o nome do objeto e o numero do id veja
era esse o problema?
cole esta função em seu código
Public Sub SelectItemData(ctl As Control, Id As Integer)
Dim nCnt As Long
If TypeName(ctl) = [Ô]ComboBox[Ô] Or TypeName(ctl) = _
[Ô]Combobox[Ô] Then
For nCnt = 0 To ctl.ListCount - 1
If ctl.ItemData(nCnt) = Id Then
ctl.ListIndex = nCnt
Exit For
End If
Next
End If
End Sub
a função acima valerá para todos os combos do seu projeto, basta indicar o nome do objeto e o numero do id veja
SelectItemData cboRegiao, 2[txt-color=#007100] [ô] no caso sera selecionado o itemdata 2[/txt-color]
era esse o problema?
Boa Tarde
Bem MARCELO-TREZE, fiz alguns testes e parece que funcionou.
Obrigado e um Abraço
Bem MARCELO-TREZE, fiz alguns testes e parece que funcionou.
Obrigado e um Abraço
Tópico encerrado , respostas não são mais permitidas