Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mile85 am November 13, 2015, 15:08:51

Titel: Tabelleninhalt verknüpfen
Beitrag von: mile85 am November 13, 2015, 15:08:51
Hallo,

Ich beschäftige mich seit geraumer zeit mit Access und konnte bisher alles selber lösen. jedoch stecke ich jetzt fest und bin auf Hilfe angewiesen.

Mein Problem:
Ich habe 2  Tabellen (MitarbeiterListe und Aufträge) und 1 Formular. In der MitarbeiterListe habe ich alle Mitarbeiter verfasst (Felder "Name", "Stufe"  und "Bereich"). In der 2. Tabelle " Aufträge" gibt es diverse Felder ( "Datum", "Mitarbeiter Name", "Mitarbeiter Stufe", "Zuständiger Bereich", "Aufrag" und "Besonderes". Die Tabelle "Aufträge" wird durch Ein "Formular" verfasst. Das Feld "Mitarbeiter Name" aus der Tabelle " Aufträge" holt die Informationen aus der Tabelle "MitarbeiterListe" Feld " Name". Das funktioniert alles so weit so gut.

Mein Anliegen: Ich möchte, sobald ich einen Namen eingegeben habe, dass im Formular Feld "Stufe" und "Bereich" automatisch die Informationen aus der Tabelle "MitarbeiterListe" in den dazugehörigen Feldern im Formular erscheinen und beim abspeichern diese dann auch in der Tabelle " Aufträge" unter "Mitarbeiter Stufe" und Zuständiger Bereict" eingetragen werden.

Ich habe es geschafft, dass im Formular sobald ich den Namen eingegeben haben, die dazugehörige Stufe und Bereich angezeigt werden, jedoch schaffe ich es nicht diese Informationen nach Aktualisierung in der Tabelle "Aufträge" unter "Mitarbeiter Stufe" und zuständiger Bereich" abzuspeichern.

Ich würde mich sehr freuen wenn mir jemand helfen würde.

Gruss Miro
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: el_gomero am November 13, 2015, 15:39:21
Hallo Miro,

die Bezeichner Name und Datum sind für Access reserviert und sorgen früher oder später für Ärger. Benenne sie um, zB in Nachname und Auftragsdatum.

Zu deinem Problem - am besten du erstellst statt des Textfelds ein Listfeld in deinem Formular. Darin kannst du die relevanten Daten anzeigen lassen und den betreffenden Mitarbeiter auswählen. Dessen ID wird dann in dem Feld gespeichert.

Die Tabellen sind doch bereits verknüpft? Normalisierungsregeln beachtet - Datenmodell erstellt?

Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: mile85 am November 13, 2015, 16:03:42
Die Tabellen sind schon verknüpft. Das Feld "Bereich" im Formular bezieht sich auf die Tabelle "Aufträge". ich möchte aber diesen Feld nicht selber zuweisen müssen sondern sobald ich den Namen eingegeben habe (Die Namen holt er aus der Tabelle "MitarbeiterListe") soll das Feld "Stufe" und "Bereich"(Steuerelementinhalt aus Stufe und Bereich aus der Tabelle "Aufträge" ) automatisch ausgefüllt werden >> durch die ID des Mitarbeiters aus der Tabelle "MitarbeiterListe" und bei abspeichern sollen diese Informationen in die Tabelle " Aufträge" übernommen werden.
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: el_gomero am November 13, 2015, 16:16:21
ja, das hatte ich doch schon erklärt ... Kanns du mal eine abgespeckte db hochladen? Daten raus und gezippt - ich bau dir das dann ein. Wird allerdings wohl spät am abend sein.
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: mile85 am November 13, 2015, 16:52:07
Habe so eine Musterdatei angelegt. Vielen Dank im Voraus

http://www.file-upload.net/download-11040408/test_db.zip.html
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: el_gomero am November 14, 2015, 11:23:59
Hallo,

meine Zeitplanung hat sich etwas geändert. Habe deine db aber schon mal runtergeladen. Wird heute abend oder morgen früh bis ich die Änderungen hochlade, muss gleich wieder weg.
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: el_gomero am November 14, 2015, 13:33:46
ok, hier die geänderte Version.

Du hast einige typische Anfängerfehler in deiner db gehabt. Fangen wir an bei Grundlagen. Mitarbeiterdaten werden nur in der Mitarbeitertabelle gespeichert. Redundanzen in Auftrag verstossen gegen die Normalisierungsregeln. Weiter sind Nachschlagefelder zu vermeiden. Die bilden nur eine Relation mit zugehörigen Feldern ab und verwirren mehr als sie helfen.
Die Relation zwischen Mitarbeiter- und Auftragstabelle habe ich mit einer referentiellen Integrität ausgestattet - schau dir das im Beziehungsfenster an.

Habe das in deiner db korrigiert. Dann die Bezeichner - sie sollten "sprechend" sein, also dass man intuitiv weiss um was es sich handelt. Sonder- und Leerzeichen sind darin zu vermeiden.

In deinem Formular habe ich dir 2 Lösungen eingebaut. Zum einen die von dir angesprochene Variante - Mitarbeiter auswählen, zugehörige Daten werden in weiteren Feldern angezeigt. Und die von mir favorisierte Lösung mit Anzeige in einem Listfeld.

Ich würde mich an deiner Stelle umfassend mit den Grundlagen von Access befassen ;)

Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: mile85 am November 14, 2015, 14:16:57
Vielen Dank für deine Mühe. Ich werde mir die Datei genau unter die Lupe nehmen :). Evtl war die Datei die ich hochgeladen haben etwas zu abgespeckt. Die richtige DB  an der ich dran bin ist um einiges umfassender und komplexer, beinhaltet mehrere Tabellen und über 30 Berichte die miteinander kommunizieren, dazu sind noch über 800 Bildsteuerungen verknüpft. Ich bin kein Access Profi, habe von Null gestartet und bin soweit zufrieden. Zumindest funktioniert das ganze Konzept bis jetzt einwandfrei:). Jedoch muss ich dran bleiben und die DB stets optimieren da früher oder später bestimmt Komplikationen aufgrund der hoher Datenmenge auftreten. Deswegen bin ich froh dass es solche Foren gibt und hilfsbereite Menschen.

