Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: walker950 am Dezember 14, 2019, 17:37:28

Titel: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: walker950 am Dezember 14, 2019, 17:37:28
Guten Abend zusammen,
Es ist schon eine Ewigkeit her das ich mit Access zu tun hatte. Nun ist es wieder einmal so weit. Mir stellt sich folgendes Problem dar.
Ich habe eine Tabelle mit folgenden Spalten erstellt.

ID, Büro, Vorname, Nachname, Kurzzeichen, Telefon intern, FB, Eintritt

01 E 01, Heidi, Muster, HM, 1458, HI, 01.01.2020
02 E 01, Edgar, Mustermann, EM, 4587, UV, 01.01.2020

Nun benötige ich Abfragen wo so aussehen:
Postfachbeschriftung:
E 01 / HM - EM

Bürobeschriftung:
Wenn 4 Personen im Büro sind:

Vorname Name, Vorname Name, Vorname Name, Vorname Name

Wenn mehr als 4 Personen im Büro sind:

Vorname Name | Vorname Name  | Vorname Name | Vorname Name | Vorname Name

Es sollen alle Datensätze mit der gleichen Büro Bezeichnung zusammen gefasst werden.
Ich  wäre sehr über Hilfe dankbar.
Grüsse
Walker950
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: DF6GL am Dezember 14, 2019, 19:09:45
Hallo,

mit einer Abfrage wird dies wohl schwierig werden....  Eine Denormalisierung ist so nicht standardmäßig vorgesehen und Access-SQL kennt keine gespeicherten Prozeduren.

ZitatEs sollen alle Datensätze mit der gleichen Büro Bezeichnung zusammen gefasst werden.


Erstelle eine Abfrage, die über die über Spalte "Büro" gruppiert.

In einer berechneten Spalte rufst Du eine Prozedur (Public Function) auf, die entspr. den Vorgaben die Zusammensetzung des gewünschten Strings vornimmt.

Dabei könnte dies helfen:  http://www.dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen



Alternativ könnte in einem Bericht ein Gruppenkopf für Spalte "Büro" eingerichtet  und mit der gleichen Funktion die "Namenliste" angezeigt werden.


Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: walker950 am Dezember 14, 2019, 21:37:34
Guten Abend Franz,
Erstmal Danke für deine Hilfestellung. Ich habe mich mal daran versucht, jedoch komme ich nicht weiter.
Das berechnete Feld habe ich in der Tabelle erstellt Spalte V/N.
Die Abfrage habe ich auch nach "Büro" gruppiert. Ergebnisse E 01 usw. wird nun nur einmal angezeigt. Jedoch keine Namen.
Da komme ich leider nicht weiter. Die Prozedur habe ich erstellt, verstehe jedoch nicht wie ich die aufrufen und den String in ein Feld schreiben kann.
Kann die Datei nicht hochladen da die Endung accdb ist. Über weitere Hilfestellungen wäre ich sehr dankbar.
Gruss
Walker950
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: MzKlMu am Dezember 14, 2019, 21:53:38
Hallo,
mache ein Zip-file aus der accdb, dann kannst hochladen.
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: walker950 am Dezember 15, 2019, 18:20:36
Guten Abend Klaus

Anbei die gezipte Datei. Ich hoffe jemand versteht was ich versuche.
Danke und Gruss
Walker950
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: DF6GL am Dezember 15, 2019, 19:59:54
Hallo,

wir verstehen schon, was Du suchst.... 8)


Anbei die DB mit zwei Abfragen:

qry_Sqlliste benutzt die Funktion SQLListe  mit  Separatorzeichen "|" unabhängig der Gruppenanzahl
qry_Sqlliste erzeugt "," bei bis zu 4 Personen in einer Gruppe,  "|" bei mehr als 4 Personen.

Wie das gelöst ist, findest Du selbst heraus... ;)

Zudem habe ich die Objektnamen allesamt vernünftig benamst und Sonder- und Leerzeichen eliminiert sowie das berechnete Tabellenfeld entfernt.  Das ist unnötig.


Warum da aber ein Pipeline-Zeichen anstatt des Komma bei mehr als 4 Personen benutzt werden soll, würde noch interessieren...
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: walker950 am Dezember 15, 2019, 21:28:49
Guten Abend,

Ich danke dir für deine Hilfe, so habe ich das mir vorgestellt.
Die DB soll als Übersicht dienen welcher Mitarbeiter in welchem Büro sitzt.
Wenn neue kommen werden diese erfasst, bei Umzügen die Büro Nr geändert und wenn einer geht wird der Datensatz gelöscht.

