Office: (Office 365) Schneller Suchen und Filtern

Helfe beim Thema Schneller Suchen und Filtern in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Abend Ich habe eine Rezeptdatenbank, mit der ich auch im Prinzip zufrieden bin. Sie hat allerdings einen Haken, was das Suchen/Filtern betrifft.... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Köbi, 16. Oktober 2024.

  1. Köbi
    Köbi User

    Schneller Suchen und Filtern


    Guten Abend
    Ich habe eine Rezeptdatenbank, mit der ich auch im Prinzip zufrieden bin.
    Sie hat allerdings einen Haken, was das Suchen/Filtern betrifft. Diese Geschichte ist in meiner DB zu langsam.
    Anstatt jetzt hier einen ellenlangen Code zu posten, lade ich die Datei einfach mal hoch.
    Die Funktion, welche filtern soll, heisst Private Function ListFill(), zu finden und angewendet im Formular frmSuchen.

    Meine Frage, hat jemand eine Idee, wie man diese Suche beschleunigen kann?

    Schon jetzt mal vielen Dank für Antworten.
     
  2. Doming
    Doming hat Ahnung
    Hallo Köbi,
    wau, da muss man sich erstmal reindenken.
    Was mir beim ersten Reinblicken auffällt:
    If Len(Nz(sSQLKategorie, "")) <> 0 Then
    geht auch als
    If Nz(sSQLKategorie, "") <> "" Then
    und
    Code:
    'Kriterienanzeige in die richtige Reihenfolge bringen...
     
        If strSQL1 = "" Then
            If sSQL1 = "" Then
                strSQL1 = strSQL2
            Else
                If strSQL2 = "" Then
                    strSQL1 = sSQL1
                Else
                    strSQL1 = sSQL1 & vbCrLf & vbCrLf & "UND " & strSQL2
                End If
            End If
     
        Else
            If sSQL1 = "" Then
                If strSQL2 = "" Then
                    strSQL1 = strSQL1
                Else
                    strSQL1 = strSQL1 & vbCrLf & vbCrLf & "UND " & strSQL2
                End If
            Else
                If strSQL2 = "" Then
                    strSQL1 = strSQL1 & vbCrLf & vbCrLf & "UND " & sSQL1
                Else
                    strSQL1 = strSQL1 & vbCrLf & vbCrLf & "UND " & sSQL1 & vbCrLf & vbCrLf & "UND " & strSQL2
                End If
            End If
         
        End If
    Was sollen die vielen vbCrLf da drin?
    Hast Du Dir den fertigen String mal ausgeben lassen (Debug.Print)? Ich könnte mir vorstellen, dass das fehlende Leerzeichen vor "UND " zu Problemen führen könnte.

    Für die eigene Analyse: Füge unter jeder Zeile ein debug.print Now ein, am besten mit einer Zahl davor (debug.print "1",now), dann kannst Du im Direktfenster sehen, wo am meisten Zeit draufgeht.

    Gruß
    Doming
     
    Zuletzt bearbeitet: 16. Oktober 2024
  3. Doming
    Doming hat Ahnung
    Code:
    Dim vartxtArray                 As Variant
    Dim strSQL1, sRezept1, sSQL1    As String
    Dim strSQL2, sZutat1            As String
    Das funktioniert vermutlich nicht wie von Dir gedacht. So sind strSQL1, sRezept und strSQL2 als Variant deklariert
    Wenn es so sein soll, wie Du es wahrscheinlich geplant hast, müsste es heißen
    Code:
    Dim vartxtArray                 As Variant
    Dim strSQL1 As String, sRezept1 As String, sSQL1    As String
    Dim strSQL2 As String, sZutat1            As String
     
  4. Köbi
    Köbi User

    Schneller Suchen und Filtern

    Hallo Doming
    Vielen Dank für deine Antwort. Ich werde deine Anregungen mal umsetzen, kann aber ein paar Tage dauern. Bin jetzt nämlich unterwegs.
     
  5. andyfau
    andyfau Erfahrener User
    Hallo Köbi,
    ich kenne Deine Rezeptdatenbank ja in einer früheren Version. Die Suchfunktion ist ja eine tolle Lehrstunde für Stringfunktionen und geschachtelte If Then Else Strukturen. Aber bekanntlich sind Stringoperationen gerade in Basic ein ziemlicher Hemmschuh, Stichwort Garbage Collection.
    Hast Du es vielleicht mal mit der eingebauten Filterfunktion von Access versucht?

    Da kannst Du ja die Textfragmente der Suchfelder als einen String übernehmen, wobei der Nutzer einfach nur Wörter oder Teile von Wörtern durch Blank voneinander eingeben kann. Ohne Sternchen oder anderer Sondergeschichten, die man später zur Trennung braucht, beachten zu müssen.
    Dann ersetzt Du die Leerzeichen durch Sternchen.
    Diesen Suchstring kannst Du dann 1 zu 1 für die Filterfunktion auf die Abfrage nutzen.

    Ein Beispiel eines etwas komplexeren Filters über mehrere (Datums)Felder eine Formulars:
    Code:
    Me.FilterOn = False
           Me.Filter = "angemeldet_am > #1900/01/01# And VeranstDatum >= #" & Format(Me.Datvon, "yyyy-mm-dd") & "#  And VeranstDatum <= #" & Format(Me.Datbis, "yyyy-mm-dd") & "#"
           Me.FilterOn = True
           
     
    andyfau, 16. Oktober 2024
    #5
  6. Köbi
    Köbi User
    Hallo Andreas
    Auch dir herzlichen Dank für den Input. Ich erinnere mich, dass du meine DB aus dem MOF kennst. Gegenüber der damaligen Version hat es kleine Ergänzungen gegeben.
    1. Ein Rezept kann auch als WORD-Dokument ausgegeben werden.
    2. Es gibt die Möglichkeit ein Rezept zu duplizieren.Hilfreich, wenn man von einem Rezept verschiedene Varianten führen will.
    3. Die Rezeptsuche im Kombifeld kann nach einem Textfragment eingeschränkt werden. Siehe Anhang.

    Wie schon erwähnt, wird es eine Weile dauern, bis ich alle Inputs getestet und verarbeitet habe.
     
  7. andyfau
    andyfau Erfahrener User
    Ja, das ist die Autofillfunktion, die aber immer vom Anfang des eingegeben Strings ausgeht, wo hingegen der Asterisk (*) ja mehrere Zeichen überprüft, egal ob eins oder mehrere. Das Fragezeichen als Joker ersetzt nur ein Zeichen am Platz. Aber das kennst Du ja sicher.

    Kann ich die Altdaten aus meiner Version einfach in die aktuellen Tabellen übernehmen? Oder sind da noch Felder hinzu gekommen oder haben sich die Tabellen anderweitig verändert?
     
    andyfau, 16. Oktober 2024
    #7
  8. Köbi
    Köbi User

    Schneller Suchen und Filtern

    Das ist nun mein Fehler, dass ich keine Versions-History führe. Aber soviel ich weiss, haben sich die Tabellen nicht geändert. Ich kann mir auch nicht vorstellen weshalb.
    Bitte probiere es doch aus, aber vorerst nur mit einer Kopie deiner Version. Indem du meine Tabellen löschst und über "Externe Daten", "Neue Datenquelle" deine Daten importierst. Aber das kennst du doch sicher.
     
  9. andyfau
    andyfau Erfahrener User
    Einfach Tabellen löschen geht nicht, dann sind auch die Beziehungen etc. weg. Aber ich habe jetzt Deine Daten drin gelassen und einfach meine zusätzlichen Daten per Import geholt, wobei die Reihenfolge wegen der ref.Integrität eingehalten werden muss weil es sonst jede Menge Einfügefehler gibt.
    Ok, Danke. Aber der Faden geht ja um ein anderes Problem.
     
    andyfau, 16. Oktober 2024
    #9
  10. Köbi
    Köbi User
    Hallo Andreas
    Das funktioniert schon, aber man muss es anders angehen.
    Die Tabellen aus der anderen Datenbank importieren. Dann sieht es so aus wie in der Anlage. Die importierten Tabellen haben eine 1 am Schluss, Beispiel tblEinheiten1. Nun die tblEinheiten löschen (Warnmeldungen ignorieren) und die tblEinheiten1 in tblEinheiten umbenennen. Und so weiter bei allen Tabellen. Damit bleiben die Beziehungen der Tabellen erhalten.
     
    1 Person gefällt das.
  11. andyfau
    andyfau Erfahrener User
    Du hast recht. Hätte man wissen können.Schneller Suchen und Filtern *:)*
     
  12. Köbi
    Köbi User
    Hallo doming und Andreas
    Ich bin wieder da. Habe mich mit euren Inputs beschäftigt. Dabei bin ich nicht weiter gekommen.
    Aber ich habe gemerkt, dass die Verzögerung beim Unterformular "frmSuchenUF" liegt, besser gesagt bei dessen Datensatzquelle "qrySuchenUF". In dieser Abfrage wird zweimal die Funktion "fncGetDataFromRS" verwendet (aus dem Modul "mdl_fldWerteInString").
    Diese Funktion gibt den Inhalt eines definierten Feldes aus einem Recordset als
    Variable zurück. Die einzelnen Werte werden durch einen Separator
    getrennt, der in einem Parameter übergeben wird.
    Dass dies ein wenig Zeit braucht, scheint mir logisch.
    Diese dienen dazu, das Filterergebnis lesbar dazustellen. Siehe Anhang.
    Herzlichen Dank für euer Interesse.
     
    1 Person gefällt das.
