Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Anke_71 am August 13, 2010, 11:40:15

Titel: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Anke_71 am August 13, 2010, 11:40:15
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

Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: oma am August 13, 2010, 17:07:10
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


Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: oma am August 16, 2010, 23:06:06
Hallo,

klappt es oder kommst du nicht zurecht???

Gruß Oma
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Anke_71 am August 25, 2010, 11:52:17
Es hat geklappt, vielen Dank!!!  (ich musste erst herausfinden, wie man die Funktionen umsetzt, daher hat es etwas gedauert)
Viele Grüße
Anke
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: enigma242 am Juli 22, 2011, 10:58:46
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
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: enigma242 am Juli 22, 2011, 11:02:11
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
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Juli 22, 2011, 17:40:09
Hallo,

WO steht diese SZ-Funktion?

Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Username am August 20, 2013, 12:08:09
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 ;)
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Username am August 20, 2013, 12:29:45
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
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Anke_71 am Oktober 15, 2013, 08:49:29
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
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 15, 2013, 09:21:50
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" ??
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Anke_71 am Oktober 16, 2013, 01:03:56
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
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 16, 2013, 08:27:21
Hallo,

die Funktion muss in einem STANDARD-Modul stehen , also einem Modul, das man im Navi-Bereich (Datenbankfenster) sehen und öffnen kann..
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Parkranger am Oktober 21, 2013, 13:21:38
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ß

Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Anke_71 am Oktober 22, 2013, 23:39:14
Bei mir hat jetzt alles geklappt, herzlichen Dank!!!!
Anke
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 24, 2013, 10:34:50
Hallo,

ich habe das Beispiel DeineTabelle genauso eingegeben und folgender
Fehler erscheint in der Abfrage (XP/Access2010):

Laufzeitfehler '3078':
Das Microsoft Access-Datenbankmodul findet die Eingabetabelle oder Abfrage
'DeineTabelle' nicht. Stellen Sie sicher, dass sie vorhanden ist und der Name
richtig eingegeben wurde.

Im Modul ist folgendes markiert:

Set rs = DBEngine(0)(0).OpenRecordset(strSQL)


Access 2010
Verweise auf:
Visual Basic for Applications
Microsoft Access 14.0 Object Library
OLE Automation
Microsoft Office 14.0 Access database engine Object Library

habe auch mal Verweis auf DA0 3.6 gesetzt (auf 14.0 rausgenommen),
Fehler erscheint trotzdem!

Gruss Torsten
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 24, 2013, 12:54:34
Hallo,

naja..... ::) :o

Wenn die Fehlermeldung schon sagt, dass es "DeineTabelle" nicht gibt, dann setz halt dort einen Tabellennamen ein, der in Deiner DB auch vorhanden ist.... 

"DeineTabelle" ist doch nur ein BEISPIELNAME für die prinzipielle Lösung des Problems und muss jeweils immer an die eigene Situation angepasst werden
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 25, 2013, 19:13:33
Hallo,

die Tabelle heist  "DeineTabelle", ich habe einfach nur eine Testdatenbank mit genau
den Daten, wie am Anfang als Beispiel angeben wurde, erstellt um Schreibfehler zu
vermeiden.
Wenn ich aber dann die Abfrage ausführe erscheint die bereits beschriebene
Fehlermeldung!?!

Gruss Torsten
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 25, 2013, 21:14:38
Hallo,

dann lad doch mal diese Beispiel-DB hier hoch  (gezippt und komprimiert/repariert)
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 25, 2013, 22:54:24
Hallo,

ich weiss nicht warum, aber nach dem letzten schliessen der Datenbank (Donnerstag)
funktionierte es nicht und als ich diese heute geöffnet hatte funktionierte es  :-[ direkt!

Ich habe nun die tatsächliche Tabelle eingefügt, dabei entsteht aber beim öffnen der Abfrage
"qyrZeichen" ein Fehler, bei jedem Datensatz (waSendungsnr) erscheint in der Ausgabe
der gleiche Inhalt. Kann es sein, dass in dem Modul modSZaZeichen beim SQL-String was
geändert werden muss (waSendungsnr hat den Felddatentyp "Text")?

Ich habe mal die Datenbank angefügt.

Danke bisher für die Hilfe  :)

