Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Listbox itens iguais


Matheus-vb6

Pergunta

Como faço para que o listbox não aceite valores iguais?

Exemplo

Private Sub cmbLogin_Click()
abrebanco
If cmbLogin.Text <> Empty Then
Set rsdados = New ADODB.Recordset
rsdados.Open "select * from log", cn
Do While rsdados.EOF = False
If rsdados("Login") = cmbLogin.Text Then cmbData.AddItem rsdados("Data")
rsdados.MoveNext
Loop
End If
fechabanco
End Sub

Ele esta adicionando as datas de login e logoff, porem existem datas repitidas, como faço para o list não adicionar valores iguais?

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

mas essas datas são do mesmo login?? você pode diferenciar pelo login, porem se não é o caso queira apenas as datas mesmo, você pode controlar isso pelo banco, não deixando inserir valores repetidos. Pode também na sua consulta utilizar o Group By, com isso não teria o valor repetido.

última alternativa seria que a cada valor antes de inserir ele percorresse todo o listBox e verificaria o valor que está inserindo, porem essa eu acho que seria última alternativa mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

Estava me referindo ao campo "data" da tabela, você informou que sua tabela tem os campos "Codigo" "login" "nome" "entrada" e "saida", na minha lógica se cada pessoa tem um login( único e exclusivo) não existe a possibilidade de ele ter duas entradas no mesmo dia, a não ser que, conte as saídas de almoço, por exemplo, mas não teria como ter "dia e Hora" com o mesmo valor, por isso não deveria duplicar, se está duplicando é porque não está sendo feito o filtro pelo login.

reparando melhor seu código vi um erro.

Do While rsdados.EOF = False
If rsdados("Login") = cmbLogin.Text Then cmbData.AddItem rsdados("Data")
rsdados.MoveNext
Loop ' você está fechando o Loop sem fechar o if
End If
ele pode (e deve) esta se perdendo ai.
'Tente o código desta maneira
Do While rsdados.EOF = False
If rsdados("Login") = cmbLogin.Text Then 
       cmbData.AddItem rsdados("Data")
End If
rsdados.MoveNext
Loop

Link para o comentário
Compartilhar em outros sites

  • 0

raphael, não tem problema no if não.

se vai haver apenas uma instrucao dentro dele, você pode escreve-la na mesma linha e não vai precisar de end if.

esse tipo de erro de comandos não fechados ou fechados em lugar errado, o visual basic nem tenta executar a sub, ele sempre aponta o erro antes.

EDITADO:

mas acho q a ideia do group by ta valendo. (group by: http://www.w3schools.com/sql/sql_groupby.asp)

alem do mais, matheus, em vez de checar cada registro com um if, não era mais facil filtrar a query com um where direto??

to vendo q você fecha o banco no final da sub. isso significa q você não usa o recordset pra mais nd certo?? então, você não vai precisar dos outros registros, nem dos outros campos alem da data nesse select. então, um where e um group by devem resolver e simplificar o codigo.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

vou postar um prnt de como ta meu banco da dados...

93395350.png

52398145.png

Ali do lado de login, eu pretendia por um combo data... mas tipo, não queria q listasse as datas repitidas....

vou ver sobre esse group by :)

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

matheus, com o where (http://www.w3schools.com/sql/sql_where.asp) você filtra os dados e com o group by (http://www.w3schools.com/sql/sql_groupby.asp) você seleciona somente 1 de cada data.

depois, no evento clique do listbox, você faz um novo select pra pegar os horarios referentes a essa data (usando o where de novo):

Private Sub cmbLogin_Click()
    abrebanco
    If cmbLogin.Text <> Empty Then
        Set rsdados = New ADODB.Recordset
        rsdados.Open "Select data From log Where login = '" & cmbLogin.Text & "' Group By data", cn
        Do While rsdados.EOF = False
            cmbData.AddItem rsdados("Data")
            rsdados.MoveNext
        Loop
    End If
    fechabanco
End Sub[/code]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...