Filtern über "Bei Markierungsänderung" bzw. "SelectionChange

Moderator: ModerationP

Filtern über "Bei Markierungsänderung" bzw. "SelectionChange

Beitragvon MononokeHime » 14. Okt 2019, 13:02

Hallo,

ich habe ein Hauptformular mit einem Unterformular. Und nun würde ich gerne "automatisch" zu einem anderen Datensatz im Hauptformular springen, je nach dem welchen Datensatz ich in einem weiteren Unterformular markiert habe, welches einfach eine in ein Unterformular eingebettete Tabelle ist.

Folgenden Filter habe ich dafür versucht zu verwenden:

Code: Alles auswählen
Private Sub Form_SelectionChange()

    Forms!frm_Hautpformular.Filter = "ID_Hauptformular =" & Forms!frm_Hauptformular!frm_Unterformular!ID_Unterformular
    Forms!frm_Hauptformular.FilterOn = True

End Sub


Kann mir jemand sagen, ob hier etwas falsch ist? Leider passiert gar nichts, wenn ich die Markierung im frm_Unterformular ändere...

Vielen Dank im voraus!!!
MononokeHime
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 35
Registriert: 23. Mär 2018, 13:17

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon mmarkus » 14. Okt 2019, 13:32

Ich arbeite zwar nie mit einem Datasheet.

Hab daher kurz gegoogelt.
Dieser Link könnte Aufklärung schaffen.

Beachte dabei den 3. Post.
Da wird der Vorschlag gemacht zur Laufzeit eine Public Klasse als Event Empfänger zu deklarieren.

Etwas anspruchsvoller wäre es, eine Klasse als Empfänger zu erstellen und zur Laufzeit die Referenz zu setzen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1642
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon MononokeHime » 14. Okt 2019, 13:57

Mmh, der Link hat mir jetzt leider nicht weitergeholfen... wahrscheinlich habe ich dafür zu wenig Ahnung.
Es ist auch mein erster Filter beim Ereignis "Bei Markierungsänderung". Dabei sind Filter möglich, oder?
MononokeHime
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 35
Registriert: 23. Mär 2018, 13:17

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon mmarkus » 14. Okt 2019, 14:15

MononokeHime hat geschrieben:Mmh, der Link hat mir jetzt leider nicht weitergeholfen.


Du erstellst ein Form Event ohne ein Form -> Wo und wie hast du das Event angelegt??
Es gibt ja nur das Hauptform??


Das ist das Grundproblem - darauf geht der Thread ein.
Es wird erst zur Laufzeit ein Formular erstellt.
Diesem könnte man zur Laufzeit per VBA Events zuweisen.

Du kannst ja mal eine abgespeckte Anwendung hochladen, so bald ich Zeit habe werde ich mir das mal ansehen und testen was da möglich ist.
Vielleicht gibts aber auch wen mit Erfahrung diesbezüglich.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1642
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon Gast » 14. Okt 2019, 14:25

Vielleicht hilft das:
Code: Alles auswählen
docmd.selectobject acform, "HFName"
'docmd.gotocontrol "UFName"    'falls du in einem Unterformular suchen willst
docmd.gotocontrol "FeldName"   'Feld, in dem du den Datensatz lokalisieren willst
docmd.findrecord suchstring, , , , true, , true
Gast
 

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon Bitsqueezer » 14. Okt 2019, 17:22

Hallo,

"SelectionChange" gilt nur für Pivot-Formulare/-Charts:
https://docs.microsoft.com/de-de/office ... hange(even)

Damit kann man Aktivitäten auf einem solchen Formular programmieren. Für Datensatzwechsel ist immer Form_Current zuständig.

Eine eingebettete Tabelle hat keine Events. Du mußt also ein Formular einbinden.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7218
Registriert: 21. Jun 2007, 12:17

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon mmarkus » 14. Okt 2019, 18:11

Bitsqueezer hat geschrieben:Eine eingebettete Tabelle hat keine Events. Du mußt also ein Formular einbinden.


Ich hab den Vorschlag aus dem verlinkten Artikel getestet.
Wie angedeutet ist es beim Einbinden einer Abfrage/Tabelle als Datasheet in ein Subform problemlos möglich, die Form Events zu verwenden.

