RECUPERAR VALOR NO COMBOBOX

SIDSIL 14/09/2013 19:37:50
#428849
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
CLEBERBALMEIDA 16/09/2013 09:04:20
#428884
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!
LUISCAMPANA12 16/09/2013 17:42:54
#428919
CmbItem.SelectedValue = ClassecomSeuitem;


LEMBRANDO EM WINDOWS FORMS VC DEVE CONVERTER O VALOR PARA COLOCALO NO SELECTED VALUE .
SE FOR INT CONVERTE PRA INT.
TUNUSAT 17/09/2013 07:49:04
#428934
Resposta escolhida
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.
SIDSIL 23/10/2013 10:04:46
#430301
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
MARCELO.TREZE 23/10/2013 11:25:45
#430309
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.
ALELUIZ 23/10/2013 13:26:44
#430321
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

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


SIDSIL 23/10/2013 15:34:56
#430324
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
SIDSIL 23/10/2013 16:07:43
#430329
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


MARCELO.TREZE 23/10/2013 16:38:59
#430334
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

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?

SIDSIL 27/10/2013 16:11:30
#430425
Boa Tarde

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