Gruss Miro
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: mile85 am November 14, 2015, 16:25:58
Hallo,

Habe mir gerade deine angepasst DB angeschaut. Leider wurde dadurch mein Anliegen nicht gelöst. muss auch zugeben die Datei die ich hochgeladen haben war ein sehr schlechtes Beispiel.
Ich wollte im Formular nach Eingabe des Mitarbeiters, seine Stufe und Bereich anzeigen lassen. Das funktioniert soweit gut.
Jedoch wollte ich, dass beim abspeichern des Formulars nicht nur die MitarbeiterID in der Tabelle "Aufträge" sondern auch die dazugehörige "Stufe" und "Bereich" übertragen. Deswegen hatte ich in der Auftragstabelle die Felder erstellt. Das mag vielleicht in erster Linie systematisch falsch sein aber hat einen speziellen Grund. Ich verfüge über 800 Mitarbeiter die in 37 Bereichen unterstellt sind, die wiederum in 6 Abteilungen aufgegliedert sind. Ich habe aus der Tabelle "Aufträge"  Berichte für jeden einzelnen Bereich erstellt (via Datensatzquelle "SELECT" "FROM" "WHERE"). So werden mir pro Bereichsbericht nur die dazugehörigen Mitarbeiter und deren Aufträge angezeigt. Das soll so sein und darf nicht via Filterfunktion angezeigt werden. dazu habe ich noch für die 6 Abteilungen je 1 Bericht erstellt der nur die ausgewählten Bereiche und die darin zuständige Mitarbeiter anzeigt. Die wurden dann per "Gruppierung" im Bericht aufgelistet aber das ist jetzt Nebensache.

Das funktioniert soweit alles einwandfrei, jedoch muss ich beim Verfassen des Auftrages nach der  Eingabe des Mitarbeiters seine Stufe und seinen Bereich manuell eingeben und mein Wunsch ist es, diese 2 Angaben ohne Eingabe in die Tabelle zu übertragen.

Habe auch schon versucht ein Bericht aus der Tabelle "Aufträge" zu erstellen und zusätzlich die Felder aus anderen Tabellen zu zufügen die ich haben möchte, jedoch werden mir dann alle Mitarbeiter angezeigt. Ginge nur über die Filterfunktion, was ich aber nicht will.

Ich hoffe ich konnte dir mein Anliegen nun besser erklären und bereite dir deswegen keine Kopfschmerzen. :))

Gruss Miro
 
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: el_gomero am November 14, 2015, 18:22:40
Hallo,

mir bereitest du sicher keine Kopfschmerzen  ;D

Wenn du die Stufe und den Bereich im Bericht mit anzeigen willst, erstellt du eine Abfrage als Grundlage. Darin fügst du die Auftragstabelle und die Mitarbeitertabelle ein. Die benötigten Felder ziehst du nach unten, schränkst über Kriterien die Auswahl ein und nimmst diese Abfrage als Datenherkunft für deinen Bericht. 

Zitat
Das mag vielleicht in erster Linie systematisch falsch sein aber hat einen speziellen Grund.
Es braucht schon sehr gute Gründe um Daten redundant vorzuhalten. Die von dir genannten sind keine. Wenn sich zB die Stufen ändern kann, wäre das ggf ein Grund.
Titel: Re: Tabelleninhalt verknüpfen
Beitrag von: mile85 am November 14, 2015, 18:48:04
Hallo,

Hat geklappt über die Abfrage mit den Berichten. Ich habe bis jetzt alles mögliche versucht dabei wär es so einfach :)

Vielen Dank nochmal und bis demnächst:=).

Gruss Miro