Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Variab

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Variab

Beitrag 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!
Benutzeravatar
boser
*****
Beiträge: 264
Registriert: Mi, 02.09.2009 08:28
Kontaktdaten:

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Beitrag 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]
mfg
boser

linux suse 11.4 / 12.2 ; LibreOffice 3.4.2
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Beitrag 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!
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Beitrag 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.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Suchabfrage mit Benutzereingabe, Filterabfrage, INPUT-Va

Beitrag 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
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Antworten