1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[vb6] Select Count distinct

Discussão em 'Programação' iniciada por .sys, 23 de Maio de 2012. (Respostas: 6; Visualizações: 1115)

  1. .sys

    .sys Power Member

    bem pessoa eu preciso de saber quantos id's diferentes tenho numa bd access , o problema e o seguinte
    ex : for x=1 to variavel do count distinct
    eu contei quantos ids tinha diferentes (sao 3) e fiz o for x=1 to 3 e deu resultado agora o problema e se é mais nao sao 3 xD
    logo tenho que fazer um select count(distinct variavel) para funcionar mais nada

    vejam

    Private Sub diferentes()
    conta.RecordSource = "SELECT COUNT (DISTINCT id) FROM conta as diff" (o meu select)
    conta.Refresh (para actualizar a bd com o select)
    dif = conta.Recordset.Fields("diff") (guarda o valor do select)
    conta.RecordSource = "select * from conta" (ele retira o select senao o select restringe o resto do programa ao select)
    End Sub

    ele devia ser assim so qe o vb6 com bd de access nao deixa agregar o count(distinct)
    e da-me o erro
    ERRO :
    error 3075 : syntax error (missing operator) in query expression 'COUNT (DISTINCT id)'

    obrigado pela voça ajuda
     
    Última edição: 23 de Maio de 2012
  2. Boas .sys,
    experimenta algo do tipo
    Código:
    SELECT Count(*) AS total FROM (SELECT distinct ip FROM conta)  AS diff

    Espero que ajude
     
  3. .sys

    .sys Power Member

    boas ptchaos , eu tambm ja tinha visto isso mas nao funciona :s
     
  4. hmmm, eu testei aqui e funciona correctamente...
    que versão do access estás a utilizar?

    tem atenção a isto:
    O diff é o nome do select. Se queres ir buscar o nome do campo é "total" (no exemplo que fiz)
     
    Última edição: 23 de Maio de 2012
  5. .sys

    .sys Power Member

    eu meti assim com o teu exemplo :

    conta.RecordSource = "SELECT Count(*) AS total FROM (SELECT distinct id FROM conta) AS diff"
    conta.Refresh
    dif = conta.Recordset.Fields("total")
    conta.RecordSource = "select * from conta"

    dame este erro
    erro 3131 : syntax error in FROM clause
     
  6. .sys

    .sys Power Member

    RESOLVIDO

    codigo resolvido :
    conta.RecordSource = "SELECT distinct id , count(id) as total from conta group by id"
    conta.Refresh
    conta.Recordset.MoveLast
    dif = conta.Recordset.RecordCount
    conta.RecordSource = "select * from conta"
    conta.Refresh
     
  7. Ao usares o recordcount não deves precisar disso tudo no select.
    Em principio isto basta:
    Código:
    SELECT distinct id from conta
     

Partilhar esta Página