Entgegen der allgemeinen Meinung ist das sowohl mit einer Public Funktion, und einer Klasse welche die Events verarbeitet möglich.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1642
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon Bitsqueezer » 14. Okt 2019, 18:54

Hallo Markus,

ja, es gibt die Möglichkeit, da auch eine eingebundene Tabelle intern auf einem Datasheet-Formular basiert - aber eben nur intern.

Sich an dieses Formular zu klinken und auf zuverlässige Funktionalität zu hoffen, ist aber experimentell, das Verhalten kann sich jederzeit ändern.

Es ist sinnvoller und viel einfacher, ein Datasheet-Formular daraus zu machen und dann ganz regulär die Events zu nutzen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7218
Registriert: 21. Jun 2007, 12:17

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon mmarkus » 14. Okt 2019, 19:36

Bitsqueezer hat geschrieben:ja, es gibt die Möglichkeit, da auch eine eingebundene Tabelle intern auf einem Datasheet-Formular basiert - aber eben nur intern.


Wie kommst du zu der Annahme?
Ist das nur deine persönliche Schlussfolgerung, oder gibts da auch Argumente? (ist aber nicht wichtig)


Hab das ehrlich gesagt auch noch nie versucht.
Beim Test ist mir offenbar ein Fehler unterlaufen.
Da ich zufällig ein Formular hatte, dass den selben Namen trug wie die Tabelle. Ist ja nur eine Test DB für Formulare.
Klappen tuts nur mit Public Funktionen, da man die Eigenschaft -> HasModul zur Laufzeit nicht manipulieren kann - dadurch ist es für mich automatisch ein nogo,
aber dennoch interessant zu wissen.

LG M
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1642
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon Bitsqueezer » 14. Okt 2019, 20:50

Hallo Markus,

habe das schon selbst mal ausprobiert, die Events sind auf diesen internen Formularen nur zum Teil vorhanden (weil sie ja auch nur von Access selbst gebraucht werden und nicht programmiert werden).

Wie Du auch schon selbst festgestellt hast, ist es kein "normales" Formular.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7218
Registriert: 21. Jun 2007, 12:17

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon MononokeHime » 15. Okt 2019, 08:09

Hallo zusammen,

danke für die Hilfe!
Dies war mir nicht klar:


"SelectionChange" gilt nur für Pivot-Formulare/-Charts:
https://docs.microsoft.com/de-de/office ... hange(even)

Damit kann man Aktivitäten auf einem solchen Formular programmieren. Für Datensatzwechsel ist immer Form_Current zuständig.


Ich habe es dann mit "Form_Current" probiert, aber das passt in meinem Fall leider auch nicht, weil es nicht nur beim Laden das Formular filtern soll, sondern auch wenn ich einen anderen Eintrag in einem eingebetteten Unterformular markiere, das bei mir wie eine Liste fungiert.

Es funktioniert aber letztendlich über einen eingefügten Button mit diesem Filter. D.h. ich muss dann nach dem Markieren der Zeile im Unterformular noch auf einen Button klicken, um das Hauptformular zu filtern.
So wird mein Formular zwar nicht "automatisch" gefiltert, aber damit kann ich auch leben...
Falls noch jemand eine andere Möglichkeit der Automatisierung kennt, probiere ich das gerne auch noch aus, ansonsten schon einmal vielen Dank für die tolle Hilfe!!!
MononokeHime
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 35
Registriert: 23. Mär 2018, 13:17

Re: Filtern über "Bei Markierungsänderung" bzw. "SelectionCh

Beitragvon Bitsqueezer » 15. Okt 2019, 08:29

Hallo,

Form_Current wird bei jedem Datensatzwechsel ausgelöst, auch beim Laden.

Für's Laden ist Form_Load zuständig, davon sprechen wird hier aber nicht.

Lade mal eine Testdatenbank mit einem Beispielformular und ein paar Demodatensätzen hoch, dann kann man mehr dazu sagen.

Es genügt nicht, die Eventprozedur in den Code einzufügen, es gehört auch ein Eintrag in das Event-Property.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7218
Registriert: 21. Jun 2007, 12:17


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste