Private Sub Search_Number_Change() 'Suche
Filter = "Artikel like '*" & Search_Number.Text & "*'"
FilterOn = True
End Sub
Private Sub Form_Current()
If Not Me.NewRecord Then
Me.Gefiltert.Value = fx() & " Einträge"
End If
End Sub
Private Function fx() As Long
If Me.RecordsetClone.RecordCount > 0 Then
Me.RecordsetClone.MoveLast
fx = Me.RecordsetClone.RecordCount
Else
fx = 0
End If
End Function
Die TextBox mit Namen "Gefiltert" zeigt sofort die aktuelle Anzahl der gefundenen DS.
Sobald aber die Anzahl der gefundenen DS =0 ist, zeigt die TextBox aber dennoch den zuvor erhaltenen Wert an.
Beispiel:
Ich klicke in mein Universalsuchfeld "Search_Number"
und gebe z.B. die Zahl 3 ein,
dann kommen als Ergebnis 4587 Einträge.
Dann die 7 (Jetzt steht da 37 drin)
dann kommen als Ergebnis 752 Einträge.
Dann die 2 (Jetzt steht da 372 drin)
dann kommen als Ergebnis 22 Einträge.
Dann die 8 (Jetzt steht da 3728 drin)
dann kommen als Ergebnis 22 Einträge.
Aber eigentlich sind es jetzt NULL.
Es gibt keinen DS, der in diesem Feld den Wert 3728 drin hat.
Ich habe mal versucht eine If fx=0 Then einzubauen,
aber das scheint so nicht zu funktionieren.
Was muss ich da einfügen, damit ich auch als Anzeige 0 Einträge erhalte?
Hi,
kann es sein, dass bei den zu erwarteten Null-Datensätzen, die Zeile in der Bedingung
If Not Me.NewRecord Then
Me.Gefiltert.Value = fx() & " Einträge"
End If
gar nicht durchlaufen wird?
Harald
Weiß ich nicht.
Kann gut möglich sein, dass die nicht durchlaufen wird.
Ich werde mal eine IF....THEN davor setzen und mal sehen,
ob es dann möglich ist, dass dann "0 Einträge" angezeigt wird.
Hallo,
Private Sub Form_Current()
If Not Me.NewRecord Then
Me.Gefiltert.Value = fx() & " Einträge"
End If
End Sub
wenn es keine Datensätze gibt und das Hinzufügen ist erlaubt, so stehst du automatisch auf dem neuen Datensatz und somit ist NewRecord True.
Es gibt also keinen Grund, die Aktion bei Newrecord zu überspringen - oder was übersehe ich da gerade?
Ich habe wohl mein Problem etwas unglücklich beschrieben.
Ich bastele mal bisschen rum.
Irgendwie kriege ich es schon hin, dass bei Gefilterte Lösung = 0
auch eine 0 in meiner TextBox erscheint.
Danke allen, die mir Tipps gegeben haben.
Hallo Achim,
ZitatIrgendwie kriege ich es schon hin, dass bei Gefilterte Lösung = 0
auch eine 0 in meiner TextBox erscheint.
Private Sub Form_Current()
If Not Me.NewRecord Then
Me.gefiltert.Value = fx() & " Einträge"
Else
Me.gefiltert.Value = "0 Einträge"
'Me.Search_Number = ""
End If
End Sub
HTH
Hi,
Zitat von: accessy am Januar 28, 2015, 17:59:32Ich habe wohl mein Problem etwas unglücklich beschrieben.
Ich bastele mal bisschen rum.
das ist aber doch keine Antwort auf meinen Beitrag. Was ist falsch an meinem Vorschlag?
Der sollte eigentlich genau das machen was du haben willst.
@MaggieMay
Zitatdas ist aber doch keine Antwort auf meinen Beitrag. Was ist falsch an meinem Vorschlag?
Falsch nix, nur umsetzen ...
@accessy:
Ich dachte nicht, dass ich meinen Hinweis auf die überflüssige Abfrage von "Newrecord" auch noch vormachen muss, aber bei mir sähe die Umsetzung so aus:Private Sub Form_Current()
Me.Gefiltert.Value = fx() & " Einträge"
End Sub
Dass du bei "NewRecord" den Zähler nicht aktualisierst ist doch genau der Fehler, den du bemängelt hast. Was liegt also näher, als darauf zu verzichten?!
Hi,
meine oben gestellte Frage war rein rhetorisch gemeint und sollte zu eigenen Versuchen anregen.
In der Art:
Private Sub Form_Current()
If Me.RecordsetClone.RecordCount > 0 Then Me.RecordsetClone.MoveLast
Me.AnzeigeFeld_fuer_die_Anzahl_Daten = Me.RecordsetClone.RecordCount
End Sub
Harald
@MaggieMay
Wenn du mit dem Ereigniscode auf 'Neuer Datensatz' klickst bleibt die 'alte' Anzeige im Ergebnisfeld stehen.
Wenn du eine Zahl eingibst, zu der es keinen Datensatz gibt dann wird das Ergebnis 0 geliefert.
Wenn auf beide Dinge '0 Einträge' erscheinen soll dann muss man auf NewRecord reagieren ... z.B. mit Else Zweig
@bahasu
Dein Vorschlag bringt leider nicht das gewünschte Ergebnis :(
@database:
ZitatWenn du mit dem Ereigniscode auf 'Neuer Datensatz' klickst bleibt die 'alte' Anzeige im Ergebnisfeld stehen.
das ist ja auch logisch, denn wenn nicht gefiltert sondern nur auf einen neuen Datensatz gesprungen wird, verändert sich die Zahl der angezeigten Datensätze ja nicht.
Wenn du auch hier wieder (wie neulich schon mal) darauf anspielen willst, dass Access sich da anders verhält und beim Sprung auf einen neuen Datensatz den Datensatzzähler bereits erhöht, obwohl er ja noch gar nicht gespeichert wurde, so halte ich das in diesem (wie auch im anderen) Zusammenhang für falsch, wenn man davon ausgeht, dass die Anzahl der tatsächlich vorhandenen (bzw. gefundenen) Datensätze angezeigt werden soll.
Es ist eine Frage der Interpretation. Wenn ich auf einen neuen Datensatz springe, befinde ich mich tatsächlich bspw. auf dem (potentiell) 65. von 64, wobei Access eben nicht "65 von 64" sondern "65 von 65" anzeigt, was mich immer schon irritiert hat und was ich auch einfach nicht korrekt finde. Aber wie gesagt ist das möglicherweise eine Frage der Interpretation, die man unterschiedlich beurteilen kann.
ZitatWenn auf beide Dinge '0 Einträge' erscheinen soll [...]
Das wäre jetzt allerdings wieder eine komplett andere Sichtweise. Ich sehe keinen Sinn darin, in einem (Endlos-) Formular die angezeigte Datensatzanzahl auf 0 zu setzen, wenn man auf einen neuen Datensatz springt (und alle anderen möglicherweise noch sieht).
Nicht, dass ihr anfangt euch hier gegenseitig zu verbessern.
Das kleine Anliegen ist es nicht wert.
Ich kriege es nicht hin, weil es vermutlich gar nicht geht.
Aber das macht nichts. Völlig unwichtig.
Ich werde bestimmt wieder andere Fragen und Anliegen haben,
die mir wichtiger sein werden.
Ich bin vermutlich zu oft in meinen Excel-Gedanken und versuche diese auf Access zu übertragen. Aber das geht nun mal nicht.
Hallo,
wirf den ganzen diesbezüglichen Code weg und schreib in den Steuerelementinhalt des Feldes "gefiltert" dieses:
=Anzahl(*)
ZitatNicht, dass ihr anfangt euch hier gegenseitig zu verbessern.
Gelegentliche Diskussionen beleben den Moderatoren-Job, da mach dir mal keine Sorgen.
ZitatIch kriege es nicht hin, weil es vermutlich gar nicht geht.
Definiere präzise was du erreichen willst, dann ist es auch lösbar.
Ich verstehe ehrlich gesagt nicht, was du willst, wenn die bisher gezeigten Lösungsansätze für dich immer noch nicht das gewünschte Ergebnis liefern.
Es liegt also an dir, deine Ziele so konkret zu schildern, dass keine Missverständnisse mehr möglich sind.
Ansonsten vermute ich, dass du die Hilfestellungen nicht verstanden oder falsch umgesetzt hast.
Um dies zu klären, könnte eine Beispiel-DB von dir helfen. Aber bitte mit konkreten Hinweisen, was an welcher Stelle vermisst wird oder falsch läuft.
Hi,
ZitatIch sehe keinen Sinn darin, in einem (Endlos-) Formular die angezeigte Datensatzanzahl auf 0 zu setzen, wenn man auf einen neuen Datensatz springt (und alle anderen möglicherweise noch sieht).
Naja, kommt darauf an aus welcher Ecke man die Sache betrachtet.
Hinweis auf ein Endlosformular war keiner, und ich finde, dass es schon Sinn macht zumal es um eine Filterung geht.
Wenn also mit dem eingegebenen Filterkriterium nichts gefunden wird ist nichts grausliches dran dass in dem Fall im Ergebnisfeld '0 Einträge' steht, auch wenn dabei ein neuer DS erzeugt wird.
ZitatDann die 8 (Jetzt steht da 3728 drin)
dann kommen als Ergebnis 22 Einträge.
Aber eigentlich sind es jetzt NULL.
Es gibt keinen DS, der in diesem Feld den Wert 3728 drin hat.
Auf diese Aussage habe ich angenommen, dass in besagtem Fall - also ein Wert im Filterfeld der keine Ergebnisse bringt - im Ergebnisfeld '0 Einträge' stehen soll' und das erledigt mein Vorschlag.
Aber bitte, wenn der TO das möglicherweise entgegen seiner Frage anders haben möchte ... soll's so sein.