CONTAR SEM REPETICOES

FLASHED 04/10/2011 06:01:58
#385834
Boas

Estou a tentar contar o numero de funcionário que estiveram a trabalhar numa determinada maquina e a fazer um Distinct sobre eles! Pois quero o total de funcionários que tiveram a trabalhar mas sem repetições!

Dai estar a tentar juntar o distinct e o count! Mas não esta a dar lá muito resultado!
Como fazo para contar o números de pessoas mas sem contar a mesma pessoa duas vezes.

Código:

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 Distinct (numero) as total1 FROM teste WHERE projecto = [ô][Ô] & Me.txtID & [Ô][ô] And tarefa = [Ô] & CInt(Me.Text54)
Set Rs = Db.OpenRecordset(StrSql)
Rs.MoveFirst
Do
CurrentDb.Execute [Ô]UPDATE Horas SET numerodepessoas=[ô][Ô] & Rs.Fields([Ô]total1[Ô]) & [Ô][ô] WHERE projecto =[ô][Ô] & Me.txtID & [Ô][ô] And tarefa=[Ô] & Me.Text54 & [Ô];[Ô]
Rs.MoveNext
Loop
End Sub

/////////////////////////////////////////////

Private Sub Horas()
On Error GoTo TrataErro
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim ws As DAO.Workspace
Dim StrSql As String
Dim StrNumFunc As String
Dim inti As Integer

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

StrSql = [Ô]SELECT * FROM Horas[Ô]

Set Rs = Db.OpenRecordset(StrSql)
StrNumFunc = DCount([Ô]*[Ô], [Ô][Horas][Ô])
inti = 0
fInLoop = True
fExitLoop = False
Do Until inti >= StrNumFunc Or fExitLoop
DoEvents
inti = inti + 1
Me.txtInti = inti
Me.txtID = Rs!projecto
Me.Text54 = Rs!tarefa
Rs.MoveNext


Call numerodepessoas

Loop
fInLoop = False
Exit Sub
TrataErro:
If Err.Number = 2220 Then
MsgBox [Ô]XXXXX[Ô]
Else
Resume Next
End If
End Sub
OMAR2011 04/10/2011 07:56:11
#385843
Select Data,Sum(horas) as TotHoras From Horas Group By Data,TotHoras.
é mais ou menos desse jeito que faço.
MARCELO.TREZE 04/10/2011 12:49:52
#385921
vc usaria o count mesmo, juntamente com o Group By

algo detse tipo

SELECT COUNT([txt-color=#0000f0]funcionarios[/txt-color]) As TotalFunc FROM tabela GROUP BY [txt-color=#0000f0]maquina[/txt-color]

MARCELO.TREZE 06/10/2011 11:27:34
#386100
Outra maneira

SELECT COUNT(DISTINCT(funcionario)) as quant  FROM  tabela

FLASHED 06/10/2011 11:30:45
#386101
Peço desculpa...Mas eu andei a procura do tópico e não o encontrei. Então abri outro


Marcelo testei o que falou mas não deu.... Não escreve nada!
MARCELO.TREZE 06/10/2011 17:22:18
#386137
faz o seguinte qual o nome dos campos do funcionário e o da maquina?
FLASHED 07/10/2011 06:11:14
#386160
Func - numero
Maquina - tarefas
MARCELO.TREZE 07/10/2011 10:10:27
#386176
tenta esta query

StrSql = [Ô]SELECT Count(Distinct (numero)) as total1 FROM teste WHERE projecto = [ô][Ô] & Me.txtID & [Ô][ô] Group By tarefas[Ô]
RODRIGOFERRO 07/10/2011 10:15:55
#386179
Citação:

:
tenta esta query

StrSql = [Ô]SELECT Count(Distinct (numero)) as total1 FROM teste WHERE projecto = [ô][Ô] & Me.txtID & [Ô][ô] Group By tarefa[Ô]



tarefas*
FLASHED 07/10/2011 10:21:33
#386180
Consigo mostrar esse valor numa textbox?
Porque não me escreve nada nas celulas, acho que posso ter um problema com o update.
MARCELO.TREZE 07/10/2011 10:27:04
#386184
então vamos testar

coloque um listbox no seu form e faça assim

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 WHERE projecto = [ô][Ô] & Me.txtID & [Ô][ô] Group By tarefas[Ô]
Set Rs = Db.OpenRecordset(StrSql)
Do While Not Rs.EOF
List1.AddItem Rs.Fields([Ô]tarefas[Ô]) & [Ô] = [Ô] & Rs.Fields([Ô]total1[Ô])
Rs.MoveNext
Loop
End Sub

Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas