Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Daten filtern

Begonnen von Holger Jacobi, November 20, 2024, 18:51:33

⏪ vorheriges - nächstes ⏩

Holger Jacobi

Hallo,
ich habe mir eine Datenbank für die Verwaltung, Bestimmung und Visualisierung meiner Tierfotos und -videos erstellt. Die funktionierte bis jetzt auch ganz zufriedenstellend.
Die Visualisierung habe ich über ein Unterformular im Ansichtsformular mit VLC Mediaplayer gelöst, der zeigt alle von mir verwendeten Dateiformate (jpg, tif, mpo, mp4).
Anfang des Jahres habe ich mir eine höherauflösende Kamera beschafft, deren jpg-Bilder größer als 10 Mb sind – das öffnet VLC schon nicht mehr.
Diese kann ich ohne Probleme mit dem eingebauten Fotoanzeiger ansehen, unabhängig der Größe.
Das sind damit 2 Unterformulare, bzw. zwei baugleiche Formulare mit unterschiedlichen Unterformularen.

Im Hauptformular (en) filtere ich mit etlichen Kombifeldern die Datensätze.
Siehe Bild:

Wenn ich dann zum anderen Formular mit der Schaltflache ,,Große Bilder" folgendermaßen wechsele:
 

Dann kommt nur der eine Datensatz mit rüber, ich möchte aber die komplette gefilterte Datensatzmenge, wie geht das am besten?
Gruß Holger

Neue Frage >> neues Thema
Bitte nicht einfach an erledigte Themen anhängen. MzKlMu




MzKlMu

Hallo,
bitte Code immer als Text (in Codetags) hier einstellen. Code als Bild ist ungeeignet um Änderungen/Verbesserungen zu beschreiben. Man müsste ja den Text abschreiben.
Und immer ein neues Thema anfangen, nicht einfach an ein abgeschlossenes Thema anhägen. Ich habe das abgetrennt.

Ansonsten habe ich das Problem nicht richtig verstanden.

PS:
Falls "Holger Jacobi" Dein richtiger Name ist, solltest Du das ändern. Man nimmt in solchen Foren keine echten Namen.
Gruß Klaus

PhilS

Zitat von: Holger Jacobi am November 20, 2024, 18:51:33Wenn ich dann zum anderen Formular mit der Schaltflache ,,Große Bilder" folgendermaßen wechsele:
 

Dann kommt nur der eine Datensatz mit rüber, ich möchte aber die komplette gefilterte Datensatzmenge, wie geht das am besten?
Du erstellst in deinem Code einen neuen Filterstring mit der aktuellen ID (= ein Datensatz).
Wenn du den Filter des ersten Formulars übernehmen willst:
Filter = Me.Filter
DoCmd.OpenForm ......
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Holger Jacobi

Habe ich ausprobiert, jetzt öffnet das Formular alle Datensätze, die Filterung durch die Kombifelder wird nicht berücksichtigt.

Gruß
Holger

Holger Jacobi

#4
Mein Problem ist, daß von den gefilterten Daten des Formulars nur der aktive Datensatz in das andere Formular übernommen wird.

Mit der Methode von Phils mit "Filter= Me.Filter" werden wiederum alle Datensätze ungefiltert übernommen.

Gruß
Holger

PhilS

Zitat von: Holger Jacobi am November 20, 2024, 22:41:38Habe ich ausprobiert, jetzt öffnet das Formular alle Datensätze, die Filterung durch die Kombifelder wird nicht berücksichtigt.
Bitte poste mal den Code deines Buttons mit dieser Änderung (als Text bitte, nicht als Bild).
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Holger Jacobi

Hallo,

Die VBA für die Schaltfläche sieht folgendermaßen aus:

Private Sub Befehl151_Click()

Dim FormularName As String
Dim Filter As String

FormularName = "Bildbetrachtung 1 Monitor"
Filter = "[BilddatenID] = " & Me![BilddatenID]

DoCmd.OpenForm FormularName, acNormal, , Filter

End Sub

Allerdings denke ich, daß noch ein anderes Problem bestehen kann:

Die Kombifelder zum Filtern für die Steuerelemente Stamm, Klasse, Ordnung, Familie und Art, sowie Land und Gebiet sind so gestaltet, daß nach filtern eines Stammes das folgende Filtern einer Klasse nur die Klassen des gefilterten Stammes enthalten, das geht dann so weiter mit der Ordnung, Familie und der Art.

