Neuigkeiten:

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

Mobiles Hauptmenü

qry nach genauer Zahl oder *

Begonnen von dolpho, Januar 10, 2024, 08:06:18

⏪ vorheriges - nächstes ⏩

dolpho

Hallo Access Gemeinde,
jetzt tüftel ich mal wieder an einem Problem, dem ich selbst nicht gewachsen bin :-( und bitte um Mithilfe.

In einem Endlosformular möchte ich alle Datensätze anzeigen oder oder nur die, die genau eine bestimmte Zahl enthalten.
In der Abfrage steht:
"Wie "*" & [Formulare]![frmBoxensuche]![XPal] & "*"

Die Tabelle enthält in dieser Spalte "PalID" nur Ziffern, Momentan von 1 bis 940

Möchte ich jetzt die Palette 1 haben, bekomme ich damit aber auch die Paletten 10, 11, 616, usw.

Kürze ich die Bedingung aber auf "[Formulare]![frmBoxensuche]![XPal]" und das Feld XPal ist leer, zeigt mir das Formular aber nur Fehler in Form von ###.

Wie kann ich das Problem lösen?

Gruß dolpho




ebs17

ZitatWie kann ich das Problem lösen?
Als erstes: Verstehen, was Du tust. Und nicht wundern, wenn das passiert, was Du programmierst.

Suche: Palette = 1 statt Palette LIKE "*1*"
Mit freundlichem Glück Auf!

Eberhard

dolpho

#2

Das ist mir schon klar; nur wenn ich das Formular öffne und in dem Suchfeld steht nichts drin, wird auch NICHTS angezeigt - und das ist mein Problem

ebs17

Mit freundlichem Glück Auf!

Eberhard

dolpho

Vielen Dank!

Das war die Lösung:

[Forms]![frmBoxensuche]![XPal] Oder [Forms]![frmBoxensuche]![XPal] Ist Null

Gruß dolpho

dolpho

Leider war das nur die halbe Lösung.
Beim Öffnen funktioniert der Befehl sauber und es ist alles in Ordnung.

Lösche ich aber die Suchfelder mit Me.XPal =""
dann bekomme ich wieder keine Datensätze und access quittiert mit
Laufzeitfehler 3021 Kein aktueller Datensatz


dolpho

lösche ich das Feld mit der [Del] Taste funktioniert es wieder.

Was muss ich denn in VBA eingeben, dass NICHTS drin steht?

MzKlMu

Hallo,
mit "" ist das Feld nicht leer, es steht ein Nullstring drin. Zum Leeren muss Null (nicht die Zahl 0) zugewiesen werden
Me.XPal = Null
Gruß Klaus

dolpho

#8
Klasse, jetzt hat es geklappt!

Danke!!!


Zitat entfernt. Bitte keine vollständigen Beiträge zitieren. MzKlMu

dolpho

Sorry, jetzt muss ich nochmal nachhaken:

Gleiche Situation, Formular mit Abfrage in das Formular.
Das Textfeld klappt super!
Was muss ich aber in einem Kombinationsfeld eintragen damit es mir die Abfrage "jungfräulich" also ohne Daten präsentiert?

Me.cboFeld = ""  und
Me.cboFeld = Null und
Me.cboFeld = "0" oder 0

funktioniert nicht, zumal es ein In einen Tabellenwert eingreift, der auch "0" enthalten kann.

Für eine Auskunft, die meinen Geist gerade rückt ;-) wäre ich sehr dankbar!

Gruß dolpho

PhilS

Zitat von: dolpho am Januar 20, 2024, 18:23:59Me.cboFeld = ""  und
Me.cboFeld = Null und
Me.cboFeld = "0" oder 0

funktioniert nicht, zumal es ein In einen Tabellenwert eingreift, der auch "0" enthalten kann.

Zu der Frage möchte ich auf deinen eigenen Kommentar verweisen:

Zitat von: dolpho am Januar 10, 2024, 09:50:08Das war die Lösung:
[Forms]![frmBoxensuche]![XPal] Oder [Forms]![frmBoxensuche]![XPal] Ist Null
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

Hallo dolpho,
ZitatWas muss ich aber in einem Kombinationsfeld eintragen damit es mir die Abfrage "jungfräulich" also ohne Daten präsentiert?
Me.cboFeld = Nullist schon richtig, nur bekommt das Formular bzw. die Datenbasis davon nichts
mit, musst du also erneut abrufen beim Ereignis "Nach Aktualisierung", -
Prozedur "cboFeld_AfterUpdate" mit
Me.RequeryOder du setzt einfach einen Filter, der immer False ergibt
Me.Filter = "0=1"
Me.FilterOn = True

grus 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)

dolpho

Hallo,

@PhilS das Zitat bezieht sich auf ein textfeld und dort funktioniert es super
jetzt will ich aber ein cbo leeren.

@ekkehard den Requery gibt es bei mir aber die Liste danach bleibt leer.
Es handelt sich um die Zeile, die ich mal rausgerückt habe habe und XSta ist eine combobox

setze ich aber deinen Filter ein, bekomme ich Laufzeitfehler bzw. kein Ergebnis

Private Sub cmdDel_Click()
                    Me.Filter = "1=0"
                    Me.FilterOn = True
Me.XBez = ""
Me.XBox = ""
Me.XCod = ""
Me.XDat = ""
Me.Xkrz = ""
Me.XNam = ""
Me.XPal = Null
Me.XSAP = ""
    Me.XSta = Null
Me.XStT = ""
Me.Requery
DoCmd.Close acForm, "frmListenBox"
End Sub

dolpho

Jetzt nochmal die Auflösung der Sache:

inzwischen ist der Fehler behoben, den ich scheinbar selbst verursacht hatte.
Zeitgleich stand im Formular der Code:

Private Sub Form_Load()
Me.XSta = 4
Me.Requery
End Sub

und im cboFeld XSta als Standardwert "4" eingetragen

und das hat wohl den Fehöer verursacht.

Nochmals danke! an alle