Aus der DB sollen Büro- und Postfachbeschriftungen  E 01 / HM - AH - DF - RM usw. mit einem P-Touch gedruckt werden. Bei mehr als 4 Personen wird das Pipeline-Zeichen zur optischen Abtrennung der Namen verwendet.
Bei neuen Mitarbeitern wird noch im Format A4 eine Seite gedruckt mit seinen Angaben.

Ist es möglich aus der Abfrage qry_SqlListe die Daten in eine neue Tabelle zu schreiben? Habe gerade bemerkt, dass die P-Touch Editor Software nur Tabellen akzeptiert.
Gruss
walker950
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: DF6GL am Dezember 15, 2019, 22:25:15
Hallo,

Insert into tbl_NeueTabelle from qry_Sqlliste1
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: walker950 am Februar 05, 2020, 16:03:40
Hallo zusammen

Nach längerer bedingter Auszeit kann ich mich nun wieder mit Access beschäftigen.
ich versucht mich in das Beispiel einzuarbeiten, komme aber nicht weiter.

Fragestellung:
1. Bei der sqlliste1 ist hinterlegt wenn mehr als 4 Namen, dann mit | trennen das geht.
bis zu vier Namen habe ich einen leerschlag darin soweit so gut.
jetzt zu meinem Problem, wenn ich nur 4 Namen habe soll jeder Name in einer eigenen Spalte stehen. Da ich im Etiketten Editor P-touch  eine Vorlage habe wo 4 Namen darauf sollen. verstehe nicht wie ich es teilen kann.
2. Fü ein anderes Etiketten Layout habe ich im Modul folgende gesetzt.
'Namenliste = " / " & SQLListe("select Pers_Kurzzeichen from tbl_Personen Where Pers_Büro =  '" & strKrit & "'", strSep)
funktioniert soweit. leider bekomme ich die Bürobezeichnung nicht drauf.
Wer könnte mir das weiterhelfen?
Grüsse aus der Schweiz.
walker950
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: DF6GL am Februar 05, 2020, 16:49:20
Hallo,
1) ist eine ganz andere Vorgabe und die SQL-Liste kann nicht verwendet werden.  Vermutlich ist es hierbei erforderlich , eine Abfrage (SQL-String) dynamisch nach entspr. Datenkonstellation zusammenzusetzen.

Kannst Du nicht die P-Touch-Vorlage passend entwerfen?


2)
Wo "drauf" soll die Bürobezeichnung, d. h., wo soll sie stehen?
Vielleicht so:
Namenliste = " / " & SQLListe("select Pers_Kurzzeichen from tbl_Personen Where Pers_Büro =  '" & strKrit & "'", strSep) & " - " & strPersBüro

wobei strPersBüro eine Variable ist, die die Bürobezeichnung enthält.
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: walker950 am Februar 05, 2020, 19:23:53
Hallo
Die Überlegung das Layout vom P-Touch nachzubauen habe ich mal versucht mit einem Bericht Layout. Leider bekamm ich die Name nich so drauf wie im Anhang sichtbar. Der Vorteil des Editor es wird automatisch die Grösse angepasst.
Damit ich das ganze mit dem P-Touch Editor nutzen kann muss ich alles in Tabellen haben. Da es nur mit Tabellen verknüpft werden kann.
Da habe ich mir folgendes überlegt:
Tabellenerstellungsabfrage und dann als Tabelle speichern. Bin mir jedoch nicht sicher ob das der richitge weg ist?
Meine SQL Kentnisse sind gleich Null. Hast du einen Tipp wo ich mir Grundlagen aneignen kann?
Gruss
walker950
Titel: Re: Mehrere Datensätze in einem Feld zusammen führen
Beitrag von: DF6GL am Februar 06, 2020, 12:51:34
Hallo,

Eine Tabellenerstellungsabfrage oder eine Anfügeabfrage sind schon für das Anlegen/Füllen einer Tabelle die richtige Methode

Solche Abfragen sind meist mit dem "Abfrageentwurfs-Editor" einfach zu erstellen. Den erzeugten SQL-String sieht man dann unter "SQL-Ansicht".

Mit Google findest Du auch jede Menge Tutorials zum Thema "MSAccess SQL"
Das Problem liegt hier aber nicht bei SQL, eher am Zusammensetzen eines geeigneten Strings für den Ausdruck.