Gruss Torsten
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 25, 2013, 23:10:23
Hallo,

etwa so:


Public Function SZa(waSendungsnr As String) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
strSQL = "select waZeichen from tblWare where waSendungsnr ='" & waSendungsnr & "'"

Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZa = SZa & ";  " & rs!waZeichen
  rs.MoveNext
Loop

SZa = Mid(SZa, 3, 100)
rs.Close
Set rs = Nothing
End Function
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 25, 2013, 23:30:37
Hallo,

danke für die schnelle Antwort, wenn ich jetzt =' " & waSendungsnr & " ' "
eingebe, erscheint beim öffnen der Abfrage in Feld Ausgabe gar nichts!

Gruss Torsten

Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 26, 2013, 09:36:50
Hallo,

was gibst Du WO ein?

Warum benutzt Du zusätzliche Leerzeichen um die Hochkommata?


Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 26, 2013, 11:43:51
Hallo,

ich habe den Fehler jetzt gefunden,
habe
Public Function SZa(ID As Long) As String
statt
Public Function SZa(waSendungsnr As String) As String

geschrieben (hätte den Code vom Oktober 25, 2013, 22:10:23 besser direkt
kopiert statt nur einen Teil zu ändern).

Vielen Dank für die Hilfe :)

Gruss Torsten
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 28, 2013, 20:56:41
Hallo,

ich habe doch noch eine Frage,

kann ich in dem nachfolgenden Code auch noch eine Gruppierung einfügen,

Ergebnis:

Beispiel für Feld waZeichen

ohne Gruppierung
Test1; Test1

mit Gruppierung
Test1


Public Function SZa(waSendungsnr As String) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
strSQL = "select waZeichen from tblWare where waSendungsnr ='" & waSendungsnr & "'"

Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZa = SZa & ";  " & rs!waZeichen
  rs.MoveNext
Loop

SZa = Mid(SZa, 3, 100)
rs.Close
Set rs = Nothing
End Function


Im voraus besten Dank für eine Antwort

Gruss
Torsten
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Oktober 28, 2013, 21:58:44
Hallo,



vielleicht:

strSQL = "select Distinct waZeichen from tblWare where waSendungsnr ='" & waSendungsnr & "'"
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Torsten_ am Oktober 31, 2013, 19:26:52
Hallo,

:D danke, war genau die richtige Hilfe.

Nachfolgend nochmals der gesamte Code zur Info:

Public Function SZa(waSendungsnr As String) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String

strSQL = "select waZeichen from tblWare where waSendungsnr ='" & waSendungsnr & "'"

Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZa = SZa & ";  " & rs!waZeichen
  rs.MoveNext
Loop

SZa = Mid(SZa, 3, 100)
rs.Close
Set rs = Nothing
End Function



Schöne Grüße aus dem Westerwald
Torsten
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Stefan Bauer am Januar 20, 2020, 11:08:06
Hallo, bin ganz neu hier und habe auch nicht viel Ahnung mit Access. Ich habe aus dem hier beschriebenen Vorgang eine Abfrage gestrickt die auf meine Bedürfnisse passt. Das funzt auch, leider gibt er mir mit Excel nicht alle Daten aus. Ich habe die Felder schon auf Memo gestellt. Jetzt gibt er mir 100 bzw 4000 Zeichen aus. Es sollten doch aber 65000 sein oder? Liegt es am Groupby? Kann mir bitte jemand helfen?

Danke Stefan
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Januar 20, 2020, 11:38:22
Hallo,

willkommen im Forum..

