Neuigkeiten:

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

Mobiles Hauptmenü

FIltern mit InputBox Ergebnis

Begonnen von Caro_ne, Januar 13, 2023, 09:00:34

⏪ vorheriges - nächstes ⏩

Caro_ne

Guten Morgen,

ich habe schon eine Weile erfolglos nach einer Lösung für folgendes Problem gesucht: Über eine Schaltfläche möchte ich eine InputBox aufrufen. Mit dem was der Nutzer hier eingibt anschließend filtern. (Hier nach Auftragsnummern). Unten stehender Code funktioniert soweit, dass sich die InputBox öffnet, das Ergebnis des Filterns ist allerdings dann kein Datensatz. Was muss ich verändern, dass es klappt?

Private Sub Befehl149_Click()
Dim strAusgabe As String

strAusgabe = InputBox("Gewünschte Auftragsnummer eingeben")
  Me.Filter = "[Auftragsnummern] = strAusgabe"
            Me.FilterOn = True
           
End Sub

Ich bin dankbar für jede Hilfe,
Viele Grüße Caro
  •  

Josef P.

Hallo!

Tipp zur Fehlersuche:
Private Sub Befehl149_Click()
Dim strAusgabe As String
dim strFilter as String

  strAusgabe = InputBox("Gewünschte Auftragsnummer eingeben")
  strFilter = "[Auftragsnummern] = strAusgabe"
 
  Debug.Print strFilter
  Stop

  Me.Filter = strFilter
  Me.FilterOn = True
          
End Sub
Den fehlerhaften Teil habe ich übernommen.
Vielleicht findest du ihn selbst, wenn du die Ausgabe von Debug.Print im Direktbereich ansiehst. ;)

Gruß
Josef

Caro_ne

Hallo Josef,

danke für den Tipp zur Fehlersuche.:)  Ich dachte mir schon, dass es an dieser Zeile liegt. Weiß aber nicht wie ich es anders formulieren muss.   ???

Gruß
Caro
  •  

Josef P.

#3
Wenn du willst, versuchen wir einen AHA-Effekt zu erzeugen, wenn du selbst drauf kommst. Falls du lieber gleich das Ergebnis willst, einfach schreiben, dann zeige ich dir gleich den richtigen Code.

Wenn du das Ergebnis im Direktbreich angesehen hast, kam folgendes raus:
[Auftragsnummern] = strAusgabeEs steht der Name der Variable im String statt deren Inhalt.
=> Wie verknüpft man einen String mit einer Variablen?
Tipp: Stell dir vor,  "[Auftragsnummern] = " würde eine Konstante sein.

Gruß
Josef

Caro_ne

Ich glaube ich stehe total auf dem Schlauch. 😕
Danke für den Versuch, es wäre super du könntest mir sagen woran es liegt...
Ich hoffe es wird mir dann wenigstens klar 🙈
  •  

Josef P.

Vergleiche
strFilter = "[Auftragsnummern] = strAusgabe"
Debug.Print strFilter
mit
strFilter = "[Auftragsnummern] = " & strAusgabe
Debug.Print strFilter

Falls [Auftragsnummern] ein Text-Datenfeld ist, müssen noch ' dazu:
strFilter = "[Auftragsnummern] = '" & strAusgabe & "'"
Debug.Print strFilter

Zusatzinfo: wenn du so einen Filterstring für Textfelder zusammensetzt, musst du auch darauf achten, ob vielleicht ein ' im Inhalte der Variablen vorkommen würde. Dann wäre nämlich der Filterausdruch falsch.
Um das vorzubeugen, die eventuell vorhandenen ' in der Variable verdoppeln.
strFilter = "[Auftragsnummern] = '" & Replace(strAusgabe, "'", "''") & "'"
Debug.Print strFilter

Zum Nachlesen: https://wiki.access-codelib.net/SQL-Text_f%C3%BCr_Filterbedingung

BTW: warum heißt das Datenfeld eigentlich "Auftragsnummern"?
Stehen mehrere Nummern in einem Datenfeld?

Gruß
Josef

Caro_ne

Vielen lieben Dank. Auch für die ausführliche Erklärung und die Mühe!
Ich werde es nochmal in Ruhe nachlesen. :-)

Nein im Datenfeld steht nur eine Nummer, das war ein Benennungsfehler von mir und vermutlich etwas verwirrend.

Schönes Wochenende,
Gruß Caro
  •  

Josef P.

Kleiner Zusatz: teste den Code, wenn du bei der Inputbox auf abbrechen klickst oder keinen Wert eingibst. => eventuell Prüfung auf len(strAusgabe) > 0  ergänzen.

Schönes Wochenende!
Josef

Beaker s.a.

Hallo Caro,
Wie du an Josefs letztem Post erkennen kannst, ist die Inputbox ein
schlechtes Werkzeug. Besser ist ein ungebundenes Textfeld auf dem
Form zum Finden einer Auftragsnummer. Da kannst du sogar auf den
extra Button verzichten, weil du direkt nach der Eingabebestätigung
deinen Filter setzen kannst
Private DasNeueFeld_AfterUpdate()
    Me.Filter = "AuftragsNummer = " & Me.DasNeueFeld
    Me.FilterOn =True
End Sub

gruss ekkehard


P.S.: Weil du das immer wieder brauchst, lies mal dies.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
  •  

MzKlMu

Hallo,
ich würde mir die vorhanden Auftragsnummern (aus der Tabelle mit den Aufträgen) in einem ungebunden Kombifeld anzeigen, das man dann auch zum Filtern nutzt.
Das Kombifeld hat die Eigenschaft "Automatisch ergänzen" und man ist mit wenigen Zeichen die man eingibt bei der gesuchten Auftragsnummer. Mit einem Klick kann man dann filtern. Bei der Inputbox und dem Textfeld muss immer die vollständige Auftragsnummer eingegeben werden.
Wenn die Auftragsnummer eine Zahl ist, kann auch mit dem Kombi der Codevorschlag von Ekkehard in #8 verwendet werden. Bei Text sind noch Hochkommas zu verwenden.
Gruß
Klaus
  •  

Caro_ne

Danke euch für den ganzen Input! :-)

Schöne Woche allen.
  •