Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: DBCreator am Mai 03, 2012, 11:17:17

Titel: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: DBCreator am Mai 03, 2012, 11:17:17
Guten Tag allerseits :)

Heute komme ich mit einem etwas komplexeren Problem zu euch. Also tief Luft holen und los ...

Thematisch gehts in meiner Datenbank um Arbeitssicherheit (Gefährdungsanalysen). Es gibt also eine ganze Menge an Tätigkeiten und zu jeder Tätigkeit gibt es mehrere Gefährdungen. Das sind schonmal zwei Tabellen. Eine Tabelle (tbl_Tätigkeiten) in der hauptsächlich die Bezeichnungen der Tätigkeiten festgehalten werden. Eine andere Tabelle (tbl_Daten), die über eine ID mit den Tätigkeiten verknüpft ist und die Datensätze mit den Gefährdungen enthält. Daraus ergibt sich quasi ein Datenstamm von Gefährdungsanalysen zu den unterschiedlichsten Tätigkeiten.

Das gleiche Prinzip gibt es in der selben Datenbank nochmal aber kundenbezogen. Da hätten wir die Tätigkeiten Tabelle (tbl_Tätigkeiten_Kunden_GefAnalysen) und die Gefährdungen dazu (tbl_Daten_Kunden_GefAnalysen). Nur dieses Mal gibts bei den Tätigkeiten ein weiteres Feld, welches mit einer Kundentabelle verknüpft ist. So gibt es also kundenbezogene Gefährdungsanalysen.

Wir haben also zwei Varianten. Die erste Variante stellt das Archiv dar mit allen Gefährdungsanalysen, die wir haben. Die zweite Variante ist speziell für Kunden gedacht weil die Gefährdungen oft auch kundenbezogen sind. Als Basis dienen aber trotzdem oft jene Gefährdungsanalysen aus dem Archiv.

Funktioniert alles ganz gut. Meine Kollegen kommen mit der Formularoberfläche gut zurecht. Etwas fehlt aber. Wenn sie mit einem neuen Kunden anfangen ist es sehr oft hilfreich wenn man bestehende Gefährdungsanalysen einfach inhaltlich anpasst. Dazu ist eine Funktion nötig wobei der Mitarbeiter gewünschte Gefährdungsanalysen aus dem Archiv auswählen kann und diese zur kundenbezogenen Tabelle rüberkopiert. Dort kann er dann den Text einfach anpassen anstatt ihn komplett neu schreiben zu müssen. Also Tätigkeit inkl. aller dazugehörigen Gefährdungen aus der verknüpften Tabelle. Und diese Daten mit der richtigen Zuordnung in die kundenbezogene Variante übertragen. Und genau diese Funktion überfordert meinen aktuellen Wissensstand. Wie krieg ich das hin?

Bin euch ungeheuer dankbar für helfende Infos :)


Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: Jonny am Mai 03, 2012, 11:26:37
Hallo,

überleg mal ob das mit einer Anfügeabfrage klappen kann.

Die kundenbezogenen Daten kannst du dabei aus dem Form nehmen.

Gruß

Johann
Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: DBCreator am Mai 03, 2012, 12:34:26
Hi Jonny,

die Idee kam mir auch. Anfüge-Abfragen sind mir noch sehr fremd. Zudem muss das ja auch im Formular irgendwie dargestellt werden.

Konkrete Anweisungen wären jetzt gut :)
Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: Jonny am Mai 03, 2012, 12:40:03
Hallo,
erst einmal Anfügeabfrage:
Erstelle eine Abfrage wie gewohnt.
Dann gibt es eine Auswahl Typ. Hier die Anfügeabfrage auswählen.
Auswahl an welche Tabelle angefügt werden soll.
Es kommt eine Zeile Anfügen an. Hier bestimmen welches Herkunftsfeld an welches Zielfeld angefügt werden soll.

Mit dem Form dann später

Gruß

Johann
Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: DBCreator am Mai 04, 2012, 09:54:47
So, habe nun beide Anfügeabfragen erstellt. Sind ja 2 Tabellen, die Daten enthalten. Wie erkläre ich Access aber nun, dass er die im korrekten Zusammenhang und nur jene nach Auswahl übertragen soll?
Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: database am Mai 04, 2012, 12:13:00
Hallo,

