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 & "\teste.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 & "\teste.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
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 & "\teste.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 & "\teste.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