was sollen wir aber mit der Beschreibung anfangen?  Alle unsere Glaskugeln zeigen gerade nur Nebel an.  ;)



Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: PhilS am Januar 20, 2020, 12:14:16
Zitat von: Stefan Bauer am Januar 20, 2020, 11:08:06
Jetzt gibt er mir 100 bzw 4000 Zeichen aus. Es sollten doch aber 65000 sein oder? Liegt es am Groupby?
Wahrscheinlich Ja. Wenn nach einem Memo-Feld gruppiert wird, wird dieses Feld gekürzt (meines Wissens auf 255 Zeichen), weil die Gruppierung eines vollständigen Memo-Feldes (bis 1GB Daten) erhebliche Performanceeinbußen bewirken würde.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Stefan Bauer am Januar 20, 2020, 12:40:57
Ok wie gesagt bin neu.. :-)

Hier meine Abfrage z.b. Automarken:

SELECT Dateneingang.Artnr, SZa([Artnr]) AS ktype, SZe([Artnr]) AS epid, SZb([Artnr]) AS ebaytabellen, SZc([Artnr]) AS magentotabellen, SZd([Artnr]) AS automarken
FROM Dateneingang
GROUP BY Dateneingang.Artnr;

Meine Module:

Automarken:

Public Function SZd(Artnr As String) As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT DISTINCT automarken from Dateneingang where Artnr ='" & Artnr & "'"
Set rs = DBEngine(0)(0).OpenRecordset(strSQL)

Do While rs.EOF = False
  SZd = SZd & " " & rs!automarken
  rs.MoveNext
Loop

SZd = Mid(SZd, 1)
rs.Close
Set rs = Nothing
End Function

Was muss ich ändern das er mir "Alles" ausgibt
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: PhilS am Januar 20, 2020, 12:49:16
Wenn Du Duplikate in automarken ausschließen kannst, reicht es wenn du das DISTINCT aus dem SQL entfernst.
Warum gibt es SZa, SZb, SZc etc.?
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Stefan Bauer am Januar 20, 2020, 13:02:44
Ich habe für jede Spalte ein Modul in dem ich sage wie er die Daten zusammenfasst. So habe ich mir das ausgedacht  :)

Duplikate kann ich leider in keiner Spalte ausschliessen.

Es gibt folgende Module:

automarken
ebaytabellen
epid
ktype
magentotabellen

Sorry, wenn ich ehrlich bin habe ich keine Ahnung, habe mir alles per copy und probier zusammengebaut. Wenn jemand eine andere Lösung hat wäre ich auch sehr dankbar. Bin kein Programmierer, leider schaffe ich es mit Excel nicht weil die Datenmenge zu groß ist. Habe mir letzte Woche mal Access aufgemacht und ein wenig rumgespielt.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Januar 20, 2020, 14:24:17
Hallo,

keine Ahnung von Access zu haben, ist ja nichts Schlimmes...

Access ist eben nicht Excel, eher eine programmierbare und relationale Datenbankumgebung.

Um Access kennenzulernen, solltest Du zunächst Dir die Basics anhand von Büchern und Tutorials verinnerlichen . Mit C&P  irgendwelcher Codeschnippsel, deren Funktion und Auswirkung Du nicht durchblickst, führt nicht zum Ziel, eher zu Frust und Ärger.

Am Anfang steht die Analyse und Zusammenfassung der vorhandenen Daten und Umsetzung in ein passendes Tabellenkonzept. Stichwort: Normalisierung. Siehe dazu u. st. Links 11, 1a und 1b.

Diese Umsetzung richtet sich auch nach der Aufgabe der DB, die sie lösen/bearbeiten soll.

Später, und wirklich erst dann, wenn das Tabellenkonzept schlüssig ist, macht man sich Gedanken um Abfragen, Formulare und Berichte.  Bis hier ist selbst VBA-Code (fast) nicht nötig.


Stelle also hier deine Gedanken darüber  vor, was die DB überhaupt bewältigen soll und auf welchen Grunddaten das Ganze aufbaut.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Stefan Bauer am Januar 20, 2020, 14:44:41
Danke für die Antwort,

