Hallo zusammen,
bin schon seit mehreren Tagen auf der Suche nach einer Lösung für mein Problem und leider noch nicht wirklich fündig geworden. Hoffe ihr könnt mir weiterhelfen, denn bin nicht der super Crack in Access.
ich habe mir eine DB zusammengebastelt und gemäss "Vorschrift" gewisse Hilfstabellen für Auswahlfelder genutzt. Mittlerweile ist die ganze Geschichte auch sehr komplex geworden.
Nun möchte ich eine Abfrage und später dann auch Report generieren in dem die Werte immer nur einfach erscheinen und nicht mehrfach. Die DISTINCT Lösung hab ich bereits erfolglos versucht.
Also hier mal ein Beispiel zum besseren Verständnis:
Tabelle1_name
ID_name
Name
Vorname
Tabelle2_farbe
ID_farbe
Lieblingsfarben
Tabelle3_stadt
ID_stadt
Lieblingsstädte
Die Tabellen sind mit Hilfstabellen miteinander verknüpft dass ein Name ein oder mehrere Lieblingsfarben wie auch Lieblingsstädte haben kann.
z.b. Aufbau Hilfstabelle_Farbe
ID_hilfstabelle
ID_name
ID_farbe
Max Mustermann könnte also gerne rot und blau haben, sowie Berlin, München und Frankfurt als Lieblings Städte haben.
Wenn ich nun eine Abfrage erstelle kommt folgendes Ergebnis:
Max Mustermann rot München
Max Mustermann blau München
Max Mustermann rot Berlin
Max Mustermann blau Berlin
Max Mustermann rot Frankfurt
Max Mustermann blau Frankfurt
Ich hätte aber gerne das es wie folgt dargestellt wird:
Max Mustermann rot Berlin
blau Frankfurt
München
Also, Farben und Städte stehen in keinem Verhältnis, sondern sollen einfach nur aufzeigen, dass Max Mustermann diese zugeordnet bekommen hat.
Ich hoffe ich hab das irgendwie verständlich erklärt, ist nämlich gar nicht so einfach ;)
Wäre super wenn mir jemand weiterhelfen könnte.
Viele Grüss
Martin
Hallo,
die gewünschte Darstellung lässt sich mMn mit einer Abfrage nicht erreichen.
In einem Bericht würde das gehen, problemlos.
Abfragen sollte man ohnehin nicht direkt anzeigen.
Hallo Klaus,
vielen dank für deine Feedback.
Schade, dass das nicht in einer Abfrage zu lösen ist. Mit einem Report habe ich es auch schon vergeblich versucht.
Hast du irgendwelche Tips wie ich zum gewünschten Erfolg kommen könnte?
Lieber Gruss
Martin
Hallo,
die gewünschte Darstellung lässt sich mit einem Bericht auf Basis der "Tabelle1_name" und zwei Unterberichten erreichen. Die Unterberichte sind mit dem Hauptbericht über "id_name" verknüpft und basieren jeweils auf einer Abfrage welche die Lieblingsfarben bzw. Lieblingsstädte liefert.
Alternativ könnten auch Listenfelder eingesetzt werden, deren Größe abh. von der Zeilenanzahl dynamisch angepasst werden müsste.
Auch mit einer Abfrage wäre das machbar, in welcher die dbWiki-Funktion "SQLListe (http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen)" zum Einsatz käme.
Hallo MaggieMay,
danke für deine Inputs.
An der Lösung mit den Unterberichten bin ich gerade am rumprobieren, scheint ganz gut zu funktionieren.
In die "SQLListen" Funktion muss ich mich mal einarbeiten und testen. Wäre super wenn das auch klappen würde.
Lieber Gruss
Martin
Das klappt ganz gewiss :-), als Trennzeichen kannst du auch den Zeilenumbruch (vbCrLf) übergeben.
PS:
Was ich noch sagen wollte: Was du "Hilfstabellen" genannt hast sind im normalen Sprachgebrauch Zwischen- oder Verknüpfungstabellen. Als Hilfstabelle bezeichnet man bspw. eine Kalendertabelle, welche fortlaufende Datumsangaben (ggfls. über mehrere Jahre) für die vereinfachte Auswahl nach Zeitbereichen o.ä. in SQL-Abfragen enthält - also eine Tabelle die zur Arbeitserleichterung dient aber nichts mit der eigentlichen Datenhaltung zu tun hat.
Hallo ich bin's nochmals,
ich hatte nun über die Feiertage ein wenig Zeit mit den Lösungsvorschlägen rumzuspielen, aber leider bin ich nur bedingt zum gewünschten Ergebnis gekommen.
Das mit den Berichten funktioniert ganz gut, aber sobald ich diese nach Excel exportieren möchte, versemmelt es das ganze Format. Hab mittlerweile herausgefunden, dass Access den Export von Unterberichte nach Excel nicht unterstützt.
Hab mich daher auch an der SQL Liste versucht aber mit wenig Erfolg. Irgendwie schein ich das nicht so richtig hinzubekommen und ich kann leider die Angebotene Beispieldatei nicht öffnen, da ich kein Access97 mehr habe.
Hab zum besseren Verständnis meines Problems Screenshot angehängt. Bilder sprechen ja bekanntlich mehr als Wort :-)
Wäre super wenn mir hier jemand weiterhelfen könnte.
@MaggieMay; danke für die Erklärung, es handelt sich natürlich bei mir um Zwischen- bzw Verknüpfungstabellen.
Lieber Gruss
Martin
Hallo,
Zitat
Wenn ich nun eine Abfrage erstelle kommt folgendes Ergebnis:
Max Mustermann rot München
Max Mustermann blau München
Max Mustermann rot Berlin
Max Mustermann blau Berlin
Max Mustermann rot Frankfurt
Max Mustermann blau Frankfurt
Ich hätte aber gerne das es wie folgt dargestellt wird:
Max Mustermann rot Berlin
blau Frankfurt
München
Erstelle einen Bericht auf Basis dieser Abfrage und gruppiere im Bericht nach Namen, Farbe und Stadt.....
Hi,
Zitatund ich kann leider die Angebotene Beispieldatei nicht öffnen, da ich kein Access97 mehr habe.
die Beispiel-DB brauchst du nicht, der Code inkl. Beispielaufruf steht ja auch im dbWiki-Artikel.
ZitatErstelle einen Bericht auf Basis dieser Abfrage und gruppiere im Bericht nach Namen, Farbe und Stadt
Das wird aber nicht das gewünschte Ergebnis liefern können.
Am einfachsten ist es tatsächlich, die Zusammenfassung der Attribute bzgl. Farbe und Stadt mit Hilfe einer Funktion wie "SQLListe" in einer Abfrage vorzunehmen.
So könnte das in deinem Fall aussehen:
Select Nachname, Vorname,
SQLListe("Select Farbe From tbl_Farben AS f INNER JOIN tbl_Name_Farbe AS h ON f.ID_Farbe = h.ID_Farbe Where h.ID_Name = " & tbl_Name.ID_Name, CHR(13) & CHR(10)) AS Lieblingsfarben,
SQLListe("Select Stadtname From tbl_Staedte AS s INNER JOIN tbl_Name_Stadt AS h ON s.ID_Stadt = h.ID_Stadt Where h.ID_Name = " & tbl_Name.ID_Name, CHR(13) & CHR(10)) AS Lieblingsstädtewobei die Feld- und Tabellennamen natürlich noch angepasst werden müssen.
Guten Morgen,
danke für die Feedbacks, ich hab mich nochmals an die SQLListe getraut und deinen Code MaggieMay, bzw die DB Namen entsprechend angepasst.
Nun hab ich dennoch 1-2 Fragen, den Code pack ich in die SQL Ansicht, der Abfrage korrekt?
Wenn ich das so mache, kommt beim Ausführen immer die Fehlermeldung >Undefinierte Funktion "SQLListe" in Ausdruck.<.
Ich gehe davon aus, dass ich die SQLListen Funktion nicht richtig platziert habe. Die befindet sich im Moment in einem Modul, ist das korrekt? oder wo muss ich die hin packen?
Ich kann die SQLListen Code 1:1 kopieren oder muss da auch irgendetwas angepasst werden?
Vorerst letzte Frage: die am Ende deines Codes befindlichen AS Lieblingsstädte und AS Lieblingsfarben, sind das Feldnamen / Listenbezeichnungen, welche ich in meiner Abfragen irgendwo benutzen muss?
Liebe Grüsse
Martin
Hallo,
ZitatDas wird aber nicht das gewünschte Ergebnis liefern können.
In der Tat, hatte "Farben und Städte stehen in keinem Verhältnis" überlesen...
@Bottwalker:
Du sprichst von Berichten und Export nach Excel... Was genau willst Du denn überhaupt mit dem ganzen Vorgang erreichen und damit dann machen?
Vielleicht genügt ja auch schon:
SELECT Null as Vorname, Null as NachName, Null as FarbeName , StadtName from Abfrage1
Union
SELECT Null as Vorname, Null as NachName, FarbeName , Null as StadtName from Abfrage1
UNION
SELECT Vorname, NachName ,Null as FarbeName, Null as StadtName from Abfrage1
ORDER BY NachName DESC , FarbeName DESC , StadtName DESC
Hallo Franz,
kein Problem.
Ja schlussendlich sollte die Abfrage oder Report nach Excel exportiert werden.
Soll eine Art Übersicht für die Kollegen werden, welche jedoch kein Access installiert haben, ich Ihnen aber die Möglichkeit geben möchte in Excel einfach nach den gewünschten Informationen zu suchen / sortieren.
Hab deinen Code ausprobiert, Abfrage1 findet er nicht und wenn ich es in Abfrage ändere gibt es einen Zirkelbezugfehler :(
Gruss
Martin
Hallo,
Dort muss der Name Deiner Abfrage stehen...
Zitat
Wenn ich nun eine Abfrage erstelle kommt folgendes Ergebnis:
PS:
Zitat
Soll eine Art Übersicht für die Kollegen werden, welche jedoch kein Access installiert haben, ich Ihnen aber die Möglichkeit geben möchte in Excel einfach nach den gewünschten Informationen zu suchen / sortieren.
Das versteh ich erst recht nicht...
Hallo Franz,
funktioniert leider nicht, dann kommt immer die Zirkelbezug Fehlermeldung.
Muss ich denn eine Neue Abfrage erstellen und den SQL Code dort eingeben oder wie ist das Gedacht?
Meine DB ist wie oben in dem Screenshot aufgebaut.
ZitatSoll eine Art Übersicht für die Kollegen werden, welche jedoch kein Access installiert haben, ich Ihnen aber die Möglichkeit geben möchte in Excel einfach nach den gewünschten Informationen zu suchen / sortieren.
ZitatDas versteh ich erst recht nicht...
Was verstehst du hier nicht. Alle Daten befinden sich in einer DB, (es handelt sich hierbei um weitaus mehr als nur Farben und Städteinformationen) und die Kollegen sollen einen Report oder Extrakt der gewünschten Informationen bekommen gemäss beschriebener Struktur. Dachte mir Excel ist hier die einfachste Lösung da es erstens jeder kennt und zweitens jeder dann einfach Filter und Sortierfunktionen erstellen kann wie gewünscht.
Wäre super wenn es noch eine andere einfache Lösung gäbe, um die Infos mit den Kollegen teilen zu können.
Ein Report zu erstellen in PDF find ich nicht so "prickelnd"
Gruss
Martin
Hallo,
ich verstehe nicht, wie der User mittels Suche in Excel an die DB-Daten kommen sollte...
Oder willst Du gesamte DB nach Excel exportieren und der User soll dann in diesen Excel-Daten herumsuchen?
Dein Konzept ist mir unklar.. Wenn wir das besser klären könnten, gäbe es vielleicht einen besseren Weg, damit der User an seine Infos kommt.
Als alternativer Weg ist hier Excel-Automation ("Fernbedienung" von Excel mittels Access-VBA) zu erwähnen. Damit könnten Excel-Zellen gezielt mit Tabellendaten versorgt werden.
(btw: Es ist auch möglich, aus Excel heraus (und ohne Access zu haben) auf eine Access-DB und deren Daten zuzugreifen. Weiterhin könnte man auch die kostenlose Access-Runtime beim User installieren, so dass der User nicht die Access-Vollversion benötigt.)
Hallo Franz,
die Idee war aus einer Abfrage einen Excel Export zu machen mit der anfänglich beschriebenen Struktur. Es handelt sich hierbei nicht um die komplette DB, welche dem User auch nicht zugänglich sein soll. Es ist lediglich ein Export von Teildaten.
Die Access-Runtime Lösung hatte ich mir auch schon überlegt, scheitert aber leider an gewissen Unternehmensrichtlinien. Hatte diesbezüglich schon eine ausschweifende Diskussion mit unserer IT Abteilung (erfolglos :( )
Auch eine Access-Installation auf den anderen Rechnern kommt aus dem selben Grund nicht in Frage.
Somit bleibt mir nur die mir bekannte Excel-Export Lösung.
Die "Fernbedienung" hört sich interessant an, ist das relativ einfach umzusetzen oder benötigt man da tiefere VBA Kenntnisse. Denn ehrlich gesagt sind diese bei mir nicht wirklich vorhanden, ich hangle mich so mit copy & paste durch ;D. Kleinere Code-Anpassungen bekomme ich dann irgendwie meistens hin.
Daher wie kompliziert ist die Excel-Automation mittels Access-VBA oder lässt sich das ganze dann doch eher einfacher mit einer Abfrage und dann Exportfunktion lösen?
Lieber Gruss
Martin
Hallo,
ZitatEs ist lediglich ein Export von Teildaten
Ok, das kann ich noch nachvollziehen. Nichtsdestotrotz müssen diese Teildaten strukturell und logisch zusammenhängend sein, wie sollen sonst zusammenhängende Daten gefunden werden.
Eine solche Teildaten-Struktur kannst Du einfach nach Excel mit Transferspreadsheet exportieren, indem Du eine Abfrage erstellst, die über alle benötigten Tabellen verknüpft und nur die user-relevanten Daten enthält (Select-Liste und Filterkriterium).
Dieses Excel-Sheet ist dann natürlich nicht mehr db-gerecht aufgebaut (normalisiert), bietet aber die gewünschten von Excel bereitgestellten Such- und/oder Sortierfunktionen.
Hallo,
Zitat von: Bottwalker am Dezember 30, 2015, 11:10:33kommt beim Ausführen immer die Fehlermeldung >Undefinierte Funktion "SQLListe" in Ausdruck.<.
die Funktion kann 1:1 verwendet werden und gehört in ein allgemeines Modul, das unter einem anderen Namen zu speichern ist.
Zitatdie am Ende deines Codes befindlichen AS Lieblingsstädte und AS Lieblingsfarben, sind das Feldnamen / Listenbezeichnungen, welche ich in meiner Abfragen irgendwo benutzen muss?
Das sind die Feldnamen, die im Abfrageergebnis erscheinen.
Hallo MaggieMay,
ok danke, ich hab den code soweit angepasst und das Modul eingefügt das er zumindest mal funktioniert und keine Fehlermeldung mehr bringt. Jedoch scheint die Abfrage noch nicht wie gewünscht zu funktionieren. Es erscheint nun immer nur der erster Eintrag jeweils als Lieblingsstadt bzw. Lieblingsfarbe.
Hier mal der SQL code:
SELECT [tbl_Name]![Vorname] AS Name, [tbl_Name]![Nachname] AS Nachname,
SQLListe("Select Stadtname From tbl_Stadt AS s INNER JOIN tbl_Name_Stadt AS h ON s.ID_Stadt = h.ID_Stadt Where h.ID_Name = " & [tbl_Name].[ID_Name],Chr(13) & Chr(10)) AS Lieblingsstadt,
SQLListe("Select Farbenname From tbl_Farben AS s INNER JOIN tbl_Name_Farbe AS h ON s.ID_Farbe = h.ID_Farbe Where h.ID_Name = " & [tbl_Name].[ID_Name],Chr(13) & Chr(10)) AS Lieblingsfarbe
FROM tbl_Name;
Irgendwie läuft da was schief :(, weisst du vielleicht was es sein könnte?
Hab zum besseren Verständnis nochmals einen Screenshot vom Abfrageergebnis angehängt
Lieber Grus
Martin
Hi,
wenn das Ergebnis-Datenblatt nur einzeilig angezeigt wird, ist es kein Wunder, dass du nicht alles siehst, da die per SQLListe erzeugten Spalten ja mehrzeilig sind. :D
BTW:
Die Bezeichnung "Name" bezogen auf Nachname oder Vorname von Personen ist unsinnig, weil es bessere Bezeichnungen als "Vorname" und "Nachname" gar nicht geben kann. Anders sähe es aus, wenn du beides zu einer Spalte zusammenfügen würdest, aber auch dann sollte "Name" als Bezeichnung nicht verwendet werden, weil es in Access (und sonstwo auch) ein reserviertes Wort ist.
Guten Morgen MaggieMay,
ok, das mit dem Namen klingt logisch, sollte aber weiter keni Problem sein, da es sich ja im die hier angegebene DB lediglich um eine TEST DB handelt. In der Live DB gibt es zum Glück keine Namen :). Werde deinen Input aber zukünftig berücksichtigen.
Bzgl. einzeilig bzw mehrzeilig stehe ich glaube ich auf dem Schlauch. Wie ändere ich denn das Abfrageergebnis in der Datenblattansicht in mehrzeilig?
Viele Grüsse
Martin
Verändere ganz einfach die Zeilenhöhe durch Ziehen am linken unteren Rand, das wirkt sich einheitlich auf alle Zeilen aus.
Perfekt, jetzt funktioniert es genau so wie ich mir das vorstelle :D
Vielen Dank euch allen für die Hilfe!
Lieber Gruss
Martin