Hallo zusammen,
bin absoluter access (2007) beginner und habe eine vermutlich ganz einfache Frage.
Ziel war es ein Tool zu haben, mit dem ich konsistent verwalten kann, welche Messen ein bestimmter Kunde besucht und
welche Kunden eine bestimmte Messe besuchen (inverse Abfrage).
Die DB habe ich nun wie folgt modelliert:
Tabelle Kunden: KundenID, Kundenname, Status
Tabelle Messen: MessenID, Messename, Region
Tabelle KundenUNDMessen: Kundenname (Nachschlagefeld), Messename (Nachschlagefeld)
Die Tabelle KundenUNDMessen ist also die Verknüpfungstabelle für meine m:n Beziehung.
In der Verknüfungstabelle habe ich dann probehalber ein paar m:n Beziehungen eingetragen.
Öffne ich nun z.B. die Kundentabelle, so ist KundenUNDMessen das Unterdatenblatt -> Alles prima!
Problem:
Ich sehe im Unterdatenblatt immer nur die Spalte Kundenname, gern würde ich aber auch die Spalte Status angezeigt bekommen.
Was muss ich einstellen? Was mache ich verkehrt?
Datensatzherkunft für Spalte Kundenname sieht wie folgt aus: SELECT Kunden.[IDKunden],[Kunden].[Kundenname],[Kunden].[Status] FROM Kunden ORDER BY [Kundenname]
Geht das, was ich will, überhaupt?
Tausend Dank im Voraus.
Euer Jensebluemchen
Hallo,
ZitatTabelle KundenUNDMessen: Kundenname (Nachschlagefeld), Messename (Nachschlagefeld)
Wirf die Nachschlagefelder wieder raus. Die Tabelle sollte so sein:
Tabelle KundenUNDMessen: KundenUNDMessenID, KundenID, MesseID
Nachschlagefelder verhindern den sauberen Aufbau einer DB.
Die Dateneingabe erfolgt mit einem Hauptformular (alle Kundendaten auch Staus) und einem Unterformular (KundenUNDMessen) in dem die besuchten Messen ausgewählt werden können. In die Tabelle "KundenUNDMessen" sollte noch ein Datumsfeld, damit man auch noch die Jahre unterscheiden kann. Es sei denn, die Messn sind bereits mit den Jahren erfasst.
Zu den Nachschlagefeldern:
Die Nachteile von Nachschlagefeldern (http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern)In Formularen sind die Nachschlagefelder (Kombinationsfelder) kein Problem.
Wow, das ging ja fix,
bin total begeistert. Vielen Dank erstmal für die Tipps.
Ich hatte das Prob auf das wesentliche reduziert, weil ich glaubte, es wäre so einfacher zu lösen.
Tatsächlich ist meine DB viel komplexer.
Für die Eingabe der Daten in die Hauptabellen Kunden, Messen, Konferenzen, Produktgruppen habe ich Formulare (Hauptformulare) gebaut.
Jede Haupttabelle besitzt natürlich viel mehr Spalten,
bei der Kundentabelle sind dies z.B.: KundenID, Kundenname, Firmensitz, Region, Relevanz, Status, Anmerkungen, Postadresse, Ansprechpartner, Festnetz, Fax, Mobil, Email, Website.
Alle anderen Haupttabelle haben ähnlich viele Spalten.
Dann habe ich m:n Verknüpfungstabellen definiert: KundenUNDMessen, KundenUNDKonferenzen, KundenUNDProduktgruppen.
Die Verknüpfungstabellen habe ich dann sinnvoll in die Hauptformulare eingefügt.
Beispiel: Konkret kann ich so z.B. im Hauptformular Kunden die Kundenstammdaten eingeben und - um beim Beispiel Messen zu bleiben - über das eingebundene Unterdatenblatt KundenUNDMessen auch festlegen oder abfragen, welche Messen der Kunde besucht, wobei über Listenfelder nur jene Messen ausgewählt werden können, die vorher im Messenhauptformular definiert wurden. Das funktioniert an sich völlig super und konsistent.
Umgekehrt kann ich nun im Hauptformular Messen die Messestammdaten eingeben (natürlich auch Datum und Dauer:-)), und ich kann - da ich auch hier das Unterdatenblatt KundenUNDMessen eingebunden habe - nun über Listenfelder eingeben oder abfragen, welche Kunden diese Messe besuchen, sofern diese Kunden schon über das Kundenhauptformular angelegt wurden. Das ist alles Hammer konsistent!
Die DB ist so bereits auf stolze 1,6 MB angewachsen, hat also 100 - 200 Datensätze in jeder Haupttabelle, insgesamt ca. 1000 DS mit 12...13 Spalten.
Zurück zu Deiner Antwort.
Ganz verstanden habe ich nun noch nicht, ob und wie mit Deinem Vorschlag die inverse Abfrage möglich ist, also die m:n Beziehung realisiert sein soll. Anders gefragt, wie bekomme ich die Referenzen (Intelligenz) in die Tabellen?
Auch ein Formular kann doch nur die Information (zugegeben konfortabler) wiedergeben, die in Tabellen hinterlegt ist, oder irre ich mich?
Muss die Referenzierung dann über die Formulare erfolgen? Denn zwischen den Tabellen gibts ja keine mehr. Habs ausprobiert: Keine Listenfelder mehr, keine Auswahlmöglichkeiten, keine Referenzen.
Des weiteren ist es so, dass mir eine Referenzierung auf Formularebene gar nichts nützt.
Denn die harte Auswertung erledige ich über Tabellen. Die Abfrage "welche Kunden gehören zu welcher Produktgruppe?" mache ich dann wie folgt:
Tabelle Produktgruppe öffnen > Unterdatenblatt KundenUNDProduktgruppe öffnen > bei der gewünschten Produktgruppe aufs "+" klicken > Kunden werden angezeigt > Kundenliste markieren und kopieren > Kundenliste in Powerpoint einfügen usw.
Alle Logik sollte doch daher bereits in den Haupttabellen drin sein!?
Vielleich ist es aus diesen Gründen einfacher, alles so zu belassen wie es ist.
Vielleicht gibt es ja einen "Schalter", der macht, dass in den Tabellen alle Spalten des gewählten Unterdatenblattes angezeigt werden ...
Tausend Dank im Voraus.
Gruß
Jensebluemchen
Hallo,
ZitatDie Verknüpfungstabellen habe ich dann sinnvoll in die Hauptformulare eingefügt.
Nein, das ist nicht sinnvoll. In das Hauptformular kommen nur die Kundendaten, sonst nichts.
Die Verknüpfungstabellen kommen in Unterformulare die mit dem Hauptformular verknüpft werden. Dadurch erfolgt eine automatische syncronisation und das Schlüsselfeld wird automatisch in die Verknüpfungstabellen übertragen.
ZitatDenn zwischen den Tabellen gibts ja keine mehr.
Wieso gibt es in den Tabellen keine Referenzen mehr? Jede zwischentabelle hat 2 1:n Beziehungen.
ZitatKeine Listenfelder mehr, keine Auswahlmöglichkeiten, keine Referenzen.
Du sollst die Nachschlagefelder nur in den Tabellen entfernen, im Formular kannst Du diese bedenkenlos verwenden.
Lade mal die DB mit einigen Spieldatensätzen hier hoch.
Hallo MzKlMu,
anbei die DB.
Es ist e i n zip Archiv.
Bitte von jeder Datei die Endung .zip löschen.
Vielen Dank
[Anhang gelöscht durch Administrator]
Hallo,
ich würde das mit ganz klassischen Unterformularen lösen. In diesen kannst Du auch die Kombis anlegen.
Anbei mein Beispiel. Ich habe nur das gelassen was zum Zeigen jetzt wichtig ist. Die Nachschlagefelder sind entfernt. Weiterhin ist es falsch Datumsfelder in 3 Feldern (Jahr, Monat und Tag) zu speichern. Wozu soll das gut sein? Das lässt sich aus dem Datum ermitteln und anzeigen bei Bedarf.
Wo willst Du jetzt eigentlich den Status angezeigt haben, der steht doch schon im Hauptformular.
Anbei das verkleinerte Beispiel im Format Access2000.
PS:
Ich finde es unfair, in einem anderen Forum das noch mal anzufangen. Normalerweise steige ich dann sofort aus. Ich habe es aber erst jetzt gesehen und da war das Beispiel fertig ;D. Lasse das bitte in Zukunft. Und lies die Regeln des Forums, da steht auch, dass das nicht erwünscht ist.
[Anhang gelöscht durch Administrator]
Hallo MzKlMu,
gleich zum PS. Da hast Du natürlich Recht! Da habe ich nicht nachgedacht. Sorry dafür.
Bin da wirklich noch ein newbie. Nicht, dass ich nicht poste, ich machs halt nur alle paar Jahre mal.
Vielen Dank für Deinen Vorschlag.
In diesem sehe ich also die Anwender und kann eintragen/abfragen, welche Messen sie besuchen.-> Prima
Vermutlich baue ich nun nach dem gleichen Schema ein Formular+Ufo für Messen, in welchem ich dann sofort und ohne etwas eingeben zu müssen, sehen kann, von welchen Anwendern eine bestimmte Messe besucht wird. -> Prima
Meine Bedenken:
1. Das wäre dann für jede Haupttabelle noch ein Formular mehr
2. Zu der gewünschten tabellarischen Übersicht (z.B. für einen bestimmten Anwender x alle Messen mit Region, Starttermin, Endtermin, etc. tabellarisch darstellen) komme ich dann vermutlich über einen Bericht? Das wäre dann noch ein Dokument mehr.
3. ich muss meine m:n Tabellen (ca. 1600 DS) nochmals aufbauen -> Null Bock!
Vermutlich geht es aber auch nicht anders. Ich werde mich Anfang nä. Wo. damit eingehender auseinandersetzen.
Melde mich danach nochmals.
Vielen Dank bis dahin und
ein schönes WE
jensebluemchen
Hallo MzKlMu,
habe nach einigem Herumprobieren nun Deinen Vorschlag verstanden und umgesetzt.
Hat leider ein wenig gedauert. Nun bin ich dabei auf ein Problem gestoßen, dass bereits in
anderen Foren diskutiert wurde. Jedoch funktioniert die dort angegebene Lösung nicht bei
meiner DB.
Konkret: Wenn ich in Deinem Beispiel auf dem Anwenderformular einen Bericht erstelle,
der die Felder Region, Relevanz und Status enthält, so werden mir im Bericht nur
Zahlen angezeigt, im Formular ist jedoch alles fein als Text dargestellt. Was mache ich falsch?
Danke bis hierher.
Jensebluemchen
Hallo,
nimm in die Abfrage für den Bericht die Tabellen mit den Klartexten (mit den Beziehungen) mit dazu. Dann hast Du auch die Felder mit den Texten zur Anzeige im Bericht. Stelle dann einfach den Steuerelementinhalt der jetzigen Zahlenfelder auf die entsprechenden Textfelder um.
Es muss nichts programmiert werden.
Hallo MzKlMu,
ZitatStelle dann einfach den Steuerelementinhalt der jetzigen Zahlenfelder auf die entsprechenden Textfelder um.
habe ich erledigt. Das hattest Du so auch in Deinem Beispiel, was ich übersah ...:-(
Nun stoße ich auf eine weitere Schwierigkeit in dem Zusammenhang.
Dein Vorschlag funktioniert gut für Kombifelder. Aber meine Datenherkunft sieht eiegentlich wie folgt aus:
SELECT Produktgruppen.ProduktgruppeID, Produktgruppen.Produktgruppename, Produktgruppen.Relevanz, Produktgruppen.Anmerkungen FROM Produktgruppen ORDER BY Produktgruppen.Produktgruppename;Wenn ich hier bei Relevanz die Zahlen wegbekommen möchte, kann ich nicht "den Steuerlementinhalt auf das entprechende Textfeld" umstellen.
Danke bis hierher
Jensebluemchen
Hallo,
ZitatDein Vorschlag funktioniert gut für Kombifelder.
Mein Vorschlag hat mit Kombifeldern nicht das geringste zu tun. Ich beziehe mich ausschließlich auf ganz normale Textfelder. Kombi und Listenfelder haben in einem Bericht auch nichts zu suchen.
Deine Abfrage umfasst ja nur eine Tabelle, da kann es ja keine Klartexte geben. Du musst in diese Abfrage die Tabellen mit den Klartexten mit dazunehmen. Erst damm kannst Du auch die Steuerelementinhalte anpassen.
Zu welcher Zahl Deiner Abfrage willst Du jetzt den Text?
Und ist die gezeigte Abfrage die Abfrage für den Bericht?
Hallo,
Zitatnimm in die Abfrage für den Bericht die Tabellen mit den Klartexten (mit den Beziehungen) mit dazu.
hast Du nicht gemacht, wenn "Relevanz" der Fremdschlüssel zu einer anderen Tabelle ("tblRelevanzen" ?? ) ist.
Die SQL (Abfrage für den Bericht) müsste dann etwa so aussehen:
SELECT Produktgruppen.ProduktgruppeID, Produktgruppen.Produktgruppename, Produktgruppen.Relevanz, Produktgruppen.Anmerkungen, tblRelevanzen.RelevanzBezeichnung
FROM Produktgruppen Inner Join tblRelevanzen on Produktgruppen.Relevanz = tblRelevanzen.RelevanzID
ORDER BY Produktgruppen.Produktgruppename
Hallo zusammen,
ok, muss das jetzt erstmal einpflegen.
Melde mich dann wieder.
Danke bis hierher
JB
Hallo zusammen,
an DF6GL: die SELECT Anweisung ist ja ganz prima (und funktioniert auch)
aber für das Formular ist bereits eine andere SELECT-Anweisung definiert.
E i n Formular mit z w e i SELECT und INNER JOINTs - wie soll das mit Textfeldern gehen?
JB
Hallo,
mhmm, naja, dann ändere die halt die "Definition"...
Ich befürchte aber, dass Du Dir noch kein Konzept bezgl. Formularaufbau und Formular-Bedienablauf gemacht hast.
Eine n-, bzw. n:m-Tabelle ist normalerweise mit einem Endlosform als UFO in einem (Haupt-)Einzelform mit Datenherkunft zu jeweils der geeigneten/gewünschten 1-Tabelle (!) darzustellen. Dabei braucht es gar keine Abfrage für die Forms, es müssen lediglich die Eigenschaften "Verknüpfen von/nach" des UFO-Steuerelementes auf die passenden Schlüsselfelder gesetzt werden.
Hallo zusammen,
ZitatIch befürchte aber, dass Du Dir noch kein Konzept bezgl. Formularaufbau und Formular-Bedienablauf gemacht hast.
Warum immer so negativ? Nur weil man versucht, den Kern eines Problems zu beschreiben, heißt dass grundsätzlich nicht, dass man sich nicht
auch um den Rest gekümmert hat.
Was Du vorschlägst, ist (dank MzKlM's Hilfe) bereits erledigt. Das Konzept ist fein. Formular + UFO Strukturen sind angelegt, alles funktioniert.
Nur halt die Zahlenzeigerei konnte ich nicht vorhersehen:-(
Für zweckdienliche Hinweise zu diesem Prob bin ich nach wie vor offen.
Vielen Dank und beste Güße
Jensebluemchen
Hallo,
ich bin nicht negativ, wenn ich etwas befürchte. Wenn meine Befürchtung nicht zutrifft, ist es ja in Ordnung, und wenn alles funktioniert, ist es noch besser.
Hallo,
ZitatFür zweckdienliche Hinweise zu diesem Prob bin ich nach wie vor offen.
Du hast doch bereits die Hinweise bekommen. Du musst in die Abfrage für den Bericht die Tabellen mit den Klartexten mit dazu nehmen. Dann hast Du auch die Texte statt der Zahlen. Und meine Rückfragen hast Du auch nicht beantwortet:
ZitatZu welcher Zahl Deiner Abfrage willst Du jetzt den Text?
Und ist die gezeigte Abfrage die Abfrage für den Bericht?
Hallo MzKlMu,
ZitatDu musst in die Abfrage für den Bericht die Tabellen mit den Klartexten mit dazu nehmen.
Meine diesbezügliche Antwort hatte am Freitag wohl das System gefressen.
Hier deshalb nochmal:
Was Du schreibst ist prima, und bringt die richtigen Ergebnisse in den Berichten.
Aber vergiss jetzt mal die Berichte, die sind nicht das Problem.
Ich brauche korrekte Formulare, denn mit denen wird in der Hauptsache gearbeitet.
Hier wäre eine gute Idee sehr willkommen.
Erstmal vielen Dank bis hierher
JB
Hallo,
ZitatIch brauche korrekte Formulare, denn mit denen wird in der Hauptsache gearbeitet.
Hier wäre eine gute Idee sehr willkommen.
Ja aber Du schreibst doch die Formulare sind OK, hast Du mehrfach beschrieben.
Ich zitiere:
ZitatFormular + UFO Strukturen sind angelegt, alles funktioniert.
und
ZitatWenn ich in Deinem Beispiel auf dem Anwenderformular einen Bericht erstelle,
der die Felder Region, Relevanz und Status enthält, so werden mir im Bericht nur
Zahlen angezeigt, im Formular ist jedoch alles fein als Text dargestellt. Was mache ich falsch?
Wo ist jetzt also das Problem?
Hier also die Datei.
[Anhang gelöscht durch Administrator]
Ok, die ForenPlattform ist etwas gewöhnungsbedürftig.
Geschriebener Text verschwindet bei Problemen und muss nochmals geschrieben werden ...
Hier also nochmals der Text zur Datei:
Hallo MzKlMu,
anbei Deine Beispiel, nun aber mit einer Spalte Region im UFO.
Im Hauptformular ist in der Spalte Text zu sehen->Prima.
Im UFO kommen da nur Zahlen:-(
Das ist das Problem.
Beste Grüße
JB
Hallo,
habe probehalber aus dem Textfeld Region im UFO ein Kombifeld gemacht.
So kann man den Trick mit den 2 Spalten und der Spaltenbreite 0cm;Xcm machen.
Jetzt stört nur noch der Aufklickbutton rechts am Feld, denn die Definition der Region soll im Hauptformular Region (todo) erfolgen
und nicht in den UFOs.
Jemand eine Idee wie man den Perpel wegbekommt?
Danke
Jensebluemchen
Hallo,
der Trick mit dem Kombi ist völlig daneben und überflüssig.
Die Tabelle mit dem Klartext muss in die Abfrage für das Ufo mit dazu. Nimm also in diese Abfrage die Tabelle mit der Region mit auf und ändere dann den Steuerelementinhalt auf "Region". Alles ganz einfach und ohne Tricks.
Für Berichte hatte ich Dir das schon mal geschrieben, das gilt ohne Änderung auch für Formulare.
Zitat von: MzKlMu nimm in die Abfrage für den Bericht die Tabellen mit den Klartexten (mit den Beziehungen) mit dazu. Dann hast Du auch die Felder mit den Texten zur Anzeige im Bericht. Stelle dann einfach den Steuerelementinhalt der jetzigen Zahlenfelder auf die entsprechenden Textfelder um.
Es muss nichts programmiert werden.
Das Feld wird bei Auswahl einer Messe automatisch gefüllt. Wenn Dir die Aufgabe der Beziehungen in einer DB geläufig sind, hätte Dir eigentlich die Lösung auch einfallen müssen. Mache Dir bitte mal diese Zusammenhänge klar und es fällt Dir wie Schuppen aus den Haaren. ;D
Geänderte DB anbei.
[Anhang gelöscht durch Administrator]