Duplikate in einer Spalte nicht mitzählenIch setze seit einiger Zeit Access ein. Leider ist es mir noch nicht gelungen, eine genaue Bestimmung der Anzahl vonEinträgen einer Spalte vorzunehmen. Access zählt dabei Duplikate immer mehrfach. Was kann ich tun, um dies zu vermeiden? Tatsächlich hat MS-Access selbst in der Version 7.0 noch Probleme damit, Angaben über die Anzahl unterschiedlicher Einträge in einer Spalte zu machen. Das Hauptübel dabei ist die eingeschränkte Verwendungsmöglichkeit des Schlüsselworts DISTINCT. Es läßt sich lediglich auf die gesamte Abfrage anwenden: (SELECT DISTINCT Count(*) ...). Damit bezieht sich die durch DISTINCT bewirkte Eindeutigkeitsbedingung immer auf den gesamten Datensatz und nicht auf einzelne Felder. Die hier benötigte Lösung, DISTINCT innerhalb einer Klammer der Anzahl-Anweisung einzusetzen, läßt Access jedoch nicht zu. Es gibt aber zwei indirekte Lösungen Ihres Problems.Die erste Lösung gilt für Anwender der Access-Version 2.0, da diese Version noch nicht über die Distinct-Count-Eigenschaft verfügt. Zunächst definieren Sie eine Abfrage mit einer Gruppierung über die gewünschte Spalte.Ein Beispiel dafür ist die folgendeeinfache Abfrage:SELECT Tabelle.Feld FROM Tabelle GROUP BY Tabelle.Feld. Dadurch erreichen Sie das Ausblenden der Duplikate auf Feldebene. Speichern Sie diese Abfrage unter einem beliebigen Namen (Abfragename). An der gewünschten Stelle im Code verwenden Sie dann die Funktion DomAnzahl() oder - in englischer Schreibweise - DCount(). Die Funktion kann die Anzahl der Datensätze einer Tabelle oder Abfrage ermitteln. Die benötigte Syntax der Funktion sieht folgendermaßen aus:x = DomAnzahl("[Feld]"; "Abfragename"). Die Variable x enthält später die Anzahl eindeutiger Feldwerte.Der Parameter [Feld] steht für den Namen des Feldes, das Sie in der Abfrage Abfragename gruppiert haben. Um die Angelegenheit zu beschleunigen, können Sie anstelle von [Feld] auch einen Stern (*) einsetzen. Beachten Sie jedoch: Geschwindigkeit hat ihren Preis. Wenn das Feld Nullwerte zuläßt, verfälscht sich das Ergebnis, da Access auch eine Gruppe über Nullwerte bildet. Der Parameter * zählt diese ebenfalls mit.Access-7.0-Anwender können die Eigenschaft Distinct-Count verwenden, die die Anzahl der eindeutigen Werte für ein IndexObjekt einer Tabelle angibt. Sie müssen lediglich einen Index über die entsprechende Spalte legenund anschließend dessen Distinct-Count-Eigenschaft ausgeben. Um das zu verwirklichen, benutzenSie das Listing der Prozedur,die Sie oben im Bild sehen.Beachten Sie, daß das Anlegen von Indizes bei großen Tabellen durchaus eine zeitaufwendige Angelegenheit sein kann. Wenn allerdings bereits ein Index über die Spalte besteht, können Sie seine Distinct-Count-Eigenschaft sofort verwenden. |