[vb6] Select Count distinct

.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:
Boas .sys,
experimenta algo do tipo
Código:
SELECT Count(*) AS total FROM (SELECT distinct ip FROM conta)  AS diff


Espero que ajude
 
hmmm, eu testei aqui e funciona correctamente...
que versão do access estás a utilizar?

tem atenção a isto:
dif = conta.Recordset.Fields("diff") (guarda o valor do select)

O diff é o nome do select. Se queres ir buscar o nome do campo é "total" (no exemplo que fiz)
 
Última edição:
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)

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
 
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
 
Back
Topo