COMBOBOX

JAFREITAS 10/11/2011 23:41:13
#388924
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.
JULIANOPAN 11/11/2011 07:12:44
#388925
coloca o fonte de preencgimento!
JAFREITAS 11/11/2011 19:56:36
#389007
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
CHARLESTON10 11/11/2011 22:41:29
#389023
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.

FILMAN 12/11/2011 19:57:28
#389048
Tente Assim

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
MARCELO.TREZE 12/11/2011 20:06:07
#389051
Bom o juliano até solicitou a forma como vc preenche o combo, e é ai que está o problema
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