Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access verändert selbständig Abfragekriterien

Begonnen von DaniKa, November 29, 2022, 13:00:41

⏪ vorheriges - nächstes ⏩

DaniKa

Hallo, ich hoffe hier kann mir jemand helfen...

Ich habe mehrere Formulare angelegt, die als Datenquelle eine Abfrage haben. In den Formularen gibt es ungebundene Text- und oder Kombifelder, in denen Eingaben gemacht bzw. Auswahlen getroffen werden können. In der Abfrage sind dann in den entsprechenden Feldern Kriterien hinterlegt, die auf die Eingaben verweisen.

Also z.B.: Es gibt eine Tabelle tblBetriebsbremse mit den Feldern IDBetriebsbremse, Datum, Kontrolleur usw.. Es gibt eine Abfrage abfBetriebsbremse mit den zusätzlichen Feldern Monat und Jahr. Dann gibt es noch ein Formular frmABFBetriebsbremse, in dem über ein Textfeld txtJahr und ein Kombifeld cbxMonat selektiert werden soll. In der Abfrage stehen bei den entsprechenden Feldern Kriterien, z.B. bei dem Feld Jahr: Wie "*" & [Formluare]![frmABFBetriebsbremse]![txtJahr] & "*". Es soll also z.B. nur das Jahr angezeigt werden, dass im ungebundenen Textfeld Jahr eingegeben wurde. Im Formular ist bei dem Textfeld auch noch ein entsprechendes Ereignis hinterlegt (natürlich auch bei allen anderen ungebundenen Feldern, die zur Selektion genutzt werden).

Soweit so schön. Hat auch funktioniert - auch in anderen Formularen bzw. Abfragen (natürlich dann mit angepassten Feldnamen).

Jetzt habe ich seit einiger Zeit das Problem, dass wenn ich über das Formular öffne, ein Parameter eingegeben werden soll. Es steht ein anderer Kriterienausdruck drin, als ich in der Abfrage hinterlegt habe. In meinem Fall wird immer, also auch in anderen Abfrageformularen, das eigentliche Formular gegen das Formular frmABFAntriebsscheibe ausgetauscht, das es auch in der DB gibt. Die Felder hingegen bleiben gleich. Also wenn ich ursprünglich in meiner Abfrage bei Kriterien den Ausdruck Wie "*" & [Formluare]![frmABFBetriebsbremse]![txtJahr] & "*" hinterlegt habe, dann wird auf einmal beim Öffnen des Formulars frmABFBetriebsbremse   Wie "*" & [Forms]![frmABFAntriebsscheibe]![txtJahr] & "*" daraus.

Ich habe bereits alle Abfragen neu angelegt. Trotzdem passiert das immer wieder. Nicht bei allen Formularen, aber bei den meisten. Ich ändere es ab, speichere... manchmal ändert es sich sofort wieder, manchmal erst nach mehrmaligem Öffnen.

Unser Access-Spezialist hat keine Idee, woran das liegt. Er vermutet ein Bug... Hat jemand von euch eine Idee?

ebs17

#1
ZitatUnser Access-Spezialist ...
Niedlich ...

Access spricht eigentlich englisch. Forms statt Formulare ist somit richtiger und wird besser funktionieren, und wenn gar Formluare als Forms erkannt wird, solltest Du Dich glücklich und bevorteilt schätzen.

Wie "*" & [Formluare]![frmABFBetriebsbremse]![txtJahr] & "*" zur Filterung auf eine Jahreszahl ist aber nicht intelligent, sondern ungeschickt, unüberlegt und performanceschädlich.

Jahreszahl LIKE '*2022*'
Jahreszahl = 2022

Was beurteilen Dein Access-Spezi und Du als vernünftiger?

Mit freundlichem Glück Auf!

Eberhard

PhilS

Das "Formulare" zu "Forms" geändert wird ist kein Problem. Das passiert i.d.R. wenn irgendwo deutsche Schlüsselworte stehen und dann das jeweilige Objekt in Access mit Englischen Spracheinstellungen geöffnet wird.

Das sich der Name des Formulars ändert ist nicht normal, allerdings höchstwahrscheinlich aber auch kein Bug in Access.
Ich würde erstmal kontrollieren, dass die betroffenen Formulare auch wirklich die jeweilige gespeicherte Abfrage verwenden und nicht eine ähnliche (SQL-)Abfrage, die in der Datensatzherkunft-Eigenschaft des Formulars hinterlegt ist.

