Datenfelder zusammenfassen (Access)

boelzi

Grünschnabel
Hallo zusammen


Ich habe ein Problem...
Zwar bin nich noch nicht besonders geübt im Umgang mit Access (2007) und ich möchte in einer Abfrage doppelte Einträge zusammenführen und die unterschiedlichen Zellen in einer neuen Zelle zusammenführen.

Die Tabellen sieht zusammengefasst folgendermassen aus:

ID AnfID KapID
567 105 7.7.5.
358 107 7.7.5.
358 107 6.2.4.
663 177 8.7.3.3.

Neu sollte sie so aussehen:

ID AnfID KapID
567 105 7.7.5.
358 107 7.7.5., 6.2.4.
663 177 8.7.3.3.

Der SQL-Code lautet folgendermassen:

SELECT tbl4AnfNotizen.ID, tbl6AnfInDok.KapID, tbl6AnfInDok.AnfID
FROM tbl4AnfNotizen INNER JOIN tbl6AnfInDok ON tbl4AnfNotizen.Anf_ID = tbl6AnfInDok.AnfID
WHERE (((tbl4AnfNotizen.Thema)="Un_Angebot") AND ((tbl6AnfInDok.DokID)=5));


Ich habe schon ähnliche Einträge gefunden, leider hat mir keiner weitergeholfen.
Kann mir jemand behilflich sein?


Vielen Dank
 
In Anderen Datenbanken gibt es GroupConcat() und ähnliches für sowas.
Ich habe darum vor einiger Zeit mal eine VBA-Funktion geschrieben (DConcat()), die das auch macht. Aber Achtung, bei grösseren Datenmengen kann es langsam werden

SQL:
SELECT
    t4.ID,
    DCONCAT("KapID", "tbl6AnfInDok", "AnfID=" & t4.Anf_ID) AS  KapIDs,
    t6.AnfID
FROM
    tbl4AnfNotizen t4
    INNER JOIN tbl6AnfInDok t6
    ON t4.Anf_ID = t6.AnfID
WHERE
    t4.Thema="Un_Angebot"
    AND t6.DokID=5
GROUP BY
    t4.ID,
    t6.AnfID
;
 
Hallo Yaslaw


Vielen Dank für die super schnelle Antwort.

Bei der neusten Version der Funktion gibt's mit dem Ausdruck 'adClipString' ein Problem beim Kompilieren. Ich habe nun die Version 1.0.1 übernommen, was soweit funktioniert hat.

Bei der Abfrage selbst kommt nun der folgende Fehler:

"Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'DCONCAT("KapID","tbl6AnfInDok","AnfID="&t.4Anf_ID)' nicht als Teil der Aggregatfunktion einschliesst."


Hier stehe ich leider wieder an...

was könnte das sein?


P.S.:

Wenn ich den Ausdruck Group By lösche funktioniert es, dann sieht der SQL folgendermassen aus:

SELECT t4.ID, DCONCAT("KapID","tbl6AnfInDok","AnfID=" & t4.Anf_ID) AS KapIDs, t6.AnfID
FROM tbl4AnfNotizen AS t4 INNER JOIN tbl6AnfInDok AS t6 ON t4.Anf_ID = t6.AnfID
WHERE (((t4.Thema)="Un_Angebot") AND ((t6.DokID)=5));

einziges Problem hier ist, dass nun die Einträge noch doppelt sind.

ID KapIDs AnfID
567 7.7.4., 7.7.5. 105
358 6.2.4., 7.7.4., 7.7.5. 107
358 6.2.4., 7.7.4., 7.7.5. 107
663 7.5.4., 8.7.3.3. 177


P.S. 2:

Es funktioniert nun.
Habe DISTINCT ergänzt.....

Genial!


Vielen Dank!!!!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück