Alexandre Neves- Moderador Global
- Respeito às regras :
Sexo :
Localização :
Mensagens : 8498
Registrado : 05/11/2009
Alexandre Neves 10/7/2013, 17:47
Boa tarde,
Function Mediana(Tabela As String, Campo As String, Optional NomeCampoAgrupamento As String = "", Optional CampoAgrupamento) As Double
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' '
' código criado por Alexandre Neves, do Fórum MaximoAccess '
' o código pode ser utilizado livremente, desde que mencionado este cabeçalho '
' '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'em 2013-07-10 para toxicsquall
Dim Rst As DAO.Recordset
If NomeCampoAgrupamento = "" Then
Set Rst = CurrentDb.OpenRecordset("SELECT [" & Campo & "] FROM [" & Tabela & "] ORDER BY [" & Campo & "];")
Else
Set Rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Tabela & "];")
Select Case Rst.Fields(NomeCampoAgrupamento).type
Case 4 'Integer
Set Rst = CurrentDb.OpenRecordset("SELECT [" & Campo & "] FROM [" & Tabela & "] WHERE [" & NomeCampoAgrupamento & "]=" & CampoAgrupamento & " ORDER BY [" & Campo & "];")
End Select
End If
Rst.MoveLast
Rst.MoveFirst
Rst.Move Int(Rst.RecordCount / 2)
If Rst.RecordCount Mod 2 = 0 Then
Mediana = Rst.Fields(0)
Rst.Move -1
Mediana = (Mediana + Rst.Fields(0)) / 2
Else
Mediana = Rst.Fields(0)
End If
Set Rst = Nothing
End Function
Function Moda(Tabela As String, Campo As String, Optional NomeCampoAgrupamento As String = "", Optional CampoAgrupamento) As String
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' '
' código criado por Alexandre Neves, do Fórum MaximoAccess '
' o código pode ser utilizado livremente, desde que mencionado este cabeçalho '
' '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'em 2013-07-10 para toxicsquall
Dim Rst As DAO.Recordset
If NomeCampoAgrupamento = "" Then
Set Rst = CurrentDb.OpenRecordset("SELECT Count([" & Campo & "]),[" & Campo & "] FROM [" & Tabela & "] WHERE Not IsNull([" & Campo & "]) GROUP BY [" & Campo & "] ORDER BY Count([" & Campo & "]);")
Else
Set Rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Tabela & "];")
Select Case Rst.Fields(NomeCampoAgrupamento).type
Case 4 'Integer
Set Rst = CurrentDb.OpenRecordset("SELECT Count([" & Campo & "]),[" & Campo & "] FROM [" & Tabela & "] WHERE Not IsNull([" & Campo & "]) AND [" & NomeCampoAgrupamento & "]=" & CampoAgrupamento & " GROUP BY [" & Campo & "] ORDER BY Count([" & Campo & "]) DESC;")
End Select
End If
If Rst(0) > 1 Then
Moda = Rst(1)
Else
Moda = "Sem Moda"
End If
Set Rst = Nothing
End Function
.................................................................................
Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo