COMBOBOX

XYKOVIEIRA 01/04/2011 10:31:35
#370037
Galera, estou com um problema ao utilizar entrada de dados via combobox (VB6)
Criei um pequeno aplicativo, onde um dos campos é uma combobox. Eis os comandos associados ao preenchimento da combo:

Option Explicit
Dim Cliente As Database [ô]Acessa o banco
Dim Tabela As Recordset [ô]Acessa a tabela
Dim RS As Recordset [ô]Outro acesso à tabela

Private Sub cmbNome_GotFocus()
SendKeys ([Ô]{F4}[Ô]) [ô]Exibe os dados quando recebe o foco
End Sub

Private Sub Form_Load()
Set Cliente = OpenDatabase(App.Path & [Ô]\Costumers.mdb[Ô]) [ô]Abre o banco
Set Tabela = Cliente.OpenRecordset([Ô]TabCombo[Ô], dbOpenTable) [ô]Abre a tabela
Tabela.Index = [Ô]Number[Ô] [ô]Associa o index
Set RS = Cliente.OpenRecordset([Ô]Select distinct(Nome)From TabCombo[Ô]) [ô]carrega os dados cadastrados na base de dados.
While Not RS.EOF
cmbNome.AddItem RS!Nome
RS.MoveNext
Wend
cmdGravar.Enabled = False
txtNumero.Locked = True
txtData.Locked = True
cmbNome.Locked = True
End Sub

O que acontece é o seguinte: o cadastro ocorre normalmente. Mas, quando vou cadastrar um novo ítem, ao abrir a lista da combobox, os nomes
cadastrados aparecem triplicados ou quadruplicados... Ou seja, se for escolher um nome da lista, haverá diversos nomes idênticos nela, porém
sem refletir na base de dados.... A propriedade da combo é [ô]combo dropdown[Ô]....
Com base nas rotinas acima, como devo fazer para que, ao escolher um dos nomes da lista, esse nome não seja duplicado ou triplicado na lista?
Alguém pode ajudar?
SACOFRITO 01/04/2011 10:51:34
#370044
Resposta escolhida
FAZ ASSIM ANTES DO LAÇO

COMBO1.CLEAR
XYKOVIEIRA 01/04/2011 12:42:37
#370062
Opa....
Não deu certo.... Continua duplicando a lista, cada vez que escolho um determinado nome...
Coloquei <cmbNome.Clear> antes da linha <Set RS = Cliente>; depois coloquei antes de <While Not RS.EOF>, porém, continua a duplicação ou triplicação (se tento cadastrar o mesmo nome + de duas vezes)....
Tem alguma outra dica?
SACOFRITO 01/04/2011 14:50:43
#370091
Vou postar como eu preencho, talvez ajude

set dsCliente = db.openrecordset([Ô]select * from clientes[Ô], dbopendynaset)

cmbCliente.clear
do while not dscliente.eof
cmbcliente.additem dscliente!nome
dscliente.movenext
loop

Nunca me deu problema rs.
XYKOVIEIRA 01/04/2011 18:36:47
#370115
Muito obrigado, Saco. Valeu.
Xyko.
Tópico encerrado , respostas não são mais permitidas