locked
Teil inhalte von tabellenfeldern via SQL suchen RRS feed

  • Frage

  • Hallo liebe Community..
    ich habe ein Programm geschrieben.. Darin ist ein Formular enthalten, was aus verschiedenen tabellen einen courser bastelt und diesen in einem grid ausgibt.

    nun möchte ich gerne darin rum filtern. Ist mir bisher auch gut gelungen. Aber wenn ich mittels eingabe in ein textfeld etwas suchen will, muss ich immer den kommpletten inhalt (varchar) des feldes eingeben. Ich will aber, dass ich, wenn ich zum bespiel

    Hans Peter Müller

    suchen will nur z.B. Peter eingeben muss. Ich habe es mit der Like() funktion probiert, jedoch ohne erfolg.. wenn ich in vor dem sql code set exact off und nach dan sql code set exact on sage, dann könnte ich zwar nach hans suchen aber nicht nach Peter..

    Hat jemand n tipp oder ne idee??

    Ps.: FoxPro Hilfen konnten mich nicht weiter bringen, weill alles was die mir vorgeschlagen haben mit festgesetzten werten arbeiten sprich '%Peter%' ich will aber dass die variabel ist also thisform.txt_search.value und mit einem Asdruck konnte die LIKE() funktion anscheinend nichts anfangen.. Also

     "peter" mit textfeld eingeben und "hans peter müller" ausgeben...

    Donnerstag, 31. Januar 2013 13:48

Antworten

  • Also ich hab da jetzt ein wenig rum getrickst, weil auch wenn ich hier eine fragestelle höre ich ja nicht auf nach einer Lösung zu suchen

    und ich bin dann auf folgenden befehle gekommen;

    select * from tabelle t where t.name like "%" + Ausdruck + "%"

    gestestet und funktionalität bestätigt ^^
    • Als Antwort markiert Schosch93 Freitag, 1. Februar 2013 07:39
    Freitag, 1. Februar 2013 07:38

Alle Antworten

  • Hi,

    abgesehen davon, dass Du Deine Routine zu Zusammenbauen der Filterbedingung auf die verschiedenen Variablentypen auch unterschiedliche Filterbedingungen generieren muss, sähe eine String-Filterung bspw. so aus:

    myValue = [Peter]
    SET FILTER TO AT( myValue , feld1) > 0 IN myCursor
    


    Gruss / Best regards
    -Tom
    Debugging is twice as hard as writing the code in the first place.
    Therefore, if you write the code as cleverly as possible,
    you are, by definition, not smart enough to debug it. 010101100100011001010000011110000101001001101111011000110110101101110011

    Donnerstag, 31. Januar 2013 14:06
  • Darum Gehts mir doch gar nicht.. ich bau einfach nur den cursor mit mehr einschränkungen neu auf..
    Und genau genommen ist es mehr ein suchen als ein filtern.. ich will einfach alle ausgebe, wo feld_1 = thisform.text1.value ist.

    aber die inhalte müssen nicht identisch sein, sondern feld_1 muss nur thisform.text1.value enthalten.. ganz egal ob es am anfang, am ende, in der mitte des Feldes steht oder ob der text schon komplett ist..

    wenn ich in dieses textfeld nur ein s schreibe, dann sollen alle ausgegeben werden, wo in Feld_1 irgentwo ein s vorkommt..

    dafür gibt es einen SQL befehl.. aber ich habe bisher nur beispiele mit festen werten und nicht mit Ausdrücken gefunden
    Donnerstag, 31. Januar 2013 14:33
  • Hallo Schosch,

    Du solltest Dir einmal anschauen was die Funktionen AT(), ATC() oder ATCC() können.

    Sie prüfen, ob ein Zeichenausdruck, in Deinem Fall "s" oder auch "Peter", in einem anderen Zeichenausdruck vorkommt. Wenn nein, geben diese Funktionen 0 zurück, anderfalls die numerische Anfangsposition Deines Ausdrucks. Also einen Wert grösser 0.

    Gruss Uli

    Freitag, 1. Februar 2013 06:26
  • Also ich hab da jetzt ein wenig rum getrickst, weil auch wenn ich hier eine fragestelle höre ich ja nicht auf nach einer Lösung zu suchen

    und ich bin dann auf folgenden befehle gekommen;

    select * from tabelle t where t.name like "%" + Ausdruck + "%"

    gestestet und funktionalität bestätigt ^^
    • Als Antwort markiert Schosch93 Freitag, 1. Februar 2013 07:39
    Freitag, 1. Februar 2013 07:38