Oscars Listview-Datenbank v3 - mit Suche nach mehreren Begriffen

  • Hallo,


    auf meiner Suche nach einen Datenbanklösung im Thread

    Ideen gesucht – Baum – Stamm – Blatt

    wo es um eine Ideensammlung geht, habe ich


    Oscars Listview-Datenbank v3

    Listview-Datenbank v3

    aus dem Jahr 2017 gefunden.


    Wird das Programm noch weiter entwickelt?


    Hat jemand von Euch die +und / -nicht Suche bereits in Oscars Script implementieren können?


    Was kann ich an welcher Stelle in Oscars Skript ändern, so dass nach mehreren - durch Leerzeichen getrennten - Suchbegriffen gefiltert wird?

    Beispiel für 4, durch Leerzeichen getrennte, Suchebegriffe, die so im Suchfeld eingegeben werden sollen:

    Abel 312 46687 19.01.2017


    Noch besser wäre eine +und / -nicht Suche

    Beispiel

    +Abel +312 +46687 +19.01.2017 -Reh

    An welcher Stelle und wie kann diese in Oscars "Listview-Datenbank v3" integriert werden?


    Wie kann ich in der gefilterten (grün unterlegten) Ansicht den aktuell ausgewählten Datensatz in die Zwischenablage legen, nachdem er mit strg + Doppelklick ausgewählt wurde?

    ClipPut ( ??? )


    PS: ich lese mich in die von water angeregte Datenbank ein (edit: Oscars Script ist für meine Zwecke besser) und schaue mir dann weiter Oscars Script an. Das enthält viel Stoff.


    Edit:

    bisher gelöst

    automatisches Laden der Datenbank beim Start des Programmes

    umschalten auf gefilterte Suche, ohne "shift" zu drücken

    Icons geändert - shell.dll - Total Commander View - dank Beitrag - Icons in shell32.dll

  • Wie kombiniere ich mehrere Suchbegriffe?


    Text

    Der Hund hat die Katzen in das Waldgrundstück gejagt.

    Die zwei Katzen sind in den Wald gelaufen.


    Suchbegriffe (Hinweis: Die Reihenfolge der Suchbegriffe ist in der Praxis beliebig austauschbar.)

    Hund Katze Wald


    Ergebnis

    Der Hund hat die Katzen in das Waldgrundstück gejagt.


    Was ist besser geeignet? StringRegExp oder _ArraySearch?


    Wie verknüpfe ich bei StringRegExp und _ArraySearch mehrere Suchbegriffe in einer Befehlszeile?


    Edit

    Gedanke zu StringRegExp - da die Worte in der Reihenfolge wechseln können, scheidet StringRegExp wohl aus für eine UND-Suche.


    Bleiben

    _ArraySearch

    StringInString

  • Gedanke zu StringRegExp - da die Worte in der Reihenfolge wechseln können, scheidet StringRegExp wohl aus für eine UND-Suche.

    Bei einer UND Suche ist die Reihenfolge völlig schnuppe:


  • Bei einer UND Suche ist die Reihenfolge völlig schnuppe:

    Ich glaub du hastn Brett vorm Kopf. Der Sinn RegEx zu nutzen ist es ja das ganze eleganter auszudrücken und abzukürzen.

    Bei 'Oder' hätte man einfach (Hund|Katze|Wald) nehmen können, aber wenn alle drei vorkommen sollen können diese die Reihenfolge wechseln.


    Da kann man auch gänzlich auf StringRegExp verzichten und StringInStr nehmen, das macht mMn. den Code lesbarer, da er sowieso auf drei Funktionen aufgesplittet wird.

    Natürlich gibt es Pattern um die Reihenfolge zu berücksichtigen, aber ich finde die beste Lösung ist es StringInStr zu nehmen, und es dreifach in eine If-Verzweigung zu packen.


    Jajaja, ich hörs ja schon... Es nimmt sich funktional fast nichts wenn man StringInStr "Hund" oder StringRegExp "Hund" verwendet, aber StringInStr passt besser.

  • Ich glaub du hastn Brett vorm Kopf. Der Sinn RegEx zu nutzen ist es ja das ganze eleganter auszudrücken und abzukürzen.

    Und ich glaub, du bist auf Krawall gebürstet. :P

    Ich bin nur darauf eingegangen, dass eine UND-Verknüfung sehr wohl mit RegExp möglich ist (es war nicht die Rede davon, dass das im Pattern passieren muss). Ob das sinnvoll ist, stand gar nicht zur Debatte. Das muss eh jeder für sich selbst einordnen.


    Wirklich "sinnvoll" ist weder RegExp noch StringInStr. Wie schon in dem Thread, auf dem dieser basiert, besprochen, sollte man das mit SQLite lösen. Elegant, geschmeidig und sauschnell auch bei zigtausend Einträgen. :thumbup:

  • SQLite

    Ich habe mir Dein sehr interessantes Beispiel zu SQLite angesehen. Das ist ein weiter Weg bis dahin, mit 0 Erfahrungen in SQLite und der AutoItObject_X64.dll von der englischen AutoIt Seite - etwas für lange Winterabende.


    Gelingt es Dir BugFix mit annehmbarem Aufwand, in Oscars Listview Datenbank Dein SQLite Beispiel aus dem folgendem Thread zu integrieren?

    Datenbank Filtern mit Objekt

    Die UND Suche funktioniert damit 1a.


    Wenn es zu schwer ist, bohre ich mit Euch lieber Oscars Script auf und mache mit Euch aus einer einfachen Suche eine +UND / -NICHT Suche.


    Würdet Ihr einen Blick ins Oscars Script werfen, an welcher Stelle genau geschraubt werden muss? Ich habe mich dort festgefahren.

  • Eine umfangreiche Suche (mit mehreren Suchwörtern) würde ich auch lieber in SQLite ausführen. Das ist mit AutoIt-Mitteln nicht sehr schnell. Besonders bei umfangreichen Datensätzen.

    Verschwende nicht die Zeit mit dem "aufbohren" meines Scripts, sondern benutze für die Verwaltung SQLite. Damit lassen sich sehr universelle Suchmuster erstellen.

  • Ich lass mal ein paar Gedanken los.

    - Du möchtest die Möglichkeit haben die Suchbegriffe ohne fixe Reihenfolge einzugeben.

    - Die Bedienung soll per Mausklick erfolgen.


    Das kann man mit SQLite-DB lösen, ist aber auch noch nicht optimal an diese Situation angepasst (Schwachstelle: ungewisse Reihenfolge der Suchbegriffe).

    Was ist für eine optimale Lösung erforderlich?

    - Eingabe irgendeines Begriffes aus der Suchkette sollte sowohl abwärts (Children) als aufwärts (Parent) rekursiv verfügbare Begriff(ketten) auflisten

    - Durch diese Begriffe kann man sich dann zum Ziel durchklicken bzw. wenn ein Eintrag fehlt, diesen neu erfassen.

    - Begriffe sollten also mit entsprechenden Verweisen (auf/abwärts) gespeichert sein


    Die Aufgabe lautet also: Welche Datenbank(struktur) ermöglicht dieses schwarmartige Speichern. Hier würde ich Ansetzen und das wäre doch auch mal eine interessante Aufgabe, sowas in AutoIt umzusetzen.

    Ich habe keine Ahnung, ob und wie das umzusetzen geht. - Sind halt nur Gedanken.

  • Hallo Banana_2_Day

    Es genügt, dass du dir ein Trennzeichen überlegst (im Zweifel eben das Leerzeichen), den "gesamten Suchbegriff" danach trennst und in der Gesamtliste nach dem ersten Begriff suchst und dann in Schleife in den jeweils übrigbleibenden Trefferlisten nach den weiteren Begriffen suchst. Also einfach die Suche in eine solche Schleife packen.

  • Eine umfangreiche Suche (mit mehreren Suchwörtern) würde ich auch lieber in SQLite ausführen. Das ist mit AutoIt-Mitteln nicht sehr schnell.

    Die Suche kann langsam sein.Es wird über den Tag verteilt ca. 20x jeweils eine Suche sein, um die Verknüpfung zu erhalten.


    Die Daten bestehen lediglich aus

    Stichworten ( mehrere Stichworte durch ein Leerzeichen getrennt )

    und eine Verknüpfung ( Pfad, URL etc. )


    Beispiel:

    "Oscars Listview-Datenbank v3 - mit Suche nach mehreren Begriffen" ; "h t t p s://autoit.de/thread/86654-oscars-listview-datenbank-v3-mit-suche-nach-mehreren-begriffen/"


    Die Suche ist beschränkt auf die Stichworte. Es wird also nur gesucht in der Zeichenkette

    "Oscars Listview-Datenbank v3 - mit Suche nach mehreren Begriffen"

    ...


    Sagst Du mir bitte, wo genau ich in Deinem Skript ansetzen muss, um die Suche von einem Suchparameter in mehrere Suchparameter zu ändern?

    Dann würde ich das gerne versuchen.


    Und vielleicht hast Du auf die zweite Frage eine Antwort:

    Wie kann ich in der gefilterten (grün unterlegten) Ansicht in Deiner Datenbank den aktuell ausgewählten Datensatz in die Zwischenablage legen, nachdem er mit strg + Doppelklick ausgewählt wurde?

    ClipPut ( ??? )



    Alle anderen Varianten sind für den Winter eine gute Idee, im Moment würde ich gerne auf Deine funktionierende Datenbank zurückgreifen.

    Es fehlt nur die Filterung nach mehreren Worten.


    Welche Datenbank(struktur) ermöglicht dieses schwarmartige Speichern

    Vielleicht ist es hilfreich zu erwähnen, dass die zu durchsuchenden Daten jeweils ein Datensatz = eine Zeile sind.


    Und es muss somit nur das Vorkommen alle Suchbegriffe in dem ein Datensatz über zum Beispiel StringInString sichergestellt sein. Sehe ich das richtig?



    Trennzeichen überlegst (im Zweifel eben das Leerzeichen)

    So habe ich mir das auch gedacht. Im Moment finde ich in Oscars Datenbank nicht die richtige Stelle, um das zu versuchen.


    Die Idee, die SQLite von bugfix mit der Datenbank (Oberfläche) von Oskar zu mischen gebe ich erst mal auf, dazu fehlen mir die Kenntnisse und es scheint komplizierter zu sein, ansonsten hätte bugfix bestimmt eine Variante veröffentlicht.

  • Hallo Banana_2_Day


    Einerseits finde ich einen Wechsel zu SQLite überhaupt nicht kompliziert und halte das definitiv für eine Alternative.

    Andererseits hängt das auch von deinen Inhalten ab. Irgendwo hatte ich gelesen, um was es geht. Jetzt finde ich es aber nicht. Jedenfalls sah das nicht nach großen Datenmengen aus. Wenn das der Fall ist, geht es sicher auch flott ohne SQLite.

    Deine Frage nach der Skriptstelle lässt mich etwas ratlos zurück. Das ist schon ein Schlag in Oscars Gesicht, weil er sich hier richtig Mühe mit der Kommentierung gegeben hat. Hast du überhaupt danach gesucht?$iStart = _GUICtrlListView_FindInText($idListView, $sSearch, $iStart, False) ; Suche im Listview

  • Andererseits hängt das auch von deinen Inhalten ab.

    Danke für Deine Zeile. Die Stelle habe ich gesehen.

    $iStart = _GUICtrlListView_FindInText($idListView, $sSearch, $iStart, False)


    In Oscars Beitrag stand was von Verwendung von Arrays - daher bin ich davon ausgegangen, dass das über _ArraySearch laufen müsse.

    Das verwirrt mich jetzt noch mehr.


    Oscar schreibt in Post 1 zu seiner Datenbank:

    "alle Daten werden in ein Array geladen, eingegeben, sortiert, dort gesucht und von dort gespeichert."

    Listview-Datenbank v3


    _GUICtrlListView_FindInText ist doch kein Suchbefehl für ein Array.


    ... ratlos ...


    Im Beitrag über Deinem schrieb ich, wie mein Datensatz typisch aussieht - 2 Einträge pro Zeile:


    Beispiel:

    "Oscars Listview-Datenbank v3 - mit Suche nach mehreren Begriffen" ; "h t t p s://autoit.de/thread/86654-oscars-listview-datenbank-v3-mit-suche-nach-mehreren-begriffen/"


    Ich habe mich bei der Suche in Oscars Script festgefahren. Gestern und heute mehrere Stellen getestet. Die meisten offenen Sachen konnte ich ändern, bis auf 2 - UND-Suche und Strg + Mausklick auf ein Element mit Kopie in Zwischenablage.

  • Nun, ich hatte das Skript von Oscar mal heruntergeladen und darin nach "find" gesucht und das gefunden.

    Kann sein, dass in einer neueren Version umgestellt wurde. Hast du denn gesucht und etwas gefunden?


    Ist nicht böse gemeint. Aber es gibt hier auch Bereiche, in denen man die Erstellung eines Skripts erfragen kann - mit oder ohne Gegenleistung.
    Kann es sein, dass du dort besser aufgehoben bist?

  • Kann sein, dass in einer neueren Version umgestellt wurde.

    Ich nehme es positiv auf und freue mich über jede Hilfe. Gibt viel zu lernen. Das Script habe ich - soweit meine Kenntnisse reichen - Zeile für Zeile gelesen, wenn auch nicht komplett verstanden.


    autoiter , vielleicht kannst Du die andere Frage beantworten, wie in einem Listview eine Zeile mit strg + Mausklick in die Zwischenablage gelegt werden kann. Weißt Du das?


    Unter dem Link "Oscars Datenbank" ist die letzte Version veröffentlicht, die ich auch nutze.


    Daher hoffte ich, dass Oscar schreibt, an welcher Stelle die Arraysuche in seinem Script maßgeblich greift und wo man ggf. mit AND mehrere Parameter integrieren kann.


    Aber es gibt hier auch Bereiche, in denen man die Erstellung eines Skripts erfragen kann - mit oder ohne Gegenleistung.

    Das wäre einen Versuch wert.


    Vielleicht ist dort jemand, der die Zeilen von Oscar (Oberfläche) und Bugfix (SQLite) vereinen kann. Das wäre es :-)

  • Ich würde das machen, aber momentan befinde ich mich im Urlaub auf Helgoland (noch bis Sonntag).

    Also frühestens Montag. Vorher würde ich das nicht schaffen.

    Es wäre aber in jedem Fall hilfreich, wenn Du uns mal einige (Beispiel-)Datensätze zur Verfügung stellst.

    Möglichst als Datei (Txt-Format reicht).

    Außerdem wie die Daten dann im Listview stehen sollen (Anzahl der Spalten) und nach was Du dann suchen willst.