CARREGAR DADOS EM COMBOBOX

HGZICA 23/08/2012 14:49:35
#408463
Boa tarde,

tenho um banco de dados com 2 colunas NOME e CPF

quero carregar os NOMES em um ComboBox mais que sejam associados a seus respectivos CPF.

Tenho um FORM com 1 TextBox eo ComboBox

No TextBox vou por uma placa e essa placa sera usada com o CPF do NOME selecionado.

Alguém por favor, pode me ajudar???

MARCELO.TREZE 23/08/2012 15:10:28
#408465
Resposta escolhida
se o cpf estiver formatado terá que tirar a formatação ex: 123.456.789-0 tem que ser 1234567890


sSQL = [Ô]SELECT * FROM tabela[Ô]
Set Rs = Con.Execute(sSQL)
Do While Not Rs.EOF
With Combo1
.AddItem Rs!Nome
.ItemData(.NewIndex) = Rs!CPF [ô] caso não haja formatação no cpf
End With
Rs.MoveNext
Loop


para comprara este cpf posteriormente

no clique do combo

Text1.Text = Combo1.ItemData(Combo1.Listindex)


e vc terá o cpf

CASSIOJFF 23/08/2012 15:11:32
#408466
nao sei se é isso, mas voce poderia colocar o cpf no index do combo quando adicionar o item

tipo


combo.additem nome
combo.itemdata(combo.newindex) = cpf

obs nao poderia de forma alguma existir cpf s iguais, mas nao sei se o campo de indice pode com um numero tao grande como o cpf

MARCELO.TREZE 24/08/2012 11:31:35
#408552
é não havia me atento a isso o cpf no item data vai gerar um erro overlaw.

então faça assim, crie uma array dinamica do tipo strng, e nela você não terá nem problema com formatação
veja


Dim CPF() As String, i As Integer
i = 0
sSQL = [Ô]SELECT * FROM tabela[Ô]
Set Rs = Con.Execute(sSQL)
Do While Not Rs.EOF
Combo1.AddItem Rs!Nome
Redim Preserve CPF(i) As String
CPF(i) = Rs!CPF
i = i + 1
Rs.MoveNext
Loop



ai sim vc pode ler o cpf assim

MsgBox cpf(Combo1.ListIndex)
HGZICA 24/08/2012 13:08:37
#408572
Boa tarde pessoal!

mew não to conseguindo, ta dando o seguinte erro:

[txt-color=#0000f0]Run-time error [ô]6[ô]:

Overflow[/txt-color]

O código ta assim...


[txt-color=#0000f0]Dim cn As New ADODB.Connection

Private Sub CountryLst_Click()
Text1.Text = CountryLst.ItemData(CountryLst.ListIndex)
End Sub

Private Sub Form_Load()
cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\motoristas.mdb;Persist Security Info=False[Ô]
cn.Open
Dim rs As New ADODB.Recordset
rs.ActiveConnection = cn
rs.Source = [Ô]Select *from DADOS_MOT where NOME[Ô]
rs.Open
IPDetail.ListItems.Clear
Do While Not rs.EOF
With CountryLst
.AddItem rs!NOME
.ItemData(.NewIndex) = rs!CPF
End With
rs.MoveNext
Loop
End Sub[/txt-color]

Alguma sugestão???
MARCELO.TREZE 24/08/2012 13:12:47
#408573
eu ja havia postado a solução acima, veja como adptar ao seu código

Dim cn As New ADODB.Connection
Dim CPF() As String, i As Integer


Private Sub Form_Load()
cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & App.Path & [Ô]\motoristas.mdb;Persist Security Info=False[Ô]
cn.Open
Dim rs As New ADODB.Recordset
rs.ActiveConnection = cn
rs.Source = [Ô]Select *from DADOS_MOT where NOME[Ô]
rs.Open
IPDetail.ListItems.Clear
i = 0
Do While Not rs.EOF
With CountryLst
.Combo1.AddItem Rs!Nome
Redim Preserve CPF(i) As String
CPF(i) = rs!CPF
i = i + 1
End With
rs.MoveNext
Loop
End Sub



para depois saber o cpf é só fazer assim, no click do combo

Private Sub CountryLst_Click()
Text1.Text = CPF(CountryLst.ListIndex)
End Sub
CASSIOJFF 24/08/2012 13:13:16
#408574
Foi como eu comentei e ai depois o treze verificou que vc nao pode colocar o cpf no index, pois ele é muito grande, tem q criar um array dinamico pra ai sim poder colocar o cpf com o mesmo indice do nome


HGZICA 24/08/2012 13:16:44
#408575
MARCELO-TREZE, Muito Obrigado Brother .. deu certo!
MARCELO.TREZE 24/08/2012 13:20:55
#408577
Abraço colega disponha

Tópico encerrado , respostas não são mais permitidas