Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: dddt1 am Mai 08, 2025, 15:12:07

Titel: Daten zusammenfügen
Beitrag von: dddt1 am Mai 08, 2025, 15:12:07
Hallo liebe Community,

habe folgende Frage:

In einer Spalte der Tabelle_1 sollen die Daten aus drei Spalten der Tabelle_2 erscheinen.

Habe versucht es ohne SQL-Abfrage zu gestalten, habe es nicht hinbekommen.

Das Problem ist, dass es in der Tabelle_2 mehrere Zeilen mit den passenden Suchparameter gibt, und sie sollen alle mit dem Semikolon getrennt in der Tabelle_1 zu sehen sein.

Versuche es schematisch darzustellen:

So sieht die Tabelle_2 aus:

|Spalte1|Spalte2|Spalte3|   Spalte4   |
|   A   |   B   |   C   |Suchparameter|
|   D   |   E   |   F   |Suchparameter|
usw.

Es sollen alle drei Parameter, die dem Suchparameter von der Spalte4 entsprechen, in die Tabelle_1 in einem Feld  (z.B. Spalte3) da sein, und zwar so:

Tabelle_1
|Spalte1|Spalte2|      Spalte3    |
|  ...  |  ...  |A_B_C;D_E_F; usw.|

Bitte um eure Hilfe!

Beste Grüße

dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 08, 2025, 19:30:07
Hallo,

ohne eine VBA Funktion als Subquery wir das nicht möglich sein. Hier ein Lösungsansatz aus dem alten DBWiki:
https://web.archive.org/web/20170302110003/http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen (https://web.archive.org/web/20170302110003/http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen)

Gruß Knobbi38
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 09, 2025, 07:57:13
Guten Morgen Knobbi38,

danke für schnelle Antwort!

Den Link habe ich angeschaut.

Bei mir sollte ich generierte Zeichenkette in eine Tabelle einbringen, und nicht ins ein Formularfeld, wie es im Beispiel steht.

Wie funktioniert es?

dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 09, 2025, 10:05:04
Hallo,

das in dem Link ist doch nur ein Beispiel, wie man diese Funktion verwenden könnte, nicht muß.
Diese Funktion kannst du als Subselect in einer SQL Anweisung für deine Tabelle1 gebrauchen:
SELECT feld1, feld2, SQLListe(...)
FROM Tabelle1

Gruß Knobbi38
 
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 12, 2025, 10:59:02
Guten Morgen knobbi,

Funktion vom Link funktioniert einfach glänzend, hatte sie etwas anagepasst und ich habe den korrekten String, den ich haben möchte.

Aber der Aufruf im VBA mit der Aktualisierung der Tabelle funktioniert nicht:

StringSQL = "Update Tabelle_1" _
& "SET Feld_1 =(SQLListe (SELECT Feld_1,Feld_2,Feld_3 FROM Tabelle_2 WHERE Suchfeld_der_2.Tabelle='AAA')) " _
& "WHERE Suchfeld_der_1.Tabelle='AAA'"

DoCmd.RunSQL (StringSQl)

Bekomme folgende Fehlermeldung:
(s. Screenshot)
Habe mit EXISTS probiert, aber bekomme immer noch nicht hin :-(

dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 12, 2025, 14:42:56
Habe das Problem so gelöst, dass der komplette String einer Variable zugewiesen wurde, und dann wurde die abfrage mit der Variable ausgeführt:
Update Tabelle_1
SET Feld_1='" & String_zusammengefuehrt
& "'WHERE  Suchfeld_der_1.Tabelle='AAA'"

Beste Grüße
dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 26, 2025, 16:44:01
Guten Tag Zusammen,

rufe den Topik wieder zum Leben auf, da ich da nicht weiter komme.

Wollte zwei Tabelle miteinander verknüpfen, wo die Daten aus der drei Spalten von Tabelle_2 in einer Spalte der Tabelle_1 angezeigt werden, und zwar nach einem Parameter, der in beiden Tabellen gleich ist:

UPDATE Tabelle_1" _
& "SET Feld_1 =(SQLListe (SELECT Feld_1,Feld_2,Feld_3 FROM Tabelle_2" _
& "WHERE Parameter_gleich.Tabelle_2=Parameter_gleich.Tabelle_1)) " _
& "WHERE Parameter_gleich.Tabelle_2=Parameter_gleich.Tabelle_1

Das Problem ist, dass die Tabelle_2 mehrere Parameter_gleich hat, die sich auch in der Tabelle_1 finden lassen.
Es bedeutet, dass Funktion SQLListe mehrere Ergebnisse in die Tabelle 1 liefern soll.

Genau da liegt der Stolperstein bei mir.

Würdet ihr bitte noch mal helfen?

Beste Grüße

dddt1

Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 26, 2025, 18:45:05
Hallo ddd,

ich kann dir leider nicht ganz folgen. Kannst du das Problem nochmal mit anderen Worten beschreiben und eine Beispiel DB hochladen?

Knobbi38
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 27, 2025, 09:23:51
Guten Morgen Knobbi,

ich versuche mit der Beispiel-DB zu schildern:

In die Spalte "Zusammengefügt" der "Tabelle1" sollen die Werte von den Spalten "Wert1", "Wert2", "Wert3" der "Tabelle2" sollen die Daten kommen, die "Werte von der Spalte "Parameter_gleich" identisch haben.

Das heißt, in der Tabelle 1 sollen die Daten wie folgt stehen:

| ID | Zusammengefügt | Parameter_gleich|
| 1  |  a_b_c;d_e_f;          |        A        |
| 2  |  g_h_i;j_k_l;            |        B        |
| 3  |  m_n_o;p_r_s;         |        C        | 

Die Funktion "SQLListe" zum Zusammenfügen der Daten funktioniert. Nur die richtige Zuweisung nach "Parameter_gleich" kriege ich momentan nicht hin.

Im angehängten Screenshot ist die Struktur der beiden Tabellen dargestellt.

Beste Grüße

dddt1


Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 27, 2025, 11:41:12
Hallo,

mit DB hochladen meinte ich eigentlich eine Datenbank und keine Bilder. Ich habe jetzt nicht vor, die DB bei mir zum Testen nachzustellen. Eine BeispielDB würde also die Bereitschaft zur Hilfe stark erhöhen.

Es könnte evtl. hilfreich sein, die nach den gleichen Daten zu gruppieren.

Gruß Knobbi38


Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 27, 2025, 12:13:34
Ja
Da hast Du Recht.

Hier ist die DB (s. Anhang)

Beste Grüße
dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 27, 2025, 12:40:05
So eine kleine BeispielDB ist doch viel hilfreicher.  :)


