CONTAR SEM REPETICOES

MARCELO.TREZE 07/10/2011 10:30:22
#386188
se não funcionar tente esta alteração

Private Sub numerodepessoas()
Dim ws As DAO.Workspace
Dim Db As DAO.Database
Dim StrSql As String
Dim Rs As DAO.Recordset

Set ws = DBEngine.Workspaces(0)
Set Db = ws.OpenDatabase(CurrentProject.Path & [Ô]    este.accdb[Ô], False, False, [Ô]MS Access;PWD=senha[Ô])

StrSql = [Ô]SELECT Count(Distinct (numero)) as total1 FROM teste Group By tarefas[Ô]
Set Rs = Db.OpenRecordset(StrSql)
Do While Not Rs.EOF
List1.AddItem Rs.Fields([Ô]projeto[Ô]) & [Ô]:[Ô] & Rs.Fields([Ô]tarefas[Ô]) & [Ô] = [Ô] & Rs.Fields([Ô]total1[Ô])
Rs.MoveNext
Loop
End Sub
FLASHED 07/10/2011 10:36:58
#386190
Na linha
Set Rs = Db.OpenRecordset(StrSql)

Da-me este erro:
A função distint não está defenida na função
MARCELO.TREZE 07/10/2011 10:44:22
#386194
outro teste

StrSql = [Ô]SELECT Distinct(numero), Count(numero) as total1 FROM teste Group By tarefas[Ô]
MARCELO.TREZE 07/10/2011 10:59:14
#386199
estudando um pouco mais o caso descobri que count com distinct é uma limitação do ACCESS porém existe outra alternativa que seria mais ou menos assim

StrSql = [Ô]SELECT Count(numero) as total1 FROM (SELECT DISTINCT numero FROM teste Group By tarefas)[Ô]
IRENKO 07/10/2011 12:31:31
#386219
Tente isso:
StrSql = [Ô]SELECT Count(Codigo) AS TOTAL, Codigo AS Numero FROM Teste Group By Codigo;[Ô]

Fiz um teste aqui e funcionou.

Fica assim usando ADO:


Private Sub numerodepessoas()
Dim Busca As Recordset
Dim StrSql As String
Set Busca = New ADODB.Recordset

StrSql = [Ô]SELECT Count(Codigo) AS Total, Codigo as Numero FROM Pessoas Group By Codigo;[Ô]
Busca.Open StrSql, Conexao, adOpenKeyset, adLockPessimistic

Do While Not Busca.EOF
List1.AddItem BuscaReq.Fields([Ô]Numero[Ô]) & [Ô] = [Ô] & Busca.Fields([Ô]Total[Ô])

Busca.MoveNext
Loop
End Sub
Página 2 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas