Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
vereinfachte n:m Zuordnung mittels Unterformular
zurück: code funktioniert nicht, wie ich will? weiter: DS aus Listfeld -- Übergabe in neues Formluar -- Fehler :-( Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
tar
neugiersch


Verfasst am:
14. Jun 2010, 00:56
Rufname:

vereinfachte n:m Zuordnung mittels Unterformular - vereinfachte n:m Zuordnung mittels Unterformular

Nach oben
       Version: Office 2007

Hallo,

ich stehe ein wenig auf dem Schlauch und komme nicht weiter. Da ich mir nicht vorstellen kann, dass man n:m-Beziehungen nur zeitaufwendig einzeln bearbeiten kann, frage ich mich, wie man mit Hilfe eines Unterformulars eine Zuordnung dynamischer n:m - Beziehungen vornehmen kann.

Man sieht wohl am Besten in der angehängten Beispiel-Datenbank, was ich genau meine (EDIT: warte noch auf Upload-Freischaltung, derweil gibts die Datenbank hier: s.u.). Da gibt es Schüler und Fächer und ich möchte anhand eines Zuordnungsformulars auf einen Schlag sämtliche Schüler einem Fach zuordnen.

Dazu möchte ich oben das Fach auswählen und im Unterformular soll mittels dem an- bzw. abhaken eine entsprechende Beziehung zwischen Fach und dem jeweiligen Schüler hergestellt werden, d.h. es soll in der Zuordnungstabelle ein Datensatz erzeugt werden, der aufgrund des ausgewählten Fachs (Faecher_ID) und dem angehakten Schueler (Schueler_ID) einen Eintrag erzeugt und ihn entsprechend wieder löscht, wenn man den Haken entfernt.

Dafür soll die Ansicht des Unterformulars natürlich entsprechend aktualisiert werden, wenn man das Fach wechselt. Das Unterformular soll dabei aber immer alle (und später noch anhand weiter Kriterien ausgewählte) Schüler darstellen.

Der zu nutzende Haken hat in meiner Beispieldatenbank noch keine Funktion und im Unterformular werden auch nicht alle Schüler dargestellt.

Wenn das mal läuft, soll das ganze natürlich auch für Schüler funktionieren, d.h. dass man Schüler auswählt und er sämtliche Fächer mit einem Haken darstellt. Die Richtung ist aber wohl egal, wenn es denn einmal funktioniert Smile

Danke & Gruß!



n_zu_m.rar
 Beschreibung:

Download
 Dateiname:  n_zu_m.rar
 Dateigröße:  29.41 KB
 Heruntergeladen:  17 mal

Nouba
nicht ganz unwissend :)


Verfasst am:
14. Jun 2010, 02:58
Rufname:
Wohnort: Berlin


AW: vereinfachte n:m Zuordnung mittels Unterformular - AW: vereinfachte n:m Zuordnung mittels Unterformular

Nach oben
       Version: Office 2007

Hallo tar,

man könnte das Anliegen mit zwei Listenfeldern angehen.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.



n_zu_m.zip
 Beschreibung:

Download
 Dateiname:  n_zu_m.zip
 Dateigröße:  30.41 KB
 Heruntergeladen:  35 mal

tar
neugiersch


Verfasst am:
14. Jun 2010, 18:05
Rufname:

AW: vereinfachte n:m Zuordnung mittels Unterformular - AW: vereinfachte n:m Zuordnung mittels Unterformular

Nach oben
       Version: Office 2007

Danke dir wie Sau!

Leider verstehe ich den Code kaum (kenne nur ein wenig Java) - vielleicht kannst du da noch bissl helfen?

Was ist ThisDb() - und wieso nutzt man nicht einfach db? Ist db einfach eine Kopie der CurrentDb() und wird im Hintergrund nicht verändert? Wenn ja, warum und wann wird ThisDb() zu CurrentDb()?

Wählt man im VBA-Code mit [:Tabellenname] generell automatisch den verbundenen Fremdschlüssel der jeweiligen Tabellen aus - oder den eigenen Primärschlüssel?

Wozu gibt es die Konstanten DEL=0 und APP=1 und schreibt nicht direkt qdf(0) oder qdf(1)?

Wieso wird bei lstFaecher_AfterUpdate() qdf mit close geschlossen, aber bei cmdOK_Click() nicht - auch q nicht?

Was machen diese Befehle:
- Option Compare Database
- Option Explicit
- On Error Resume Next
- DoCmd.SelectObject acForm, , True
- With Me.lblTitle: .Left = (Me.InsideWidth - .Width) \ 2: End With

Das mit rs peil ich gar nicht - da wählt er ja die aus, die wirklich eine Zuordnung haben?

Danke nochmal und Gruß!
Nouba
nicht ganz unwissend :)


Verfasst am:
15. Jun 2010, 00:17
Rufname:
Wohnort: Berlin


AW: vereinfachte n:m Zuordnung mittels Unterformular - AW: vereinfachte n:m Zuordnung mittels Unterformular

Nach oben
       Version: Office 2007

Hallo tar,

hier einige Erklärungen:

ThisDb ist eine Property-Prozedur, die einmalig beim ersten Aufruf mit CurrentDb() initialisiert wird. Der Wert wird in der statischen Variablen db gehalten. Mit Is Nothing wird geprüft, ob das Objekt db initialisert ist.

Access versteht Ausdrücke innerhalb eckiger Klammern in SQL-Anweisungen immer als Parameter, sofern sie nicht mit einem Feldnamen übereinstimmen - die Benamsung von Parametern ist Dir freigestellt. Ich habe halt [:S] für die Schueler_id und [:F] für die Faecher_id verwendet.

Die beiden Konstanten APP und DEL habe ich verwendet, damit beim Lesen des Kodes klar wird, ob in der Abfrage gelöscht oder ein neuer Datensatz geschrieben wird und man sich nicht den Array-Index merken muss.

Eigentlich muss man Querydef-Objekte gar nicht selbst schließen - sie verschwinden sauber aus dem Speicher, wenn sie den Scope verlieren (die Routine beendet wird). Bei selbst erstellten Recordsets ist das anders - diese sollte man auch selbst wieder schließen, um den verwendeten Speicher frei zu geben. Hier bin ich bei meiner Programmierung allerdings nicht konsistent vorgegangen.

Option Compare Database stellt die Standard-Vergleichsmethode im Modul für Textvergleiche ein. (siehe VBA OL-Hilfe).

Option Explicit erzwingt die Verwendung von Variablen-Deklaration (ebenso in der VBA OL-Hilfe beschrieben).

DoCmd.SelectObject acForm, , True wählt das Datenbankfenster bzw. ab Access 2007 die Navigationsleiste aus (bzw. blendet sie ein, falls sie versteckt war).

With Me.lblTitle: .Left = (Me.InsideWidth - .Width) \ 2: End With zentriert das Beschriftungsfeld lblTitle im Fenster.

Zuerst werden alle Selektierungen in lstSchueler gelöscht. Dazu wird die RecordSource neu geschrieben. Im Nachhinein betrachtet, wäre die Anweisung
With Me.lstSchueler: .RowSource = .RowSource geschickter und auch etwas kürzer. Anschließen wird in einer Schleife für jeden Listenfeldeintrag im Recordset gesucht, ob eine entsprechende Schueler_id vorhanden ist. Die Methode NoMatch des Recordsets ist wahr, wenn nichts gefunden wurde. Also wird mit dem Umkehren der Wahrheitsbedingung durch den Not-Operator der Eintrag im Listenfeld ausgewählt:
.Selected(i) = Not rs.NoMatch ==> Ausgewählt = Nicht NichtGefunden ==> Ausgewählt = Gefunden

Ich hoffe, dass Du meinen Ausführungen folgen konntest.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: M:N Beziehung, DS inkl. Autowert im Unterformular einfügen 5 wolfsmilch 2624 10. Feb 2008, 20:08
KlausMz M:N Beziehung, DS inkl. Autowert im Unterformular einfügen
Keine neuen Beiträge Access Tabellen & Abfragen: n:m Beziehung HILFE!!! 1 Luapproduktion 1515 01. Feb 2008, 17:55
Gast n:m Beziehung HILFE!!!
Keine neuen Beiträge Access Tabellen & Abfragen: SuchAbfrage, Einschränkung mittels Optionsfeldern 1 Jasmine82 581 03. Dez 2007, 12:22
Gast SuchAbfrage, Einschränkung mittels Optionsfeldern
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage-Kriterium aus Register Unterformular 2 Bullett 2113 05. Sep 2007, 21:44
Bullett Abfrage-Kriterium aus Register Unterformular
Keine neuen Beiträge Access Tabellen & Abfragen: Befehlsschaltläche bezieht sich auf Unterformular! 12 seppel27 808 15. Aug 2007, 13:07
seppel27 Befehlsschaltläche bezieht sich auf Unterformular!
Keine neuen Beiträge Access Tabellen & Abfragen: Relation 1:m zeigts nur als 1:1 an 2 Kusel 501 21. Feb 2007, 11:56
Kusel Relation 1:m zeigts nur als 1:1 an
Keine neuen Beiträge Access Tabellen & Abfragen: n:m -> Formular zum Auswaehlen 2 Blablub 595 06. Feb 2007, 10:05
Blablub n:m -> Formular zum Auswaehlen
Keine neuen Beiträge Access Tabellen & Abfragen: Aufbau Tabellen und Zuordnung 2 Dirk66 1400 15. Jan 2007, 17:34
Dirk66 Aufbau Tabellen und Zuordnung
Keine neuen Beiträge Access Tabellen & Abfragen: Ersetzen von Schlüsseln durch Klartext mittels Hilfstabelle 13 Pecki75 789 02. Jan 2007, 13:59
Willi Wipp Ersetzen von Schlüsseln durch Klartext mittels Hilfstabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellenverknüpfung/Datenbankaufbau mittels VBA?! HELP!!! 3 Lelo 885 28. Nov 2006, 15:41
bogumiljackson Tabellenverknüpfung/Datenbankaufbau mittels VBA?! HELP!!!
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mittels Abfrage beeinflussen 6 BLBGünter 496 28. Nov 2006, 13:42
BLBGünter Abfrage mittels Abfrage beeinflussen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle erstellen mittels Schedueler zu einer best. Uhrzeit? 2 Peter Lustig 600 29. Aug 2006, 14:58
Peter Lustig Tabelle erstellen mittels Schedueler zu einer best. Uhrzeit?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project