CARREGAR COMBO

USUARIO.EXCLUIDOS 14/01/2005 14:41:50
#60739
Olá Pessoal será que vocês poderiam me ajudar nisso

eu tenho dois combos um carrega o nome das empresas e o outro os códigos das mesmas empresas

cmbDestino.Clear
cmbCodDestino.Clear
' se retornou dados no recordset
If (Not rstRs.EOF) And (Not rstRs.BOF) Then
Do While Not rstRs.EOF
' preenche o combo Banco Avisador
cmbDestino.AddItem rstRs!NM_REDUZ
cmbCodDestino.AddItem rstRs!CD_PAT_RELCN

cmbCodDestino.ItemData(cmbCodDestino.NewIndex) = rstRs!CD_PAT_RELCN
cmbDestino.ItemData(cmbDestino.NewIndex) = rstRs!CD_PAT_RELCN
rstRs.MoveNext
Loop

Carrega_Cmb_Empresas_Relac_Tipo2 = True

Else
' não existem moedas cadastradas na base
strErro = "Não existem Empresas Relacionadas cadastrados."
End If

mas o problema é o seguinte qdo eu selecionar a empresa tem que carregar o cod, se carregar o cod tem que carregar a empresa, mas me perdi com index, list e itemdata...

Alguem poderia me ajudar?
desde já obrigado
att,
Iran
USUARIO.EXCLUIDOS 14/01/2005 15:05:23
#60750
Private sub ArrumarCombo(cmb as combobox, byval ItemData as integer)
dim i as integer

if itemData <> cmb.ItemData(cmb.ListIndex) then
for i = 0 to cmb.listcount - 1
if cmb.itemdata(i) = itemData then
cmb.listindex = i
exit for
endif
next i
endif

end sub


no click do combo destino:
ArrumarCombo cmbCodDestino, cmbDestino.ItemData(cmbDestino.listindex)

no click do combo codigo destino:
ArrumarCombo cmbDestino, cmbCodDestino.ItemData(cmbCodDestino.listindex)
FGSANTOS 14/01/2005 15:05:35
#60751
Coloca no LostFocus de um e do outro, trocando a referencia:

Private Sub cboClientes_LostFocus()
cboCodigo = cboClientes.ItemData(cboClientes.ListIndex)
End Sub

Private Sub cboCodigo_LostFocus()
cboClientes = cboCodigo.ItemData(cboCodigo.ListIndex)
End Sub

Claro que os dois Combos tem que estar na mesma ordem.
THIAGO.CESAR 14/01/2005 15:38:44
#60761
Vamos fazer o seguinte: Como eu sempre me atrapalho com isso também, eu criei duas rotinas pra me auxiliar a carregar essa bagaceira.

Public Sub AddCtlKey(ctlControle As Control, ByVal Texto As String, ByVal Chave As Integer)
ctlControle.AddItem Texto
ctlControle.ItemData(ctlControle.NewIndex) = Chave
End Sub

Public Function GetCtlKey(ctlControle As Control) As Integer
GetCtlKey = ctlControle.ItemData(ctlControle.ListIndex)
End Function


Então você faria mais ou menos assim
'Aqui você preenche as combos, uma com os nomes e seus respectivos códigos e outra somente com os códigos...

While not rstrs.eof
addctlkey cmbdestino,NomeDestino,CodigoDestino
cmbCodDestino.AddItem CodigoDestino
wend

No evento do cmbDestino, você faz mais ou menos assim:
cmbcoddestino.text = getkey(cmbdestino) 'Recebe o código (oculto) do destino escolhido

No evento do cmbcoddestino:
For i = 0 to cmbcoddestino.ListCount -1
'Verifica cada um dos itens ocultos do cmbDestino e quando achar o item referente ao codigo do destino, sai do loop
If cmbDestino.ItemData(i) = cmbcoddestino.text then cmbdestino.text = cmbcoddestino.list(i): exit for
Next


Espero ter contribuido em alguma coisa
THIAGO.CESAR 14/01/2005 15:41:01
#60764
Corrigindo:
No evento do cmbDestino, você faz mais ou menos assim:
cmbcoddestino.text = getctlkey(cmbdestino)
Tópico encerrado , respostas não são mais permitidas