mir ist das alles bewust. Meine Aufgabe ist es Daten die ich von verschiedenen Herstellern bekomme für einen Import in einen Magentoshop aufzuarbeiten. Das mache ich seit Jahren gut und zielführend.

Ich wollte mir jetzt ein "Helferlein" basteln indem ich eine Excel Liste importiere und dann wieder so wie ich Sie brauche exportiere. Das funktioniert ja auch zu 99,9%. Das Problem ist eben das in den Excel Zellen schon mehr als 255 Zeichen vorkommen und diese bei der Ausgabe sich bis zu 30 - 40 Tausend summieren. Daher Memo Felder. Daher meine Frage an das Forum.

Danke für eure Mithilfe.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: DF6GL am Januar 20, 2020, 14:54:54
Hallo,



tja....,

damit kann ich Dir keine konkreten Vorschläge machen... außer diesem:  Bleib bei Excel und manipuliere dort die Daten so, wie Du sie brauchst.  Excel kann auch VBA...
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Stefan Bauer am Januar 20, 2020, 15:03:23
Danke dann bin ich hier wohl falsch. Sorry das ich eure Zeit verschwendet habe!
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 10, 2020, 22:13:23
Guten Abend. Ich bin neu hier im Forum und habe mich angemeldet da ich seit einiger Zeit beruflich immer wieder mit Access-Datenbanken in Form von tabellarischen Auswertungen konfrontiert werde und diese Daten weiterverarbeiten muss. Seit einiger Zeit lese ich hier als Gast mit und habe schon den einen oder anderen nützlichen Tip gefunden. Meine Kenntnisse in Access sind leider rudimentär, ich möchte diese aber gerne vertiefen.
Derzeit beschäftigte ich mich mit eine Problem, das dem hier beschrieben sehr nahe kommt.

Hier meine vereinfachte Form der Ausgangstabelle:

Kunde   Vertragsnummer  xxxx  xxxx
1.          1.                      xxxx   Xxxxx
1.          2.                       xxxx. Xxxxxx
2.          3.                       xxxx.  Xxxxx
3.          4.                       xxxxx xxxxx
4.          5.                        xxxxx. Xxxxx
4.           6.
4.           98.

Folgende Zieltabelle ist gewünscht:
Kunde.      1. Vertrag    2. Vertrag ........  10.Vertrag
1.              1.               2.
2.              3.
3.              4.
4.              5.               6.       .......         98.
usw.

Wichtig wäre, das die einzelnen Verträge in einzelnen Feldern der neuen Tabelle dargestellt werden müssen. Jeder Kunde darf nur einmal in der Tabelle enthalten sein. Die Tabelle muss später als csv in exportiert werden.

Ich hoffe auf eure Unterstützung. Danke!
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: ebs17 am März 10, 2020, 23:06:44
Du brauchst keine neue Tabelle. Die gewünschte Ansicht kann mit einer Kreuztabellenabfrage erstellt werden, die sich dann auch exportieren lässt.

Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 11, 2020, 20:43:45
Hi, danke für die schnelle Antwort. Genau das Bekomme ich nicht hin. Die Vertragsnummer ist immer Eindeutig (Primärschlüssel). Daher wird in der Kreuztabellenabfrage für jede Vertragsnummer eine Spalte erzeugt, an der Stelle wo sich Kunde und Vertragsnummer kreuzen wird das Feld mit 1 gefüllt. Im Ergebnis benötige ich aber 10 Spalten, welche je nach Anzahl der Verträge der Kunden nacheinander befüllt werden sollen. Hat ein Kunde eine geringere Anzahl von Verträgen soll von links nach rechts nur die benötigte Anzahl der Felder gefüllt werden. Die anderen Felder können dann leer bleiben.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: ebs17 am März 11, 2020, 22:12:38
ZitatIm Ergebnis benötige ich aber 10 Spalten
Kann man lösen über fixierte Spalten.

