collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 64
  • Punkt Versteckte: 2
  • Punkt Mitglieder: 8
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13804
  • stats Beiträge insgesamt: 63512
  • stats Themen insgesamt: 8606
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Filtern eines UF nach WertA ODER WertB  (Gelesen 1233 mal)

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Filtern eines UF nach WertA ODER WertB
« am: Oktober 16, 2017, 12:54:27 »
Liebe Mitglieder, das Thema ist schon hundertmal beantwortet worden, aber ich habs bisher weder begriffen noch umsetzen können:
Wenn ich die Werte eines UF nach dem Wert eines HF filtern muss, geht das komfortabel über die "verknüpfen nach...von" Funktion.
Im vorliegenden Fall soll jedoch das UF [UF1] gefiltert werden:
Zeige alle DS, bei denen der Wert in Feld [KursANr] ODER der Wert in Feld [KursBNr]mit dem (durch Klick gewählten) Wert der Liste [KursID] im HF [frmZurodnKurse] übereinstimmt.
Meine Versuche, die angebotenen Lösungen auf meine DB zu kopieren und anzupassen, sind bisher allesamt gescheitert.
Falls nach dem (vielleicht berechtigten) Aufstöhnen jemand die dafür notwendige Prozedur nochmal veröffentlichen würde, wäre ich sehr dankbar.
Gruß, Domm
Gruß Domm
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #1 am: Oktober 16, 2017, 13:16:07 »
Hallo,
solche Aktionen sind fast immer ein Hinweis auf ein falsches Datenmodell.
Möglicherweise kannst Du das noch ändern.
Zeige mal ein Bild des Beziehungsfensters.
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Domm

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #2 am: Oktober 16, 2017, 13:34:20 »
Danke vorab für Deine Zeit!
Aufgabe:
var. Anzahl von Schülern belegt (grundsätzlich) zwei Kurse, welche grundsätzlich an zwei verschiedenen Terminen stattfinden müssen. Deshalb hab ich die Daten Schüler und Kurs nicht in eine neue Tab übergeben, weil die Bedingung "Jeder Kurs an an einem anderen Termin" in einem DS besser zu händeln ist. Deshalb folgender Aufbau:
tabTermine
tabKurse
tabSchüler mit Feld [Schüler],[KursA](Kombifeld mit Inhalt tabKurse),[KursB](Inhalt dito) sowie zugehörige Kombifelder [TerminA] und [TerminB].
Es ist durchaus möglich, die Struktur etwas verworren ist, aber so fällt es ziemlich leicht, zu verhindern, dass im DS "Schüler" gleiche Werte in [KursA] u [KursB] sowie gleiche Werte in [TerminA] u [TerminB]} stehen.
Im Mom ist die Zuordnung der zwei Kurse zu den Schülern abgeschlossen. Um die Terminfestlegung übersichtlich zu gestalten, möchte ich die Daten nach Kurs filtern. Also sollen alle Schüler angezeigt werden, die den im HF markierten Kurs in A ODER B belegen. Danach wird die Terminvergabe der einzelnen Schüler festgelegt.
Ist diese Darlegung hilfreich?
Gruß Domm
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 854
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #3 am: Oktober 16, 2017, 13:47:16 »
Ein Kurs hat weder etwas in einer Schülertabelle noch ein Schüler etwas in einer Kurstabelle verloren. Es sollte eine Belegungstabelle für Kurse geben, in der u.a. SchuelerId und KursId als Fremdschlüsselfeld vertreten sind und die über einen eindeutigen Mehrfachindex eine Doppelbelegung eines Kurses verhindert.
Grüße von der (⌒▽⌒)
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #4 am: Oktober 16, 2017, 13:58:52 »
Hallo,
womit meine Nase, dass das Datenmodell nicht optimal ist wieder bestätigt wurde.
Folge dem Vorschlag von Nouba und stelle das Vorhaben auf eine gesunde Basis. Vieleicht werden aus den 2 Kursen mal 3 Kurse (sag bei einer Datenbank niemals nie) und dann ?
Gruß
Klaus
 

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #5 am: Oktober 16, 2017, 14:44:24 »
Dankeschön an Euch beide!
Ich fürchte, diese Plattform ist für so substantielle Problemlösungen nicht geeignet. :-[. Dafür gibt es Lehrgänge und Fortbildungen.
Leider kenne ich niemanden in meinem Umfeld, der sich mit access beschäftigt; darüber hinaus bin ich als Quereinsteiger nicht mal mit grundsätzlichen Herangehensweisen vertraut. Ich beschäftige mich mit access, weil ich es spannend finde, gestellte Aufgaben zu lösen.
Wenn Ihr trotz Allem meint, dass mein Problem hierher gehört, gebe ich gern die Eckdaten wieder:
1. Colloquiumsprüfungen gibt es ca. 15 verschiedene, aber! pro Prüfling grundsätzlich zwei (auch in Zukunft).
2. Es gibt grundsätzlich zwei Termine (jeweils der Wochenbeginn der zwei Colloquiumswochen).
3. Für jeden Prüfling gilt, dass seine Prüfungen nicht in der gleichen Woche stattfinden dürfen.
Für die DB sieht das so aus:
tabSchüler (ca. 100 DS)
tabKurs (ca. 15 DS)
tab Termin (immer genau 2 DS)
tab ZuordnungKurs: [SchülerID];[KursID];[TerminID] (nach Zuordnung ca. 200 DS)
Aufgabe:
1. Verhindere, dass bei der Eingabe pro Schüler zweimal der gleiche Kurs vergeben wird.
2. Verhindere, dass bei der Eingabe pro Schüler der gleiche Termin vergeben wird.
3. Komfortable Eingabebedingungen: Wähle aus Listenfeld [Kurse] im HF einen bestimmten Kurs und trage aus der [tabSchüler] die Kursteilnehmer (per Klick) aus.
4. Filtere die Kursteilnehmer durch Klick im Listenfeld [Kurse] und weise den Teilnehmern einen der beiden Termine zu. Der Termin des anderen Kurses sollte durch Autofill eingetragen werden.
5. Im Bericht sollten nebeneinander die Termine A und B mit der Gruppierung der dazugehörigen Kurse dargestellt werden.

Das sind die Gründe, warum ich mich für diese Tabellenstruktur entschieden habe: Ich kann (mit einfachen Mitteln) verhindern, dass in [KursA] und [KursB] die gleiche KursID steht. Ich kann dem [TerminB] automatisch den verbleibenden Termin zuweisen, wenn ich [TerminA] einen der beiden Termine vergebe.
War jetzt viel Text für Euch. Und wenn ich die empfohlene Struktur übernehme, sehe ich mich außerstande, die o.g. Bedingungen zu erfüllen...
Gruß Domm


Gruß Domm
 

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #6 am: Oktober 16, 2017, 14:51:44 »
Ach ja, ich wollte die bestehenden Beziehungen in WORD als Anhang verschicken, aber das geht leider nicht. Muss ich wohl die DB als Ganzes anhängen?
Gruß Domm
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #7 am: Oktober 16, 2017, 15:43:14 »
Hallo,
erstelle ein Screenshot des Beziehungsfensters und lade das Bild direkt hier hoch. Ein Umweg über Word ist völlig überflüssig.
Gruß
Klaus
 

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #8 am: Oktober 16, 2017, 17:04:52 »
Oh Mann, nicht mal das bekomme ich hin!
Habe das Beziehungsfenster mit Alt + Druck in der Zwischenablage, aber hier in das Eingabefenster lässt es sich nicht einfügen... :-\
Gruß Domm
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #9 am: Oktober 16, 2017, 17:16:12 »
Hallo,
Du musst unten "Anhänge und andere Optionen" wählen.
Gruß
Klaus
 

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #10 am: Oktober 16, 2017, 17:31:05 »
Nein!
Geht nicht.
Weder als Snapshot noch als WORD noch als EXCEL
Witzigerweise schick ich mal das Tabellenfragment der DB. Keine prozeduren oder Makros enthalten.
Danke für Eure Geduld!
Gruß Domm
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #11 am: Oktober 16, 2017, 17:50:22 »
Hallo,
der Aufbau dürfte ziemlich daneben sein.
Der Schüler hat doch keinen Termin, der Kurs hat einen Termin.
Ich baue Dir das nachher mal um.

Anbei mal einen Vorschlag.
« Letzte Änderung: Oktober 16, 2017, 17:58:21 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Domm

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #12 am: Oktober 16, 2017, 19:36:21 »
So, jetzt bin ich zu Hause und kann mich Deinem Vorschlag widmen.
Für mich war von Anfang an klar, dass der Aufbau bei der Lösungsfindung das Schwierigste wird.
Los gehts:
Der Lehrer bekommt eine Datei, in der die Zuordnung der Kurse zu den Schülern festgelegt ist und soll diese auf zwei Wochen verteilen.

Kurs A
Schü 2
Schü 7
Schü 13
Schü 31

Kurs B
Schü 5
Schü 18
Schü 51

Kurs C
...
Da der Import aus dieser nicht näher benannten Datei so nicht möglich ist, importiert er die Schülerliste nach Excel, von wo sie in die DB exportiert wird.
Die Kurse und Kursleiter werden händisch eingegeben und sind bis auf Korrekturen auch in den nachfolgenden Jahren so verwendbar.
Da die Zuordnung Schüler-Kurs fix ist, besteht die Aufgabe darin, die Zuordnung nach der Vorlage zu realisieren.
Also genau so:
Markiere Kurs 1
Durch Auswahl der betreffenden Schüler soll die Zuordnung per VBA erfolgen:
dlcl auf Schü 2
dlcl auf Schü 7
...
Wenn jeder Schüler mit zwei (verschiedenen) Kursen verknüpft ist, beginnt die eigentliche Aufgabe des Lehrers:
Weise jedem Schüler zwei Termine zu. Dabei werden zwangsläufig auch Kurse gesplittet. (also nicht die Termine sind mit den Kursen verbunden, sondern die Schüler; die Termine sind frei wählbar)
Ziel ist es:
1. Zu verhindern, dass ein Schüler zwei Kurse in einer Woche belegt. Heißt also, in jeder Woche sind genau einmal alle Schüler vertreten.
2. Dass die Kursgrößen ausgewogen sind; also nicht Kurse mit einem Prüfling oder Kurse mit einem deutlichen Mehranteil in einer Woche entstehen.
3. Eine Übersicht zu schaffen, in der ersichtlich ist, wie die einzelnen Kurse aufgeteilt sind. Dabei gibt es sehr große Kurse, die der Lehrer bei seiner Terminauswahl voranstellt, da die kleinen Kurse als Lückenfüller besser funktionieren.
Er wird also so lange die Schüler mit ihren Kursen zwischen den beiden Terminen hin- und herschieben, bis es passt.
Das gestaltet sich natürlich in EXCEl sehr unübersichtlich.
Im Ergebnis soll es (als Bericht) eine Übersicht geben, in der beide Wochen gegenüber gestellt sind, die möglichst homogen verteilt sind- ohne Rücksicht auf die einzelne Person!

Diese Geschichte wird mit der von Dir vorgeschlagenen Tabellenstruktur nicht funktionieren.
Leider ist mir klar, dass ich den Nerv der Mitglieder arg strapaziere, aber mein ursprünglicher Wunsch war ja eigentlich recht klein: Filtere alle DS, bei denen FeldA ODER FeldB mit einer ID des HF übereinstimmt...
Ich wünsche allen anwesenden Usern einen ruhigen Abend! Domm
« Letzte Änderung: Oktober 16, 2017, 19:45:08 von Domm »
Gruß Domm
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #13 am: Oktober 16, 2017, 19:57:21 »
Hallo,
wenn die Termine wirklich unabhängig von den Kursen sind, dann siehe Bild.
Einen zusammengesetzten eindeutigen Index verhindert schon mal Doppelungen.
Der Rest ist nur Programmierung, so wie Du diese jetzt auch hast. Gefiltert nach KursA oder B wird dann nur in einer Spalte, nämlich in der Fremdschlüsselspalte zum Kurs.
Ich bin überzeugt, mit der Umstrukturierung wird das ganze Vorhaben einfacher.


Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Domm

Offline Domm

  • Access-User
  • *
  • Beiträge: 66
Re: Filtern eines UF nach WertA ODER WertB
« Antwort #14 am: Oktober 16, 2017, 21:51:59 »
Es ist fantastisch, wie Du Dich in die Materie reinkniest! Vielen Dank!
Die Lösung, welche Du vorschlägst, führt zu folgendem Ergebnis:
DS X: Schüler4 Kurs7 Termin: offen
DS Y: Schüler 4 Kurs 11 Termin: offen
Es wird meine Kenntnisse übersteigen, mit der Festlegung des Termin1 im DS X automatisch den Alternativ- Termin im DS Y zu vergeben.
Eine DB mit dieser unabhängigen Tabelle war mein erster Versuch; aber die automatische Zuordnung des verbleibenden Termins hat mich zum jetzigen Lösungsansatz geführt.
Vermutlich werde ich brauchbare VBA- Prozeduren für die Lösung der (ohne Zweifel korrekteren Struktur) von Euch Profis bekommen; aber das Ziel für mich ist eine mit meinem Wissensstand erarbeitete (und damit auch für mich nachvollziehbare) DB. Und da gehen die Probleme schon bei der Zuordnung der Kurse los: Die Isolierung der SchüId zur Vermeidung von doppelten Einträgen. Eine entsprechende Prozedur habe ich zwar übernommen, aber ich verstehe sie nicht:
Option Compare Database
Option Explicit 'nur angelegte Variablen zulässig

Private Sub btn_suchen_Click()
On Error GoTo FKTErr

DoCmd.SetWarnings (False)

Me.Schüler_frei.Requery 'Feld Schüler_frei aktualisieren
Me.Schüler_gebucht.Requery 'Feld Schüler_gebucht aktualisieren

FKTExit:
    Exit Sub

FKTErr:
    MsgBox Me.Name & "_btn_suchen_Click: " & Err.Description
    Resume FKTExit

End Sub

Private Sub Form_Load()
On Error GoTo FKTErr

DoCmd.SetWarnings (False)

Global_Long_Kurs = 0 '0 in Variable Global_Long_Kurs setzen
Global_Long_Schüler = 0 '0 in Variable Global_Long_Schüler setzen
Me.Schüler_frei.Requery 'Feld Schüler_frei aktualisieren
Me.Schüler_gebucht.Requery 'Feld Schüler_gebucht aktualisieren
Me.Kurs_aktuell.Caption = "kein ausgewählter Kurs" 'Titel setzen

FKTExit:
    Exit Sub

FKTErr:
    MsgBox Me.Name & "_Form_Load: " & Err.Description
    Resume FKTExit

End Sub

Private Sub Kurse_DblClick(Cancel As Integer)
On Error GoTo FKTErr

DoCmd.SetWarnings (False)

Global_Long_Kurs = Me.Kurse 'Kursnummer in Variable schreiben
Me.Kurs_aktuell.Caption = "aktuell ausgewählter Kurs: " & DLookup("[KursName]", "[Kurse]", "[KursID]=" & Global_Long_Kurs)
Me.Kursleiter_aktuell.Caption = DLookup("[KursLeiter]", "[Kurse]", "[KursID]=" & Global_Long_Kurs)
'Kurstitel aus Tabelle holen und anschreiben
Me.Schüler_frei.Requery 'Feld Schüler_frei aktualisieren
Me.Schüler_gebucht.Requery 'Feld Schüler_gebucht aktualisieren
   
    If Me.Schüler_frei.Enabled = False Then 'Wenn Feld Schüler_frei nicht aktiv dann aktivieren
    Me.Schüler_frei.Enabled = True 'Feld Schüler_frei aktivieren
    Me.Schüler_gebucht.Enabled = True 'Feld Schüler_gebucht aktivieren
    Me.Suchfeld.Enabled = True 'Feld Suchfeld aktivieren
    Me.btn_suchen.Enabled = True 'Button suchen aktivieren
    End If

FKTExit:
    Exit Sub

FKTErr:
    MsgBox Me.Name & "_Kurse_DblClick: " & Err.Description
    Resume FKTExit

End Sub

Private Sub Schüler_frei_DblClick(Cancel As Integer)
On Error GoTo FKTErr

DoCmd.SetWarnings (False)

Global_Long_Schüler = Me.Schüler_frei 'Schülernummer in Variable schreiben
DoCmd.OpenQuery "KurseSchüler_FO_neuDS" 'neuen Datensatz anlegen
Global_Long_Schüler = 0 'Schülernummer zurücksetzen
Me.Schüler_frei = Null 'Feld Schüler_frei auf Null setzen
Me.Schüler_frei.Requery 'Feld Schüler_frei aktualisieren
Me.Schüler_gebucht.Requery 'Feld Schüler_gebucht aktualisieren

FKTExit:
    Exit Sub

FKTErr:
    MsgBox Me.Name & "_Schüler_frei_DblClick: " & Err.Description
    Resume FKTExit

End Sub

Private Sub Schüler_gebucht_DblClick(Cancel As Integer)
On Error GoTo FKTErr

DoCmd.SetWarnings (False)

Global_Long_Schüler = Me.Schüler_gebucht 'Schülernummer in Variable schreiben
DoCmd.OpenQuery "KurseSchüler_FO_löschenDS" 'neuen Datensatz anlegen
Global_Long_Schüler = 0 'Schülernummer zurücksetzen
Me.Schüler_frei.Requery 'Feld Schüler_frei aktualisieren
Me.Schüler_gebucht = Null 'Feld Schüler_gebucht auf Null setzen
Me.Schüler_gebucht.Requery 'Feld Schüler_gebucht aktualisieren

FKTExit:
    Exit Sub

FKTErr:
    MsgBox Me.Name & "_Schüler_gebucht_DblClick: " & Err.Description
    Resume FKTExit

End Sub

Das geht weit über meinenHorizont; eine If Not IsNull (KursA) Anweisung kann ich gerade noch schreiben- auch wenn die Umsetzung ziemlich dilletantisch ist.
Eine Gute Nacht. Domm
Gruß Domm