Crosstab aus zwei Tabellen machen

Hallo Kenner und Könner,
ich habe keine Idee, wie ich das Folgende verwirklichen kann:

Ich habe eine Tabelle mit Firmennamen:

ID: Firma_Name:

123 Firma A
124 Firma B
125 Firma C
u.s.w.

In einer weiteren Tabelle habe ich Ansprechpartner in diesen Firmen. Diese sind verknüpft über die ID der Firma und indiziert über einen AutoWert. Ich habe 0-x Ansprechpartner (APs) pro Firma:

AutoWert: ID_Firma: AP_Name:

1 123 Max Mustermann
2 125 Thomas Meyer
3 123 Michael Müller
4 124 Stefan Wiegehtdasnochmal

Nun muss ich aus diesen Informationen in crosstab erstellen, in dem in einer Zeile pro Firma in den rechten Spalten (sagen wir maximal 15 weil maximal 15 APs pro Firma) die Ansprechpartner stehen: erster AP in der ersten Spalte, zzweiter AP in der zweiten u.s.w.:

ID: Firma_Name: AP1: AP2: AP3: …

123 Firma A Max Michael
124 Firma B Stefan
125 Firma C Thomas

Wie kriege ich das hin? Hat jemand eine Idee?

DANKE!

Hallo,

hast Du selber schon beantwortet:

crosstab --> Kreuztabellenabfrage

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz!

Leider eben nicht. Denn das setzt voraus, dass ich einen verwertbaren Feldinhalt als Spaltenüberschrift nehmen könnte. Den habe ich aber nicht, da die einzelnen APs pro Firma aus der langen Liste irgendwo zusammen gesucht werden müssen.

Ich müsste die Liste der APs irgendwie mit einem Feld anreichern, was mir sagt "für die Firma mit dieser ID ("123) ist das AP1. Dann könnte ich das in die erste AP-Spalte packen.

Wie bekomme ich das hin? Ich kann das nicht per Hand machen, die Liste hat über 10.000 Einträge. Außerdem ändert sich diese Liste der APs ständig: es fallen welche weg, andere kommen irgendwann hinzu.

Hallo,

vielleicht hift: „Fixierte Spaltenüberschriften“

Viele Grüße vom Bodensee
Franz, DF6GL

ich komme leider nicht weiter. Ich habe nichts an verwertbaren Spaltenüberschriften. Ich könnte die ID des Ansprechpartners nehmen, dann hat meine Tabelle aber endlos viele Spalten (eben so viele wie APs vorhanden sind).

Außerdem ist dass das Wichtigste gar nicht verwirklicht:

  • erster Ansprechpartner links, weitere Ansprechpartner (falls vorhanden) dann in den Spalten rechts daneben.

Fixierte Spaltenüberschriften hilft nicht, da die Spalten (so wie sie jetzt wären) bei jeder einzelnen Firma anders wären.

Also: wie bekomme ich eine Prozedur hin, die mir die Liste meiner APs durchsucht und Lfd Nummern pro Firmen_ID liefert?

irgend sowas müsste die Lösung bringen.

Hat jemand (Du, Franz?) eine Idee?

Peter

Hallo,

dynamisches Erzeugen von Spalten in Auswahl-Abfragen wird nicht gelingen.

Zum Erzeugen einer Csv-„Liste“ (alle Namen in EINEM Feld( kannst Du versuchen, das umzusetzen:

http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Liste_…

Das Wichtigste: Wodran kennt man den „ersten“ oder „dritten“ oder … ?

Viele Grüße vom Bodensee
Franz, DF6GL

1 „Gefällt mir“

Hallo!
Danke!
Der link geht zwar (gerade) nicht, aber ich werde mir das mal anschauen.
Den „ersten“ und „zweiten“ etc. erkennt man ganz einfach in der Reihenfolge, wie sie in der langen Liste der Ansprechpartner auftauchen (also: niedrigste ID = erster).

Daher war ja meine Idee, eine Abfrage zu erstellen, die ein zusätzliches Feld schafft mit Lfd-Nummer pro Firmen_ID (sowas funktioniert ja in der Berichts-Erstellung wo ich eine „Laufende Summe über Gruppe“ (Gruppe hier: Firmen_ID) listen lassen kann.

Geht sowas auch in einer Prozedur und der Erstllung einer
(temporären) Tabelle?

Dann hätte ich nämlich ein Feld, welches mit 1 bis maximal 15 (da es maximal 15 Ansprechpartner pro Firma gibt) gefüllt ist, sich also prima als spaltenüberschrift für mein crosstab eignen würde… .

Peter

Hallo,

vielleicht geht dieser:

http://web.archive.org/web/20080307061808/www.dbwiki…

und zur laufenden Summe:

http://www.donkarl.com/?FAQ3.11

Ansonsten halt VBA bemühen, mit dessen Hilfe eine passende Tabellenstruktur erstellt und die Tabelle mit Daten gefüttert wird.

Habe aber gerade keinen solchen Code zur Hand.

1 „Gefällt mir“

Danke!

Ich glaube, Donkarl 3.11 bringt mir die Lösung!

Ich versuche es nachher gleich mal.

Danke

Peter

so, ich hab’ es nun gelöst (Danke Franz für das brainstorming!).

Ich habe nach Donkarl 3.11 eine zusätzliche Spalte in einer Abfrage positioniert, welches folgendermaßen errechnet wird:

Lfd_AP_Firma: (Select Count (*) FROM [Ansprechpartner] as Temp WHERE [Temp].[Firmen_ID] = [Ansprechpartner].[Firmen_ID] and [Temp].[AP_ID]