Neuigkeiten:

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

Mobiles Hauptmenü

Recordset Filter abbrechen bei rst.noMatch

Begonnen von Frank77, Dezember 23, 2011, 14:38:18

⏪ vorheriges - nächstes ⏩

Frank77

Hallo !

Ich hätte da eine Frage  zum Recordset Filtern

Mit der folgenden Prozedur übergebe ich ein Filter Kriterium per Inputbox
Und suche alle Einträge die das Kriterium egal an welcher Position beinhalten
Das klappt auch ganz gut   
Das Problem an der Sache ist nur wenn ein Kriterium keinen Treffer ergibt bekomme ich ein
Fehlermeldung  an der Stelle     Me.IstArtikel.ListIndex = 0   
Nun habe ich versucht ein   If rst.noMatch  = True Then   nach dem End With einzubauen
Aber leider ohne Erfolg den es wird immer übergangen  auch wenn ich ein  rst.RecordCount = 0
Versuche

Bin für jeden tipp Dankbar

Schöne Weihnachten und besinnliche Feiertage  Gruß Frank

Private Sub CmdArtIDSuchen_Click()
   
    Dim strEingabe As String
    strEingabe = InputBox("Geben Sie einen Teil der gesuchten Art.-ID ein ...", _
                          "Gesamtsuche nach Art.-ID")
    If strEingabe = "" Then Exit Sub
    If strEingabe <> 0 Then ArtikelIntNrFilter strEingabe

End Sub



Sub ArtikelIntNrFilter(strArtikelIntNr As String)

    Dim db As Database
    Dim rst As Recordset
    Dim rstArtikelIntNr As Recordset

    Set db = CurrentDb()
    Set rst = db.OpenRecordset("TblArtikel", dbOpenDynaset)

    rst.filter = "ArtID LIKE '*" & strArtikelIntNr & "*'"

    Set rstArtikelIntNr = rst.OpenRecordset

    With rstArtikelIntNr
        Do Until .EOF
            Debug.Print !ArtID
            Debug.Print !ArtLiefIDRef
            Debug.Print !ArtLifArtNr
            Debug.Print !ArtName
            Debug.Print !ArtVPEinheit
            Debug.Print !ArtEinheitenIDRef
            Debug.Print !ArtPreisstaffelung
            Debug.Print !ArtStaffelungPreisIDRef
            Debug.Print !ArtKatIDRef
            Debug.Print !ArtUntKatIDRef
            Debug.Print !ArtNetto
            Debug.Print !ArtMwstIDRef
            Debug.Print !ArtMWSTBetrag
            Debug.Print !ArtBrutto
            Debug.Print !ArtNettoPreisKg
            Debug.Print !ArtVPENettoPreis
            Debug.Print !ArtBild
            Debug.Print !ArtWGruppeIDRef
            .MoveNext
        Loop

    End With

    Set Me!IstArtikel.Recordset = rstArtikelIntNr
    rst.Close
    Me.IstArtikel.SetFocus
    Me.IstArtikel.ListIndex = 0
    Set rst = Nothing
    Exit Sub

Fehler:
    MsgBox Err.Number & " " & Err.Description

End Sub

Selbstständig = Selbst und Ständig

DF6GL

HAllo,

Nomatch bezieht sich auf die Findfirst-Methode..


so sollte das aber gehen:
.
.

    Set rstArtikelIntNr = rst.OpenRecordset   
If rstArtikelIntNr.RecordCount >0  then
With rstArtikelIntNr
.
.
.
.


End If

rstArtikelIntNr.Close
Set rstArtikelIntNr =Nothing
Exit Sub
.
.
.




Warum füllst Du aber so umständlich ein Listenfeld?




Frohe Weihnachten..
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

Beaker s.a.

Hallo Frank,

ZitatSet Me!IstArtikel.Recordset = rstArtikelIntNr

Wenn das ein Listenfeld ist, müsstest Du hier auch eine Fehlermeldung bekommen.

Me!IstArtikel.RowSource = rstArtikelIntNr

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

Frank77

#3
Danke für die antworten !

So geht's jetzt danke !!!

Sub ArtikelIntNrFilter(strArtikelIntNr As String)

   Dim db As Database
   Dim rst As Recordset
   Dim rstArtikelIntNr As Recordset

   Set db = CurrentDb()
   Set rst = db.OpenRecordset("TblArtikel", dbOpenDynaset)

   rst.filter = "ArtID LIKE '*" & strArtikelIntNr & "*'"

   Set rstArtikelIntNr = rst.OpenRecordset
   If rstArtikelIntNr.RecordCount > 0 Then
       With rstArtikelIntNr
           Do Until .EOF
               Debug.Print !ArtID
               Debug.Print !ArtLiefIDRef
               Debug.Print !ArtLifArtNr
               Debug.Print !ArtName
               Debug.Print !ArtVPEinheit
               Debug.Print !ArtEinheitenIDRef
               Debug.Print !ArtPreisstaffelung
               Debug.Print !ArtStaffelungPreisIDRef
               Debug.Print !ArtKatIDRef
               Debug.Print !ArtUntKatIDRef
               Debug.Print !ArtNetto
               Debug.Print !ArtMwstIDRef
               Debug.Print !ArtMWSTBetrag
               Debug.Print !ArtBrutto
               Debug.Print !ArtNettoPreisKg
               Debug.Print !ArtVPENettoPreis
               Debug.Print !ArtBild
               Debug.Print !ArtWGruppeIDRef
               .MoveNext
           Loop

       End With
       Me!IstArtikel.RowSource = rstArtikelIntNr
       rst.Close
       Me.IstArtikel.SetFocus
       Me.IstArtikel.ListIndex = 0
       Set rst = Nothing
       Exit Sub
   End If

   rstArtikelIntNr.Close
   Set rstArtikelIntNr = Nothing
   MsgBox "Es wurden keine Passenden Artikel gefunden !", vbInformation Or vbOKOnly, "Kein Treffer !"
   Exit Sub

Fehler:
   MsgBox Err.Number & " " & Err.Description

End Sub


Eine Fehlermeldung habe ich nicht bekommen, das Listenfeld wurde einfach leer da ja keine Daten vorhanden sind  
Der Fehler trat erst dann auf wo der erste Eintrag ausgewählt erden soll

Das mit dem Befüllen des Listenfeldes hat sich halt so ergeben
Das Formular habe ich in 2 Teilen mit einem PageBreak erstellt es ist nicht gebunden
Bleibe teile sind unterschiedlich gespeist
Da hab ich die tausend Filter die ich da eingebaut habe halt mal so gemacht

Der Button hinter den der jetzt steht ist die Beschriftung des Feldes Interne Art.-Nr.
Hab hier mal 2 Bilder

Danke für die Hilfe Frank  

Frohe Weihnacht an alle !




Selbstständig = Selbst und Ständig