Neuigkeiten:

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

Mobiles Hauptmenü

Wenn Wert =0 ist, wird das nicht angezeigt

Begonnen von accessy, Januar 27, 2015, 22:21:16

⏪ vorheriges - nächstes ⏩

accessy


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?

bahasu

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
Servus

accessy

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.

MaggieMay

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?
Freundliche Grüße
MaggieMay

accessy

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.


database

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

MaggieMay

#6
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.
Freundliche Grüße
MaggieMay

database

@MaggieMay

Zitatdas ist aber doch keine Antwort auf meinen Beitrag. Was ist falsch an meinem Vorschlag?
Falsch nix, nur umsetzen ...   

MaggieMay

#8
@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?!
Freundliche Grüße
MaggieMay

bahasu

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
Servus

database

@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  :(

MaggieMay

#11
@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).
Freundliche Grüße
MaggieMay

accessy

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.

DF6GL

Hallo,

wirf den ganzen diesbezüglichen Code weg und schreib in den Steuerelementinhalt des Feldes "gefiltert" dieses:

=Anzahl(*)

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

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.
Freundliche Grüße
MaggieMay