Notifications
Clear all

Combobox Preenchendo em branco

7 Posts
4 Usuários
0 Reactions
1,810 Visualizações
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

Tenho uma comobobox que ao clicar nela, as informações da coluna Local na tabela TB_Dados são carregadas.

Meu problema é como fazer para que o código leia apenas o conteúdo preenchido? da forma que está ele sempre adiciona linhas em branco devido ao... linhalistbox = linhalistbox + 1

   'Cria variável que armazena os comandos SQL
    Dim ComandoSQL As String
    
    'Armazena na variável o comando que fará a consulta SQL no BD Access
    ComandoSQL = "select * from tb_dados"
       
    'Chama a rotina que faz a conexão com o BD
    Call Conecta
    
    'Atribui a variável objeto de BD a execução dos comandos SQL
    Set consulta = banco.OpenRecordset(ComandoSQL)
    
    'Tratamento de erro de acesso aos dados. Se houver erro, desvia o comando para o rótulo Sai
    On Error Resume Next
        
    'Populando o listbox
    ComboBox1 = ""
    
    While Not consulta.EOF
          
    With Me.ComboBox1
    .AddItem
    .List(linhalistbox, "0") = consulta(0) 'ID
    '.List(txt_codigo, "1") = consulta(1) 'nome / razao
    
    End With
 linhalistbox = linhalistbox + 1
   
    
    consulta.MoveNext
    Wend
     
     
   Call Desconecta

  ' Me.lbl_registros = Me.ListBox1.ListCount
   

Welington Gonçalves

 
Postado : 17/11/2016 1:46 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Boa noite.
Já tentou editar a consulta no access?
tipo: é negado nulo na linha de crtérios?

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 17/11/2016 7:09 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Experimente com esta alteração:

Coloquei uma condição para o caso de null.

'Cria variável que armazena os comandos SQL
    Dim ComandoSQL As String
    
    'Armazena na variável o comando que fará a consulta SQL no BD Access
    ComandoSQL = "select * from tb_dados"
       
    'Chama a rotina que faz a conexão com o BD
    Call Conecta
    
    'Atribui a variável objeto de BD a execução dos comandos SQL
    Set consulta = banco.OpenRecordset(ComandoSQL)
    
    'Tratamento de erro de acesso aos dados. Se houver erro, desvia o comando para o rótulo Sai
    On Error Resume Next
        
    'Populando o listbox
    ComboBox1 = ""
    
    While Not consulta.EOF
     If Not IsNull(consulta(0)) Then
    With Me.ComboBox1
    .AddItem
    .List(linhalistbox, "0") = consulta(0) 'ID
    '.List(txt_codigo, "1") = consulta(1) 'nome / razao
    
    End With
     linhalistbox = linhalistbox + 1
     
      End If
    
    consulta.MoveNext
    Wend
     
     
   Call Desconecta

  ' Me.lbl_registros = Me.ListBox1.ListCount

Click em se a resposta foi util!

 
Postado : 17/11/2016 8:10 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Pra carregar a combobox eu costumo usar um range dinamico, assim sempre sera atualizado.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 18/11/2016 5:22 am
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

Basole,

usei o codigo que me passou e vi que realmente ele não me carrega valor nulo, porém veja na imagem abaixo a minha situação.

Isso ta acontecendo pq eu inicio meu form preenchendo a combobox e ao cadastrar um novo item eu uso a variavel "Call userform_initialize para que a combobox seja atualizada, e ao fazer isso essas linhas em brancos tbm são carregadas.

Welington Gonçalves

 
Postado : 18/11/2016 9:05 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

wfranca,

Quando voce recarega, o Combobox, ele nao esta sendo 'limpado'.
Experimente alterar a linha:

ComboBox1 = "" 

Por esta:

ComboBox1.Clear 

No codigo

Click em se a resposta foi util!

 
Postado : 19/11/2016 2:24 pm
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

Obrigado Basole,

era isso mesmo

Grato pela ajuda.

Welington Gonçalves

 
Postado : 19/11/2016 6:31 pm