ich nehme an, dass dein Formular auf der Zieltabelle aufsetzt - wenn das so ist, kannst du auf die Anfügeabfrage verzichten.

Im Prinzip sollte die Tätigkeit mitteles Kombifeld ausgewählt werden können, die zugehörige Gefährdungsanalyse kann dann entweder in einem Rutsch ins Zielfeld verfrachtet werden (z.B. mit dem Ereignis Nach Aktualisierung des Kombifeldes) bzw. bei mehreren Analysen pro Tätigkeit eine Liste der selben zur Auswahl gestellt werden.

Im Fall von mehreren Analysen wird die ausgewählte z.B. per VBA ins Zielfeld übertragen und kann dort nach Bedarf editiert werden, im Fall nur einer wird eben diese ins Zielfeld verfrachtet und zur Editierung angeboten.
Warum im oben genannte Fall keine Anfügeabfrage nötig ist - weil ein Eintrag in ein gebundenes Formularfeld automatisch in der Tabelle eingetragen wird und nicht extra über eine Aktionsabfrage dorthin gebracht werden muß.

Da aus deiner Anfrage nicht hervorgeht wie die Konstellation real ausschaut ist hierzu kein konkreter Codevorschlag möglich.

Kannst du vielleicht eine DB-Kopie mit ein paar Spieldaten zur Verfügung stellen oder zumindest ein Bild des Tabellenmodells (Beziehungsfenster mit allen Tabellen und allen Tabellenfeldern sichtbar) hier hochladen?
Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: DBCreator am Mai 09, 2012, 08:51:55
@database

Ich habe die Datenbank mit Beispieldaten gefüllt sodass du einen Blick drauf werfen kannst.

Der Download ist hier:
http://files.thinkshare.de/Gef%C3%A4hrdungsanalysen_Management_V6%20_a_Beispiel.accdb (http://files.thinkshare.de/Gef%C3%A4hrdungsanalysen_Management_V6%20_a_Beispiel.accdb)

Bin erst heute dazu gekommen weil im Büro andere Sachen wichtiger waren =) Tagesgeschäft halt. Da gerät das Programmieren ab und an in den Hintergrund.
Titel: Re: Verknüpfte Datensätze per Auswahl in andere Tabelle kopieren
Beitrag von: database am Mai 12, 2012, 20:59:13
Hallo,

ich habe die DB überarbeitet und die gewünschte Funktion eingebaut.
Leider ist das Ding aber so umfangreich, dass sie hier im Forum nicht hochladbar ist.

Ein paar kurze Worte vielleicht noch im Allgemeinen:

Die Normalisierung der Tabellen ist nicht durchgängig gegeben.
Es sind in den Tabellen Spaltennamen mit Umlauten in Verendung.
Die Spaltenbezeichnungen und Tabellennamen sind zu lang - wirst du selbst vielleicht auch schon benerkt haben.
Verzichte künftig auf [Eingebettete Makros] - auch wenn MS dieses Zeugs wieder zum Leben erweckt hat, ist es ein Feature größeren Übels.
Überdenke die Verwendung von Anlagefeldern nochmal - vielleicht faßt du dir ein Herz und verlegst deine Dokumente auf einen Netzwerkpfad.
Gleiches gilt für die OLE-Felder die du für die Firmenlogos verwendest.
Verwende in den Tabellen KEINE Nachschlagefelder - in den Formularen stellt diese jedoch kein Problem dar.
Die Verwendung von alternativen Spaltenbezeichnungen fördert die Übersichtlichkeit NICHT - besser sind kurze, passende Spaltennamen.

Das Datenmodell an sich könnte optimiert werden, in Anbetracht des Umstandes dass du mit der DB schon produktiv arbeitest habe ich eine Umstellung unterlassen.


Was habe ich an deiner DB also geändert ...

Ich habe ein kleines Formular erstellt um die archivierten Tätigkeiten zur Auswahl anbieten zu können.
Am Formular für die Kunden-Analysen wurde eine zusätzliche Schaltfläche eingebaut um die Archivdaten aufzurufen.
Ausgewählte Tätigkeiten können so übernommen werden.
In die Felder der Gefahrenanalyse werden die archivierten Daten automatisch geladen und können dort nach Bedarf editiert werden.
Die zusätzlichen Funktionalitäten wurden allesamt mittels VBA implementert - Makros mag ich nicht  ;) ::)

Lese bitte auch deine PN!