Außerdem würde ich die Objektnamen Autokorrektur (Datei - Optionen - Aktuelle Datenbank) ausschalten. Wenn man Objekte in der Datenbank umbenennt kann die zu teilweise unerwarteten Seiteneffekten führen.

Außerdem beachte den Hinweis zum Filtern des Jahres mit Wie von @ebs17.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

DaniKa

Vielen Dank für eure Antworten.

@ebs17 Vielleicht kurz zur Erklärung: In der Tabelle tblBetriebsbremse werden monatliche Kontrollen erfasst, d.h. es kommt jeden Monat ein neuer Datensatz hinzu. Über das Formular frmABFBetriebsbremse soll es dem User auf möglichst einfache und übersichtliche Art und Weise ermöglicht werden, nach Jahr und/oder nach Monat zu selektieren. In anderen Abfrage-Formularen (die sich auf andere Tabellen beziehen) kann z.B. auch nach KW oder nach Kontrolleur selektiert werden, je nachdem, was für die Kontrolle sinnvoll ist.

Grundsätzlich funktioniert die Abfrage schon. Das habe ich oft genug getestet... Sicherlich mag es intelligentere Lösungen geben - aber mein Anspruch ist, die Nutzung durch die (allesamt komplett Access-unerfahrenen User) so einfach wie möglich zu machen. Warum ist diese Lösung nicht geschickt?

Wenn ich in der Abfrage bei Kriterium nur die Klammer und das f tippe, dann schlägt Access (2016) den Ausdruck Formulare selbst vor. Ich habe aber auch schon versucht, stattdessen forms einzugeben. Das Resultat war aber das gleiche.

@PhilS Ich habe die Autokorrektur ausgeschalten und probiere es mal. In den Formular-Eigenschaften ist als Datenquelle jeweils die richtige Abfrage hinterlegt.

Als ich die Formulare damals angelegt habe, habe ich manchmal auch ein Formular kopiert und dann geändert. Kann das vielleicht das Problem sein? Die Abfragen habe ich ja alle mittlerweile teilweise sogar mehrfach neu angelegt; die Formulare allerdings nicht. Würde es eventuell Sinn machen, die Formulare in eine neuen DB zu exportieren?


Beaker s.a.

Hallo,
ZitatWarum ist diese Lösung nicht geschickt?
Weil eine Zahl eine Zahl ist (=) und kein Text. Da gibt es keine
Suchmuster (LIKE); - eine Zahl kann nur optisch einer anderen Zahl
gleichen. Oder welche Zahlen erwartest du anstatt der * ?

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)

DaniKa

Guten Abend,

das leuchtet mir ein Stückweit ein. Dann müsste ich also in der Abfrage beim Kriterium z.B. des Jahresfeldes also nur =MeinFeld (also das Suchfeld, das ungebundene Textfeld im Formular) hineinschreiben? Oder ist das jetzt wieder zu einfach gedacht?

PhilS

Zitat von: DaniKa am November 29, 2022, 21:12:59Als ich die Formulare damals angelegt habe, habe ich manchmal auch ein Formular kopiert und dann geändert. Kann das vielleicht das Problem sein? Die Abfragen habe ich ja alle mittlerweile teilweise sogar mehrfach neu angelegt; die Formulare allerdings nicht. Würde es eventuell Sinn machen, die Formulare in eine neuen DB zu exportieren?
Das Vorgehen mit Kopieren und Ändern der Formulare kann in Verbindung mit der Objektnamen-Autokorrektur durchaus die Ursache für ein solches Problem sein. - Allerdings dürften die Problem dann nur einmalig und in unmittelbaren Zusammenhang mit diesen Aktionen auftreten. Dauerhafte Problem sollten dadurch nicht entstehen, daher ist es auch nicht nötig jetzt nochmal Formulare neu zu erstellen.

 
Zitat von: DaniKa am Dezember 06, 2022, 18:40:56Dann müsste ich also in der Abfrage beim Kriterium z.B. des Jahresfeldes also nur =MeinFeld (also das Suchfeld, das ungebundene Textfeld im Formular) hineinschreiben? Oder ist das jetzt wieder zu einfach gedacht?
Wenn nur die Jahreszahl in dem betreffenden Feld steht, ist das so richtig.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor