SQL-Abfrage mit Vorschlägen bei der Variablen-Eingabe

  • Hallo liebe Community,

    mal wieder habe ich ein Problem... Diesmal würde ich mich gern an die SQL-Experten unter euch wenden:

    Ich arbeite momentan an einem Projekt, bei dem ich über ein AutoIt-Script anhand von SQL-Statements auf verschiedene Tabellen einer Datenbank zugreife. Hierbei können verschiedene externe SQL-Statements (.sql-Dateien) über eine Benutzeroberfläche ausgewählt, geladen und das Ergebnis dann in eine Excel-Datei exportiert werden. Einige der Statements haben auch Variablen (um Einträge zu filtern). Diese habe ich zwischenzeitlich folgendermaßen unter Kontrolle gebracht (für AutoIt-Script):

    SQL
    select lastname as Nachname, 
    fistname as Vorname, 
    age as Alter, 
    habitation as Wohnort 
    from Tabelle 
    where lastname = '\&textNachname=[INPUT]\&text'


    Die Abfrage der Variablen taucht dann im AutoIt-Script nach Auswählen der SQL-Abfrage auf und wird dann weiter verarbteitet.

    Nun habe ich ein SQL-Statement, bei dem eine Variable vorhanden ist, wo bei ihrer Abfrage automatisch passende Vorschläge gemacht werden. Die Variable lädt alle existierenden Einträge der zur Variablen gehörenden Spalte und zeigt dann beim Eingeben entsprechend dem eingebenen Text Vorschläge an. Das ganze funktioniert mit folgendem SQL-Statement (noch nicht AutoIt-Script-angepasst):

    SQL
    select lastname as Nachname, 
    fistname as Vorname, 
    age as Alter, 
    habitation as Wohnort 
    from Tabelle 
    where lastname like '&<name="Name" list="select lastname from Tabelle group by lastname order by lastname">'

    Vielleicht noch ein kleines Beispiel zum Verständnis:
    Ich habe ein SQL-Statement gestartet und nun wird nach dem Nachnamen gefragt. Ich gebe den String "Ma" ein und nun wird mir im Eingabefeld "Maier" vorgeschlagen. Es existiert nun auch ein Dropdown-Box wo alle anderen alphabetisch sortiert auswählbar sind. 

    Jetzt wollte ich fragen, ob es möglich ist, diese automatische Anzeige/ automatischen Vorschläge des (in diesem Fall) Nachnamen so umzuschreiben, dass das AutoIt-Script die Abfrage startet, wie es im ersten Beispiel der Fall ist.

    Ich hab mir auch schon überlegt, die Spalte im Vorfeld abzufragen und in eine Array zu speichern. Dann hab ich aber das Problem, dass ich nicht weiß, wie ich die Array in die Abfrage mit einbinde.

    Wenn noch irgendwelche Verständnis-Fragen sind, einfach melden. Ich bin mir nicht sicher, ob ich das Problem verständlich rübergebracht habe.

    Und danke schon einmal für eure Mühe.

    Grüße, Thomas

    Einmal editiert, zuletzt von ThomasA (22. Juli 2009 um 14:57)

    • Offizieller Beitrag

    So richtig klar sehe ich bei deinem Problem nicht. Wie erfolgt denn die AutoIt-Umsetzung? Mit MySQL-UDF ?
    Und was anderes noch: Wäre es nicht vorteilhafter statt LIKE mit CONTAINING zu arbeiten? Ich verwende das lieber, da es nicht Case Sensitiv ist und auch für Partialsuche besser geeignet ist.
    Allerdings weiß ich nicht genau, ob meine SQL-Erfahrungen (Firebird, SQLite) adäquat für MySQL zutreffen. Gibt halt doch einige Unterschiede zwischen den Dialekten.

  • Sodele, jetzt meld ich mich nochmal zu Wort, um den Thread als gelöst zu melden.

    Ich hatte die Arbeitsweise des Programms nicht durchschaut -.-

    Das Programm interpretiert '\&textNachname=[INPUT]\&text' und bearbeitet es dann dementsprechend. Ich dachte, dass AutoIt da irgendwie ne Funktion hat, dass das ganze automatisch passiert. Hatte das Programm damals vor die Nase gesetzt bekommen und sollte drin "rumpfuschen".

    Jetzt hab ich das aber soweit bearbeitet, dass das Programm meine Anforderung (die Anzeige aller Möglichkeiten in einer ComboBox) auch interpretieren kann.

    So, dann entschuldige ich mich für die "unprofessionelle" Frage ;), stelle den Thread auf gelöst und wünsche noch einen wunderschönen Tag und bis zum nächsten Problem ;)


    Grüße, ThomasA