Dazu sind in der Formularabfrage Kiterien definiert:

Für Stamm: Wie "*" & [Formulare]![Bildbetrachtung 2 Monitor]![Kombifeld_Auswahl_Stamm] & "*"
für Klasse: Wie "*" & [Formulare]![Bildbetrachtung 2 Monitor]![Kombifeld_Auswahl_Klasse] & "*"
usw.

Damit das Ganze auch funktioniert, ist in den Kombifeldern bei "Nach Aktualisieren" die Anweisung:

für Stamm:

Private Sub Kombifeld_Auswahl_Stamm_AfterUpdate()
Me.Requery
End Sub

usw.

Die Kombifelder haben jedes seine eigene Abfrage, die beim Stamm nur die Steuerelemente "Stamm, Stamm deutsch" enthält, aber ab Kombifeld Klasse sind außer "Klasse, Klasse deutsch" auch "Stamm" mit folgendem Kriterium enthalten:
[Forms]![Bildbetrachtung 2 Monitor]![Kombifeld_Auswahl_Stamm]

usw.

Kann das den Formularwechsel mit gleichen Datensätzen beeinflussen?

Gruß
Holger

Beaker s.a.

Hallo Holger,
ZitatMein Problem ist, daß von den gefilterten Daten des Formulars nur der aktive Datensatz in das andere Formular übernommen wird.
Welch Wunder? Das hast du doch so verlangt
Filter = "[BilddatenID] = " & Me![BilddatenID]Wenn ich es recht verstanden habe filterst du das HFo und möchtest dann ein
anderes Formular mit dem gleichen Filter öffnen. Dann so
Filter = "[BilddatenID] = " & Me.Filter
DoCmd.OpenForm FormularName, acNormal, , Filter
Wobei ich mir nicht sicher bin ob "Filter" nicht ein reservierter Begriff
ist. Besser ist immer Variablen schon im Namen zu typisieren; - sFilter.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

PhilS

Zitat von: Beaker s.a. am November 21, 2024, 17:52:59Wenn ich es recht verstanden habe filterst du das HFo und möchtest dann ein
anderes Formular mit dem gleichen Filter öffnen. Dann so
Code [Auswählen] Erweitern
Filter = "[BilddatenID] = " & Me.Filter
DoCmd.OpenForm FormularName, acNormal, , Filter
Mal davon abgesehen, dass es keinen Sinn ergibt ein Feld (BilddatenId) mit dem bestehenden Filter zu vergleichen, hatte ich auch schon vorgeschlagen den aktuellen Filter so zu übernehmen.
Das funktioniert hier leider nicht. Es wurde, mindestens von mir, fälschlicherweise angenommen, dass das Verb "filtern" auf die Filter-Eigenschaft des Formular verweist. Tut es aber nicht. Der Einschränkung der Datensätze erfolgt über Kriterien mit Steuerelementverweisen in der Datenherkunft des Formulars.
Das lässt sich nicht so einfach auf ein anderes Formular übernehmen; jedenfalls nicht dynamisch. Außerdem ist es sehr häßlich.

@Holger Jacobi , ich sehe hier im Moment keine andere brauchbare Lösung, als den Filter-String basierend auf der aktuellen Auswahl in deinen ComboBoxen komplett neu aufzubauen und dann beim Öffnen an das zweite Formular zu übergeben.


Zitat von: Beaker s.a. am November 21, 2024, 17:52:59Wobei ich mir nicht sicher bin ob "Filter" nicht ein reservierter Begriff
ist. Besser ist immer Variablen schon im Namen zu typisieren; - sFilter
Bei reservierten Begriffen lässt der Compiler die Ausführung des Codes gar nicht zu. - Also nein.
Dass diese Form der ungarischen Notation besser sei, wird immer mehr zu einer veralteten Meinung. Ich stimme dir zu, dass es Vorteile hat, wenn man für eigene Variablen nicht bereits bestehende Namen im aktuellen Gültigkeitsbereich verwendet.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

Hallo Phil,

Uups, da ist mir aber ein peinlicher C&P-Fehler unterlaufen. Sollte natürlich
so lauten
Filter = Me.FilterUnd dein Post mit eben diesem Code ist wohl der "gefilterten Wahrnehmung" zum
Opfer gefallen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)