Für die Einordnung zu Vertrag_1 bis Vertrag_10 müsste man in der Basisabfrage zur KTA eine laufende Nummer erzeugen.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 11, 2020, 23:28:10
Vielen Dank! Das sieht sehr gut aus. Wo kommt den das Feld N her? Es ist ja in der Tabelle nicht vorhanden.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 12, 2020, 01:29:00
Zumindest habe ich die Testtabelle von dir jetzt nach meinen Anforderungen umgebaut und es funktioniert in der Simulation. Morgen werde ich den SQL-Code dann mal in die echte Datenbank exportieren.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 12, 2020, 17:55:20
Hi, leider stolpere ich bei der Adaption auf meine Tabelle über das Feld N. Mir ist nicht klar wo dieses herkommt, da es in der Ausgangstabelle nicht vorhanden ist.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: ebs17 am März 12, 2020, 18:20:57
ZitatTRANSFORM
   MIN(Q.Art) AS M
SELECT
   B.Name
FROM
   05_tblBenutzer AS B
      INNER JOIN
         (
            SELECT
               B_ID,
               Art,
               "Sportart" & DCount("*", "05_tblSportarten", "B_ID = " & B_ID & " AND Art <= '" & Art & "'") AS N
            FROM
               05_tblSportarten
         ) AS Q
         ON B.ID = Q.B_ID
GROUP BY
   B.ID,
   B.Name
PIVOT
   Q.N IN("Sportart1", "Sportart2", "Sportart3", "Sportart4", "Sportart5")
Es ist hilfreich, wenn man eine SQL-Anweisung lesen und verstehen kann. Dazu wird man sie vorzugsweise vorher formatieren.

N ist der Alias (Name) für ein berechnetes Feld: Konstante "Sportart" und laufende Nummer.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 12, 2020, 19:54:25
Das habe ich so schon vermutet. Wie schon geschrieben habe ich habe den SQL-Code an meine Tabellendaten angepasst. Wahrscheinlich liegt der Fehler in der Syntax. Ich checke das morgen nochmals und bedanke mich für die nette Unterstützung.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 13, 2020, 17:41:01
So, alles im Echtsystem nochmal geprüft und getestet. Der Fehler lag zum einen an einer abweichenden Feldformatierung zum anderen am Syntax des Tabellennamen. In der Abfrage funktioniert das ganze jetzt wie gewünscht. Sobald ich die Daten allerdings aus der Abfrage in einer Tabelle erstelle wird die gewünschte Formatierung wieder aufgehoben, die Spalten N & M werden dargestellt und ich bekomme wieder für jeden Vertrag eine einzelne Zeile angezeigt. Excel-Export aus der Abfrage habe ich in echt noch nicht getestet, hat aber in der kleinen Simulation funktioniert. Von dort kann ich ja in *.csv ausgeben. Mit der echten Datenbank teste ich dann am Montag. :)
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: ebs17 am März 13, 2020, 20:22:50
Ein Export als Text würde standardmäßig mit TransferText erledigbar sein.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: Inspektor am März 13, 2020, 20:55:43
Ja, aber es handelt sich um eine sehr Große Datenbank, eine Abfrage dauert derzeit fast 8 Minuten. Die Endtabelle muss zudem noch von anderen Mitarbeitern verifiziert werden. Am liebsten würde ich das auch in Access erledigen ist aber auch in Excel kein Problem. Nochmal vielen Dank für die freundliche Unterstützung.
Titel: Re: Mehrere Datensätze in einen Datensatz zusammenfassen
Beitrag von: ebs17 am März 13, 2020, 22:19:20
Zitateine Abfrage dauert derzeit fast 8 Minuten
Das klingt so absolut. Muss es aber nicht sein.

Mit 200 Datensätzen kann jeder.
Bei 200k+ ist dann für Performance auch ein gewisses Maß an Entwicklerkompetenz zuträglich (Ablaufplanung, Abfragedesign, Indexnutzung).
Zum Querlesen:  Performance total mies (http://www.office-loesung.de/ftopic413215_0_0_asc.php)