Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Datenpflege von m:n Datensätze über Kontrollkästchen
zurück: TreeView ohne ActiveX mit Access Bordmitteln weiter: Wahl der Datentypen in Access: Integer, Double oder Currency Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
jpa
Access/Excel VBA-Programmierer


Verfasst am:
21. Jan 2013, 19:01
Rufname: Jean Pierre
Wohnort: Frankfurt


Datenpflege von m:n Datensätze über Kontrollkästchen - Datenpflege von m:n Datensätze über Kontrollkästchen

Nach oben
       Version: Office 2010

Aufgabenstellung:
Zuordnung von Gruppen (Geschäftlich, Freunde, Familie usw...) an Kontaktdaten.

Dies wir üblicherweise in MS Access über Haupt- und Unterformular umgesetzt.
Geht es allerdings darum, nur Datensätze ohne weitere Angaben einen Hauptdatensatz zu zuordnen, dann sind Unterformulare nicht wirklich optimal.
Daher stelle ich hier eine Lösung mit dynamischen Kontrollkästchen vor.
    Vor-/Nachteile der klassischen Lösung mit Unterformular:
  • Nur die bereits zugeordneten Einträge werden in der Liste dargestellt
  • VBA-Code wird nicht benötigt
  • Bedienung umständlich und fehleranfällig
  • Jede Zuordnungsliste benötigt ein Unterformular
  • Fazit: Geeignet für Listen mit vielen Einträgen
    Vor-/Nachteile der Lösung mit dynamischen Kontrollkästchen:
  • Sämtliche Einträge werden in der Liste übersichtlicht dargestellt
  • Bedienung einfach und eindeutig
  • Standardisiertes Design
  • Nur ein Unterformular
  • Kein externes ActiveX (OCX) wird benötigt
  • VBA-Code wird benötigt (ohne zusätzlichen Verweis)
  • Fazit: Geeignet für Listen mit wenig Einträgen
Voraussetzung:
MS Access 2010, 2007, 2003, 2002, 2000 oder 97
Es werden 2 Stammdaten Tabellen und eine Zuordnungstabelle benötigt.
Die Stammdaten Tabellen benötigen ein Feld mit eindeutigen Daten (z.B. Primarykey auf ein Feld).
Einer der zwei Stammdaten Tabellen wird in ein Formular in der Formularansicht dargestellt. Zusätzliche Verweise in VBA werden nicht benötigt.
    Installation/Verwendung:
  1. Das Formular frmACB im aktuellen Projekt importieren
  2. Dieses Formular als Unterformular in das Hauptformular einfügen
  3. Die 3 folgenden Prozeduren in das Hauptformular einfügen, und dabei die Tabellen- und Feldnamen anpassen
Code:
Private Sub Form_Current()
    AktZuordnungen
End Sub

Private Sub Form_AfterInsert()
    AktZuordnungen
End Sub

Private Sub AktZuordnungen()
    Static frm As Form_frmACB
 
    If Me.CurrentView = 1 Then
        If frm Is Nothing Then
            Set frm = Me.frmZuordnungGruppe.Form
            With frm
                .eZuordnungstabelle = "tblZuordnungKontaktGruppe"
                .eZuordnungsFeld1 = "KontaktID"
                .eZuordnungsFeld2 = "GruppeID"
                .eStammtabelle = "tblGruppe"
                .eStammFeldID = "ID"
                .eStammFeldBezeichnung = "Bezeichnung"
                .eSortierung = NachSchlüsselfeld
                .eSortierrichtung = Absteigend
            End With
        End If
        frm.RequeryRecords Me.ID & ""
    End If
End Sub
Hintergrund der Technik:
Das Formular frmACB ist ein Endlosformular und wird als Unterformular in einem Hauptformular eingefügt. Es kann beliebig oft in einem Hauptformular eingefügt werden. Denn welche Datensätze abgebildet werden soll ist nicht in dem Unterformular hinterlegt, sondern wird über das Hauptformular einmalig definiert. Dies geschieht aus dem Hauptformular (Siehe Prozedur AktZuordnungen)

