Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Mehrere Datensätze in einen Datensatz zusammenfassen

Begonnen von Anke_71, August 13, 2010, 11:40:15

⏪ vorheriges - nächstes ⏩

Anke_71

Ich bin mal wieder auf der Suche nach Hilfe bei einer Darstellungsfrage:

Folgende Ausgangstabelle:

ID  Textfeld
1    A
1    B
2    AAA
2    BBB
3    CCC
3    DD
3    EE

Ich möchte pro ID alle Inhalte in einer Zelle vereinigen, jede ID sollte nur einmal auftreten; Ergebnis sollte wie folgt aussehen:

ID  Textfeld
1    A;B
2    AAA;BBB
3    CCC;DD;EE

Kann mir jemand mit der Abfrage-Formulierung/SQL weiterhelfen?

Vielen Dank im Voraus
Anke


oma

Hallo Anke,

du erstellst eine kleine Funktion in ein beliebiges Modul deiner DB:

Public Function SZ(ID As Long) As String
Dim strSQL As String
Dim rs As DAO.Recordset

strSQL = "SELECT Textfeld FROM DeineTabelle WHERE ID =" & ID
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZ = SZ & ";  " & rs!Textfeld
  rs.MoveNext
Loop

SZ = Mid(SZ, 2, 100)
rs.Close
Set rs = Nothing
End Function


Hiermit kannst du in einer Abfrage die gewünschte Darstellung erreichen:

select ID, SZ([ID]) AS Ausgabe
from DeineTabelle
group by ID


Gruß Oma


nichts ist fertig!

oma

Hallo,

klappt es oder kommst du nicht zurecht???

Gruß Oma
nichts ist fertig!

Anke_71

Es hat geklappt, vielen Dank!!!  (ich musste erst herausfinden, wie man die Funktionen umsetzt, daher hat es etwas gedauert)
Viele Grüße
Anke

enigma242

Hallo,

vielen Dank für dieses Skript. Leider habe ich ein Problem damit.

Ich habe eine Tabelle mit 2 Spalte, beide als Text deklariert.

In der ersten Spalte stehe Artikelnummern bestehend Buchstaben, Zahlen,Sonderzeichen.
In der zweiten Spalte stehen Druckernamen

Nun möchte die Artikelnummern gruppieren und alle entsprechenden Druckernamen in einem Feld mit ; getrennt ausgeben.

Ich denke ich habe die variablen entsprechend angepaßt. Es kommt jedes mal die Fehlermeldung Undefinierte Funktion 'SZ' in Ausdruck

Was kann das sein? Ich bin völlig ratlos.

Wäre super wenn mir jemand weiterhelfen könnte.

Danke

enigma242

Hier noch mein geändertes script

Public Function SZ(ID As Long) As String
Dim strSQL As String
Dim rs As DAO.Recordset

strSQL = "SELECT druckername FROM drucker WHERE ID =" & ID
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZ = SZ & ";  " & rs!druckername
  rs.MoveNext
Loop

SZ = Mid(SZ, 2, 100)
rs.Close
Set rs = Nothing
End Function

Abfrage

select ID, SZ([ID]) AS Ausgabe
from drucker
group by ID


Username

Hey
Ich benutze die Funktion ebenfalls, habe aber eine etwas andere Tabellenstruktur.

tblFirmaTaetigkeit: FirmaTaetigkeitID, VertragID_F, FirmaID_F, TaetigkeitID_F
tblFirma: FirmaID, Name
tblTaetigkeit: TaetigkeitID, Nummer, Taetigkeit, Firma

Wie kann man mit der Funktion die Taetigkeit aus tblTaetigkeit als Wort und nicht nur die TaetigkeitID_F als Zahl auslesen lassen?

Danke ;)

Username

Einfach eine Abfrage mit den nötigsten Kriterien aufbauen, Verknüpfungen einrichten, Code kopieren und schon klappt es   ;D
Public Function SZ(VertragID As Long) As String
Dim strSQL As String
Dim rs As DAO.Recordset

strSQL = " Select tblTaetigkeit.Taetigkeit FROM tblTaetigkeit INNER JOIN (tblFirma INNER JOIN (tblVertrage INNER JOIN tblFirmaTaetigkeit ON tblVertrage.VertragID = tblFirmaTaetigkeit.VertragID_F) ON tblFirma.FirmaID = tblFirmaTaetigkeit.FirmaID_F) ON (tblFirma.FirmaID = tblTaetigkeit.FirmaID) AND (tblTaetigkeit.TaetigkeitID = tblFirmaTaetigkeit.TaetigkeitID_F) where VertragID = " & VertragID
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZ = SZ & ";  " & rs!Taetigkeit
  rs.MoveNext
Loop

SZ = Mid(SZ, 2, 100)
rs.Close
Set rs = Nothing
End Function

Anke_71

Hallo, ich habe ein Problem mit einer Lösung, die früher funktioniert hat (damals und heute in Access 2002):

Ich nutze untenstehende Funktion (aus dem Beginn des alten Postings); bin jetzt in einer neuen Datenbank und erhalte nun folgende Fehlermeldung: "Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert."

Hat jemand eine Idee, wo das Problem liegen könnte?
Vielen Dank im voraus



Public Function SZ(ID As Long) As String
Dim strSQL As String
Dim rs As DAO.Recordset

strSQL = "SELECT Textfeld FROM DeineTabelle WHERE ID =" & ID
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZ = SZ & ";  " & rs!Textfeld
  rs.MoveNext
Loop

SZ = Mid(SZ, 2, 100)
rs.Close
Set rs = Nothing
End Function

DF6GL

Hallo,

Idee hätte ich:   der Verweis auf die DAO3.6-Library ist nicht gesetzt....

Sinnvollerweise könntest Du auch die Zeile nennen , die angemeckert wird...


Weiterhin:  Heißt das Tabellenfeld wirklich "Textfeld" und die Tabelle "DeineTabelle" ??

Anke_71

Hallo,

Ich habe den Verweis auf die DAO3.6-Library gesetzt --> jetzt lässt sich das Modul ohne Fehlermeldung speichern und schliessen (Die Platzhalter für die ID/Textfeld/Tabelle habe ich natürlich entsprechend umbenannt (heissen: FilterID/EntryID/tblFilterEntry), wobei es immer sein kann, dass ich irgendwo einen Denkfehler drin habe).

Trotzdem Neues Problem: Wenn ich jetzt die Abfrage erstelle (unten entsprechend mit den richtigen Tabellen und Feldbezeichnungen), kommt die Fehlermeldung: "Undefinierte Funktion SZ im Ausdruck" ...

SELECT FilterID, SZ([FilterID]) AS Ausgabe
FROM tblFilterEntry
GROUP BY FilterID;

???? Any ideas?
Anke

DF6GL

Hallo,

die Funktion muss in einem STANDARD-Modul stehen , also einem Modul, das man im Navi-Bereich (Datenbankfenster) sehen und öffnen kann..

Parkranger

Hallo,
ich versuche diese Lösung umzusetzen. Wird auch kompiliert, aber im Abfragefeld Ausgabe steht #Fehler. Hat jemand ne Idee woran das liegen kann?

Bin für jede Hilfe dankbar.
Gruß


Anke_71

Bei mir hat jetzt alles geklappt, herzlichen Dank!!!!
Anke