Kleiner Tip: wie wäre es mit
? SQLListe("SELECT WERT1, WERT2,WERT3 FROM Tabelle2 WHERE Parameter_gleich = 'A'")Das liefert dir doch alle verketteten Werte wie gewünscht. Jetzt mußt du nur noch SQLListe für jeden unique Wert aus Tabelle1 aufrufen  ;)






Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 27, 2025, 13:19:36
So hatte ich es auch gehabt.

Aber die Tabelle1 soll zur Anzeige in einem Listbox mit allen Daten gefüllt werden, nicht nur für Wert "A", sondern für "B", "C" usw. auch.

Beste Grüße
dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: Beaker s.a. am Mai 27, 2025, 13:51:45
Wozu dann der ganze Aufwand?
Die Liste bekommt als RowSource die Tabelle2, oder eine Abfrage darauf (wegen
Sortierung) mit allen Spalten. Da siehst du doch auch die drei Werte nebenein-
ander. Für eine Weiterverarbeitung ist die Liste eh kaum zu gebrauchen.
Gespeichert werden muss die auch nicht, da jederzeit berechenbar.

Ausserdem, - es gibt überhaupt kein Datenmodell. Die beiden Tabellen stehen
völlig isoliert voneinander im freien Raum. Wobei man nicht weiss, was mal dabei
herauskommen soll.
Wenn die Felder auch in der realen DB nummeriert sind, ist das ein Designfehler, -
die gehören dann als Datensätze in eine eigene Tabelle.
Sonderzeichen in Objektnamen sind zu vermeiden. Diese Namen müssen immer in []
gesetzt werden, wenn man auf sie zugreift.

gruss ekkehard
Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 27, 2025, 15:28:14
Hallo,

das war doch nur eine Beispiel. Du mußt natürlich deine Subquery anpassen:
SELECT DISTINCT ka,
  SQLListe("SELECT Wert1, Wert2, Wert3
            FROM  Tabelle2
        WHERE ka = '" & [ka] & "'") AS Werte
FROM Tabelle1

Knobbi38
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 28, 2025, 16:32:11
Hallo Zusammen,

mein Problem ist, dass ich es nicht weiß, wie man die Daten in die Spalte "Zusammengefügt" so reinkriegt, ohne mal einen konkreten Wert von der Spalte "Parameter_gleich" zu haben:

| ID | Zusammengefügt | Parameter_gleich|
| 1  |  a_b_c;d_e_f;          |        A        |
| 2  |  g_h_i;j_k_l;            |        B        |
| 3  |  m_n_o;p_r_s;         |        C        |

Im Grunde genommen, die Inhalte der beiden Spalten "Parameter_gleich" sollen nur verglichen werden. Sind die gleich, dann kommen Wert1, Wert2, Wert3 von Tabelle2 in die Tabelle 1.

Beste Grüße
dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 28, 2025, 16:46:24
Hallo dddt,

deinen Teil hast du doch jetzt, der liefert die für KA = A,B,C die verketteten Daten. Wenn du das Ergebnis jetzt nimmst und das per Join mit der Tabelle1 verbindest, bekommst du nur die Einträge, welche in Tabelle1 und dem temporären Ergebnis übereinstimmen.

Alle Teile sind dir jetzt bekannt, du musst sie nur noch zusammenfügen.

Gruß Knobbi38
Titel: Re: Daten zusammenfügen
Beitrag von: dddt1 am Mai 28, 2025, 16:47:23
Danke sehr Knobbi!

ich probiere es.

Beste Grüße
dddt1
Titel: Re: Daten zusammenfügen
Beitrag von: Knobbi38 am Mai 28, 2025, 17:12:50
Wenn es nicht klappt, einfach nochmal melden.

Gruß Knobbi38