title image


Smiley Stimmt, da hast du absolut recht :-)
Da habe ich gar nicht dran gedacht.



Ich habe auch gleich mal deine Funktion in eine neue

Aggregatfunktionen für Domänen umgebaut und in meine

Vorlagendatenbank eingespielt. :-)



Listing am Ende.



Nochwas! Was machst du denn wenn eine Zahl <=0 ist?

Ich filtere diese Fälle aus. Aber kann man dann mit dem Ergebnis noch was anfangen? Stimmt das noch?









Option Compare Database

Option Explicit



Private Sub Beispiel()



Debug.Print DGeoMean("Feld", "Tabelle1")



End Sub



Public Function DGeoMean( _

ByVal Expr As String, _

ByVal Domain As String, _

Optional ByVal Criteria As Variant)



Dim dbs As DAO.Database

Dim rst As DAO.Recordset

Dim strSQL As String

Dim lngN As Long

Dim dblProduct As Double



strSQL = "SELECT " & Expr

strSQL = strSQL & " FROM " & Domain



If Not IsMissing(Criteria) Then

strSQL = strSQL & " WHERE " & Criteria

End If



Set dbs = CurrentDb

Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)



If rst.EOF Then

DGeoMean = 0

Error 5

Exit Function

End If



If rst(Expr) <= 0 Then

DGeoMean = 0

Error 5

Exit Function

End If



dblProduct = rst(Expr)

lngN = 1

rst.MoveNext



Do Until rst.EOF

If rst(Expr) <= 0 Then

DGeoMean = 0

Error 5

Exit Function

End If



dblProduct = dblProduct * rst(Expr)

lngN = lngN + 1

rst.MoveNext

Loop



DGeoMean = dblProduct ^ (1 / lngN)



rst.Close

Set rst = Nothing

Set dbs = Nothing



End Function






Schöne Grüße
Ralf

(Ich verwende: Windows XP / Office XP)


Meine Links:
Meine Homepage
DBWiki
The Access Web


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: