COMBOBOX
Estou trabalhando em um projeto onde utilizo normalmente uma combobox que é preenchida com base em um banco de dados. mas ao alterar o lançamento preciso ler as informação gravadas no banco de dados e o código gravado deve abrir a combobox no item de acordo com o código, a minha combo esta abrindo de acordo com o indice: por exemplo ABC = 3, quando abro o lançamento e ABC esta na quinta posição ele ao inves de preencher a combo com ABC abre com a informação q esta na 3º posição.
coloca o fonte de preencgimento!
tenho um tabela com os seguintes registros:
Campo auto numeração Registro
1 AAA
2 BBB
3 EEE
4 DDD
5 CCC
quando preencho minha combo coloco o campo regsitro em ordem alfabetica, e gravo o campo auto numeração em uma tabela, quando vou ler este campo na tabela quero que a compo receba o campo cuto numeração mas ele fica desordenado. ex o 5 CCC fica na terceira posição e ao invés de abri o CCC abre o EEE
Campo auto numeração Registro
1 AAA
2 BBB
3 EEE
4 DDD
5 CCC
quando preencho minha combo coloco o campo regsitro em ordem alfabetica, e gravo o campo auto numeração em uma tabela, quando vou ler este campo na tabela quero que a compo receba o campo cuto numeração mas ele fica desordenado. ex o 5 CCC fica na terceira posição e ao invés de abri o CCC abre o EEE
Dependendo o que for sobre seu projeto, voce deve alterar essa lógica.
Um exemplo:
A tabela suporta registro com Letras iguais?
ex. 1 AAA
2 AAA
Caso não suportar é cabivel tirar o campo código e usar apenas o campo dos Registros e usa-las como chave-primária para não receber valores iguais, e com
isso vai facilitar a pesquisa dos registros.
Um exemplo:
A tabela suporta registro com Letras iguais?
ex. 1 AAA
2 AAA
Caso não suportar é cabivel tirar o campo código e usar apenas o campo dos Registros e usa-las como chave-primária para não receber valores iguais, e com
isso vai facilitar a pesquisa dos registros.
Tente Assim
Usando ADO
Usando DAO
Ve se funciona
Usando ADO
SuaCombo.Clear
Rst.Open [Ô]SELECT * FROM SuaTabela ORDER BY REGISTRO[Ô], SuaConexão, adOpenForwardOnly, adLockOptimistic
Do Until Rst.EOF
SuaCombo.AddItem Rst!REGISTRO
Rst.MoveNext
Loop
Rst.Close
Set Rst = Nothing
Usando DAO
SuaCombo.Clear
Set Rst = SuaConexão.OpenRecordset([Ô]SELECT * FROM SuaTabela ORDER BY REGISTRO[Ô])
Do Until TABC.EOF
SuaCombo.AddItem Rst([Ô]REGISTRO[Ô])
Rst.MoveNext
Loop
Rst.Close
Set Rst = Nothing
Ve se funciona
Bom o juliano até solicitou a forma como vc preenche o combo, e é ai que está o problema
veja como deveria preencher:
a forma postada acima é a maneira ideal de preencher o combo, na realidade o campo autonum não aparecerá porém ele estará no itemdata do combo, assim vc poderá selecionar conforme necessário
ex:
No click do Combo
da forma descrita acima ao se clicar em qualquer nome será exibido seu numero de cadastro
veja como deveria preencher:
sSQL = [Ô]SELECT * FROM tabela[Ô]
Set RS = CNN.Execute(sSQL)
Do While Not RS.EOF
Combo1.AddItem RS!Registro
Combo1.ItemData(Combo1.NewIndex) = RS!CampoAutoNum
RS.MoveNext
Loop
a forma postada acima é a maneira ideal de preencher o combo, na realidade o campo autonum não aparecerá porém ele estará no itemdata do combo, assim vc poderá selecionar conforme necessário
ex:
No click do Combo
Msgbox Combo1.Itemdata(Combo1.ListIndex)
da forma descrita acima ao se clicar em qualquer nome será exibido seu numero de cadastro
Tópico encerrado , respostas não são mais permitidas