CARREGAR COMBO
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
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
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)
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)
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.
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.
Vamos fazer o seguinte: Como eu sempre me atrapalho com isso também, eu criei duas rotinas pra me auxiliar a carregar essa bagaceira.
Então você faria mais ou menos assim
Espero ter contribuido em alguma coisa
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
Corrigindo:
No evento do cmbDestino, você faz mais ou menos assim:
cmbcoddestino.text = getctlkey(cmbdestino)
No evento do cmbDestino, você faz mais ou menos assim:
cmbcoddestino.text = getctlkey(cmbdestino)
Tópico encerrado , respostas não são mais permitidas