Thema:

Schneller Suchen und Filtern

Die Seite wird geladen...
  1. Schneller Suchen und Filtern - Similar Threads - Schneller Filtern

  2. Vorlage zum schnellen erstellen von Übersichten

    in Microsoft PowerPoint Hilfe
    Vorlage zum schnellen erstellen von Übersichten: Moin, und zwar folgendes: Ich frage mich ob es eine Funktion gibt, mit der man z.B. einfach ein oder 2 Textfelder anordnet und die irgendwie da speichert und man dann einfach dadrunter ein "+"...
  3. PRODUKT sprengt schnell Excel-Zahlenraum. Abhilfe!

    in Microsoft Excel Tutorials
    PRODUKT sprengt schnell Excel-Zahlenraum. Abhilfe!: 1 2 3 4 5 seien als Zahlen gegeben. =PRODUKT(A1:A5) = 120 =GEOMITTEL(A1:A5) = 2,60517108 (oder mit anderen Worten: Es liegt immer zwischen MIN und MAX, wie jedes Mittel) Und nun kommts:...
  4. Arbeitsmappe per Button schnell sperren

    in Microsoft Excel Hilfe
    Arbeitsmappe per Button schnell sperren: Hallo, Ich habe die Excel-Tabelle mit den Lieferantenpreise erstellt, mit einem Datenschnitt hat man schnellen Zugriff auf die Lieferanten und geht soweit auch ganz gut. Jetzt möchte ich...
  5. Schnellere Lösung als Index Vergleich gesucht um aus Zeileninfos Matrix zu bilden

    in Microsoft Excel Hilfe
    Schnellere Lösung als Index Vergleich gesucht um aus Zeileninfos Matrix zu bilden: Hallo ich habe folgenden Sachverhalt: Personaldaten und Veränderungen in Gehältern werden im Sheet 'Liste' in Listenform erfasst. Für jede Gehaltsänderung bekommt der jeweilige MA eine neue Zeile...
  6. Schnelleres Erstellen erfolgreicher RFPs

    in Microsoft Teams Tutorials
    Schnelleres Erstellen erfolgreicher RFPs: Schnelleres Erstellen erfolgreicher RFPs Microsoft Teams MyAnalytics Office Business Mehr... Weniger...
  7. Bieten Sie schnelle Lösungen für Patientenfragen

    in Microsoft Outlook Tutorials
    Bieten Sie schnelle Lösungen für Patientenfragen: Bieten Sie schnelle Lösungen für Patientenfragen Outlook 2019 SharePoint in Microsoft 365 Outlook 2016 Microsoft Teams Mehr... Weniger...
  8. VBA Auswahl wird schnell wieder ausgeblendet

    in Microsoft Access Hilfe
    VBA Auswahl wird schnell wieder ausgeblendet: Guten Tag Seit kurzen wird beim Eingeben von VBA die möglichen Vorgaben nur noch kurz eingeblendet. Gehen dann aber sofort wieder weg. Wenn ich z.B. -> "me." eingeben, dann kommt üblicherweise...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden