Seite 1 von 1

Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Variab

Verfasst: Do, 10.01.2013 08:58
von NTClient
Hallo Jungs (und Mädels),

Ihr kennt alle den BASIC-Befehl INPUT, bei dem der Benutzer aufgefordert wird, den Inhalt für eine Variable einzugeben:

INPUT Name$;

Ich arbeite mit AOO 3.4.1 und dort mit Base und dort mit Abfragen in der Entwurfsansicht.

Für ein Feld namens Mitgliedsnummer mit Feldtyp [INTEGER] habe ich das hinbekommen: Einfach in die Zeile „Kriterium“ reinschreiben:
:Welche_Mitgliedsnummer

Dann öffnet sich beim Ausführen der Abfrage ein kleines Fenster, in dem der Benutzer eine Zahl reinschreiben muss. Danach erscheint eine Ergebnistabelle mit den Mitgliedern der entspr. Mitgliedsnummer.

Soweit so gut:

Das brauche ich jetzt für meine Abfrage mit Feldern vom Feldtyp TEXT [Varchar]. Außerdem soll die Abfrage nach LIKE filtern. Der Benutzer soll also ein Stichwort eingeben, z. B. „be“ und dann soll die Abfrage alle Mitglieder filtern, bei denen in Vorname „be“ enthalten ist, also auch "Bernd". Dabei soll Groß- und Kleischreibung keine Rolle spielen.

Ansatz 1:
WIE '*Be*'
Filtert zwar alle Mitglieder, in denen „Be“ vorkommt aber 1. abhängig von Groß- und Kleinschreibung und 2. muss ich „Be“ in der Abfrage vorgeben und kann nicht eine Benutzereingabe anfordern.

Ansatz 2:
:Welcher_Vorname
Fordert zwar eine Benutzereingabe an, jedoch muss der Benutzer 1. den kompletten Vornamen eingeben und 2. dabei auch noch die Groß- und Kleinschreibung beachten.

Ansatz 3:
WIE :Welcher_Name
Ergebnis wie Ansatz 2.

Einer ne Idee oder brauche ich ein Makro?

Gruß Bernd!

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Verfasst: Do, 10.01.2013 09:21
von boser
Hallo,

gem. Hilfe von LO ist folgedes :

Code: Alles auswählen

Parameterabfragen mit Platzhaltern (*, _) oder Sonderzeichen (z. B. ?) sind nicht möglich.
Leider :(

[Edit]
Also wird es wohl auf ein Makro hinauslaufen.
[/EDIT]

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Verfasst: Do, 10.01.2013 10:17
von NTClient
Sieht so aus, was?

Wie würdet Ihr das angehen? Eingabeaufforderung krieg ich mit BASIC hin. Dann SQL-Befehl generieren, Abfrage ausführen ... Evtl. als Tabellenerstellungsabfrage um die Werte in einer Tabelle zwischen zu speichern?

Ich probier mal was und meld mich wieder, es sei denn es hat noch jemand ne Lösung ...
Bernd!

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Verfasst: Do, 10.01.2013 10:52
von pmoegenb
Hallo Bernd,

schau Dir diese Lösung viewtopic.php?f=8&t=60605 an. Dort findest Du das was Du benötigst.

Hinweis:
Der Platzhalter für SQL-Variablen ist das Prozentzeichen (%).
LOWER wandelt den Feldinhalt bei der Auswertung in Kleinbuchstaben um.

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Verfasst: Do, 10.01.2013 12:05
von juetho
Damit keine Missverständnisse auftreten:
pmoegenb hat geschrieben:Hinweis:
Der Platzhalter für SQL-Variablen ist das Prozentzeichen (%).
Das Prozentzeichen ist der Platzhalter für variable Werte bei LIKE (Peter meint mit Sicherheit nichts anderes, ich wollte es nur betonen):

Code: Alles auswählen

... WHERE LOWER("Name") LIKE """ & InputFeld.Text & "%"""
Ich hoffe, ich habe mich jetzt mit den vielfachen Anführungszeichen nicht vertan. Sicherer ist deshalb die Variante mit prepareStatement, siehe z.B. Hinweis von DPunch. Er schreibt dort:
Anstatt sich selber mit Datumsformaten rumzuschlagen, überlasst man sowas lieber dem Datenbanktreiber.
Auch die Formatierung mit Anführungszeichen sollte man dem Datenbanktreiber überlassen.

Gruß Jürgen