COMBOBOX
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?
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?
FAZ ASSIM ANTES DO LAÇO
COMBO1.CLEAR
COMBO1.CLEAR
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?
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?
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.
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.
Muito obrigado, Saco. Valeu.
Xyko.
Xyko.
Tópico encerrado , respostas não são mais permitidas