Ich habe ein HF, das auf einer Tabelle basiert und Datensätze zeigt. Außerdem gibt es ein UFO. Im HF befinden sich drei Listenfelder als Filter, die das UFO filtern.
Wenn ich das HF öffne, wird immer ein Datensatz angezeigt, den ich zuletzt offen hatte. Das UFO ist hingegen leer (so wie es sein soll) bis alle drei Listenfelder angewählt wurden.
Ich möchte jetzt einstellen, dass auch das HF keinen Datensatz zeigt, bis alle drei Listenfelder angewählt wurden. Wie kann man das einstellen?
Hallo,
filtere die Abfrage für das Formular auf einen Wert den es nicht gibt.
Z.B. Im Ereignis "Beim Laden"
Me.Filter ="ID = 0"
Me.FilerOn=True
Wenn das 3.Listenfeld gefüllt ist entfernst Du den Filter.
Me.Filter =""
Me.FilerOn=False
Ggf. musst Du auch noch das Anfügen neuer Datensätze unterbinden, damit kein neuer Datensatz angezeigt wird.
Mit Me.Filter ="ID = 0"
Private Sub Form_Load()
Me.Filter = "ID = 0"
Me.FilterOn = True
End Sub
bleibt die ganze Seite total weiß und er schreibt irgendwo was ein, dass ich es nicht mehr rückgängig machen kann.
Carl
Oder mal anders herum gefragt, wie kann ich in einer Abfrage bestimmte Zellenwerte in der [ID] ausschließen. Also wenn alle ID angezeigt werden sollen, nicht aber 38, 43 und 56.
Hallo,
Welchen Sinn ergibt das?
Me.Filter = "ID not In (38, 43, 56)"
Danke.
Warum?
Ich habe in einem Formular, das eine "Hilfstabelle" editiert, einige Datensätze, die in diesem Formular nicht angezeigt werden sollen, weil sie nicht editiert werden dürfen, weil sie Schlüsselmerkmale in einer Statistik darstellen, während die anderen Datensätze keine Schlüsselmerkmale enthalten und vom Nutzer immer mal gelöscht und durch andere ersetzt werden sollen.
Ich mache das bei den anderen Hilfstabellen so, dass die Schlüsselmerkmale die niedrigen [ID]'s bekommen und dann lasse ich nach [ID]> 3 filtern, aber das habe ich bei der betreffenden Tabelle von Anfang an versäumt.
Carl
Zitat von: MzKlMu am November 04, 2017, 18:50:53
filtere die Abfrage für das Formular auf einen Wert den es nicht gibt.
Z.B. Im Ereignis "Beim Laden"
Me.Filter ="ID = 0"
Me.FilerOn=True
Wenn das 3.Listenfeld gefüllt ist entfernst Du den Filter.
Me.Filter =""
Me.FilerOn=False
Ggf. musst Du auch noch das Anfügen neuer Datensätze unterbinden, damit kein neuer Datensatz angezeigt wird.
Nochmal eine Nachfrage: Mit dieser Lösung bleibt die Seite komplett weiß und kann in dieser Kopie der Datenbank von mir auch nicht mehr rückgänig gemacht werden.
Außerdem hebt der Befehl auch die anderen Filter auf.
Gibt es noch eine andere Lösung?
Hallo,
wenn die Anzeige weiß bleibt so ist das normal, wenn keine neuen Datensätze angefügt werden können.
Wo kommen denn die anderen Filter her, der von mir gezeigte Vorschlag berücksichtigt natürlich keine schon vorhandenen Filter.
Außerdem solltest Du auch bei einem Formular ohne Daten (weiß) in den Entwurf wechseln können. Und außerdem kommst Du auch in den VBA Editor und kannst dort den Code deaktivieren.
Zitatweil sie Schlüsselmerkmale in einer Statistik darstellen,
das würde ich dann doch ganz anders lösen. Spendiere den/der Tabelle(n) ein JaNein Feld "KeineAenderungenZulassen" und filtere die Datensätze die in diesem Feld ein Ja haben aus. Dann spielen die IDs keine Rolle mehr.
Außerdem kannst Du mit einem solchen JaNein Feld die Datensätze im Formular zwar anzeigen, aber automatisch für eine Bearbeitung sperren. Das wäre für mich viel einfacher.
Das kann ich schon, aber wenn ich den VBA-Code hernach wieder auskommentiere oder lösche, bleibt beim nächsten Aufruf das komplette Formular weiß. Also eine weiße Fläche, mitsamt sämtlichen Elementen und den Unterformularen. Wahrscheinlich wird noch woanders als ur im VBA-Code irgendwas umgestellt.
Mir wäre es lieber, wenn ich wüsste, wieso das Formular im Betrieb immer den zuletzt editierten Datensatz zeigt und das abstellen. Er muss ja irgendwo speichern, welches dieser Datensatz war.
Den zweiten Vorschlag mit den Kästchen werde ich umsetzen.
Carl
Zitat von: MzKlMu am November 04, 2017, 18:50:53
Hallo,
filtere die Abfrage für das Formular auf einen Wert den es nicht gibt.
Z.B. Im Ereignis "Beim Laden"
Me.Filter ="ID = 0"
Me.FilerOn=True
Wenn das 3.Listenfeld gefüllt ist entfernst Du den Filter.
Me.Filter =""
Me.FilerOn=False
Ggf. musst Du auch noch das Anfügen neuer Datensätze unterbinden, damit kein neuer Datensatz angezeigt wird.
Ich hab's so hingekriegt.
Außerdem wollte ich nochmal Danke sagen für die vielen guten Tips hier und hab deshalb im Anhang ne Flasche Baileys angefügt.
Carl