Nach jedem Datensatzwechsel im Hauptformular, wird über den Aufruf der Prozedur RequeryRecords, die entsprechende Datenherkunft im Unterformular frmACB gesetzt.
Die Prozedur RequeryRecords erzeugt eine sql-Abfrage die alle Datensätze der Stammdatentabelle (tblGruppe) anzeigt.
Über einen LEFT JOIN wird festgestellt, ob der Datensatz einen zugeordneten Datensatz in der Zuordnungstabelle (tblZuordnungKontaktGruppe) hat. Dies muss allerdings nur für den Datensatz geschehen, der im Hauptformular gerade vorhanden ist. Dies wird über eine integrierte Unterabfrage realisiert. Das Feld SELECTED enthält also den Wert True, wenn eine Zuordnung vorhanden ist, ansonsten False J.

Die Änderung der Zuordnung kann allerdings nicht über das Kontrollkästchen SELECTED erfolgen, da dies ja ein berechneter Ausdruck ist, also nur zur Anzeige dient. Hier wird ein kleiner optischer Trick verwendet, über das Kontrollkästchen wird ein ungebundenes Kontrollkästchen chkChanger gelegt, welches die Änderungen erfasst.
Die Prozedur SetAssignment führt die Änderung tatsächlich durch.
Da nicht nur ein Datensatz hinzugefügt oder gelöscht werden soll, ist dies mit einer Anfüge- und Löschabfrage realisiert worden. Hier könnte dies auch über Openrecordset/Addnew/Delete realisiert werden, wenn einen genauere Fehlermeldung (Datensatzweise) erwünscht ist.

_________________
Gruß
JPA



Zuordnung_per_Kontrollkaestchen.zip
 Beschreibung:
Läuft ab Access Version 2000

Download
 Dateiname:  Zuordnung_per_Kontrollkaestchen.zip
 Dateigröße:  70.64 KB
 Heruntergeladen:  62 mal

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: Datensätze zusammenfassen 1 Tatanka 1121 29. Apr 2005, 14:52
jens05 Datensätze zusammenfassen
Keine neuen Beiträge Access Tabellen & Abfragen: Aus 1 Datensatz mit 10 Infos mache 10 Datensätze à 1 Info 2 Steve 914 14. Jan 2005, 00:43
Steve Aus 1 Datensatz mit 10 Infos mache 10 Datensätze à 1 Info
Keine neuen Beiträge Access Tabellen & Abfragen: multiplizieren zweier verschiedener Datensätze 3 Stara 913 13. Jan 2005, 20:36
Skogafoss multiplizieren zweier verschiedener Datensätze
Keine neuen Beiträge Access Tabellen & Abfragen: Feld aus n Records in n Feldern eines Records zusammenfassen 0 frank58 588 31. Dez 2004, 12:05
frank58 Feld aus n Records in n Feldern eines Records zusammenfassen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage um doppelte Datensätze zu ermitteln? 5 tom444 5066 14. Dez 2004, 23:49
Skogafoss Abfrage um doppelte Datensätze zu ermitteln?
Keine neuen Beiträge Access Tabellen & Abfragen: Anzahl der Datensätze anzeigen? 3 MichaelB 1122 19. Okt 2004, 12:45
lothi Anzahl der Datensätze anzeigen?
Keine neuen Beiträge Access Tabellen & Abfragen: Einmalige Datensätze löschen 18 frankkugler 1614 18. Okt 2004, 15:33
frankkugler Einmalige Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: mehrfache 1:N Beziehungen möglich??? 2 mathiash 504 18. Okt 2004, 14:46
mathiash mehrfache 1:N Beziehungen möglich???
Keine neuen Beiträge Access Tabellen & Abfragen: leere Datensätze löschen 3 umbroboy 2666 07. Okt 2004, 16:51
Skogafoss leere Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: datensätze suchen 13 mr@ 1514 13. Sep 2004, 10:21
meyster datensätze suchen
Keine neuen Beiträge Access Tabellen & Abfragen: 24 felder aus 1 DS in 24 versch. Datensätze kopieren. 3 Mirko 593 30. Jul 2004, 13:55
Willi Wipp 24 felder aus 1 DS in 24 versch. Datensätze kopieren.
Keine neuen Beiträge Access Tabellen & Abfragen: Summen über mehrere Datensätze bilden 5 Matti_71 1497 03. Jul 2004, 12:38
Willi Wipp Summen über mehrere Datensätze bilden
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Macromedia Dreamweaver