(gelöst) Abfrage mit "Wie[Welcher Name?]& "*" "

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

(gelöst) Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo !

Kann man solch eine Abfrage analog zu Access auch in Base realisieren? Ich möchte in einem Formular einen Namen in einem Feld eingeben, welcher dann im Formular angezeigt wird.

Danke schon mal für die Hilfe .


Gruß Andy
Zuletzt geändert von schane65 am So, 29.04.2012 10:48, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von RobertG »

Hallo Andy,

in Access wird das so nur in der GUI heißen. Im Unterbau wird daraus
... WHERE "Feldname" LIKE 'Suchbegriff%'
LIKE durchsucht einen Textbestand. Wenn direkt mit dem Suchwort begonnen wird, so muss der Textbestand auch mit dem Suchwort beginnen. Sonderzeichen sind % für beliebig viele Zeichen und _ für ein einzelnen Zeichen. Durch die obige Konstruktiin muss der Text also mit dem Suchwort beginnen, kann dann aber beliebig weitergehen. Trifft z.B. auch für die Filterung nach Alphabet zu:
"Name" LIKE 'A%'
zeigt dann nur Namen an, die mit A beginnen.

Gruß

Robert
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo Robert !

Im Grunde suche ich das, möchte das Suchwort aber in ein Feld im Formular eintragen und dann die gesamten Daten im Formular angezeigt bekommen. Es kann von mir aus mit ein Klick auf einen Button geschehen, wodurch ein Feld geöffnet wird, wo ich einen Namen eingebe oder in Feld direkt schreibe, wo vielleicht ein Button daneben liegt, wo ich sage "Los". Ich hoffe, du verstehst, was ich meine. In Access ist das relativ einfach, ich möchte aber OpenOffice benutzen.
Kannst du da helfen? Ich füge mal die aktuelle Datenbank hinzu und vielleicht hast du Lust, mir das da irgendwie einzubauen. Ich bekomme es nicht hin. Ich möchte einmal nach Nachnamen suchen und zum Zweiten nach Stichwörtern aus der Tabelle Adressen.

Danke schon mal !

Gruß Andy
Dateianhänge
AdressenNeu.odb
(17.54 KiB) 148-mal heruntergeladen
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von RobertG »

Hallo Andy,

ich habe das einmal im Schnellverfahren in ein neues Formular eingebaut. Das alte Formular wollte ich nicht anrühren, da Du da schon viele Elemente drin liegen hast. Die zentrale Abfrage ist:

Code: Alles auswählen

SELECT "Adressen".*, IFNULL( "Stichwort", '' ) AS "SW" FROM "Adressen" WHERE UCASE( "Nachname" ) LIKE IFNULL( ( SELECT UCASE( "Nachname" ) FROM "Filter" ) || '%', UCASE( "Nachname" ) ) AND "SW" = IFNULL( ( SELECT "Stichwort" FROM "Filter" ), "SW" )
Die gesamte Tabelle "Adressen" wird ausgewertet. So hast Du auch den Primärschlüssel verfügbar und kannst Datensätze hinzufügen. Diese Abfrage ist also Grundlage des Formulars. Das eigentliche Formular besteht aus zwei parallel liegenden Formularen; Formular 1 bedient die neue Tabelle "Filter", Formular 2 hat die Abfrage als Grundlage. In Formular 1 liegen ein Texteingabefeld für die Nachnamen ("Filter"."Nachname") und ein Listenfeld für die Stichworte ("Filter"."Stichwort"). Mit dem Formular 1 wird immer nur ein Datensatz beschrieben. In Formular 2 liegen ein Tabellenkontrollfeld (das Du auch auflösen kannst in einzelne Felder ...) und ein Button, der das Formular aktualisiert. Drückst Du diesen Button, wenn Du in Formular 1 eine Eingabe machst, so wird zuerst die Eingabe abgespeichert und dann das untere Formular aktualisiert - ohne irgendwelche Makros.
Zur Abfrage: Die Bedingung hat erst einmal die Grundform
WHERE "Nachname" LIKE 'Eingabetext%'
Das bedeutet, dass vom Text der Anfang mit der Eingabe in Deiner Tabelle "Adressen" übereinstimmen muss. Damit Du auch mit Kleinschreibung bei der Eingabe keine Probleme hast taucht
UCASE("Nachname")
auf. Da Du bei den Stichworten eventuell leere Feldern hast, habe ich für die Filterung erst einmal ein neues Feld erzeugt, das bei NULL das Feld mit einem leeren String versorgt. Diesem Feld habe ich den Alias "SW" zugewiesen. Die Stichworte sind wegen des Listenfeldes eindeutig, so dass dort auf die langsamere LIKE-Bedingung verzichtet werden kann.
Alle Bedingungen sind mit IFNULL() abgesichert, so dass Du bei leeren Filterfeldern alle Datensätze angezeigt bekommst.
Die Tabelle "Stichwort" brauchst Du eigentlich in Deinem Formular nicht, solange Du die Stichworte auch direkt in die Tabelle "Adressen" einbaust. Ich habe jedenfalls die Abfrage so erstellt, dass tatsächlich Stichworte in der Tabelle "Adressen" stehen.
Übrigens: Auch das Alphabet kannst Du jetzt durch Anfangsbuchstaben und den Button "OK" ersetzen.

Gruß

Robert
Dateianhänge
AdressenNeu.odb
Separates Formular zum Filtern und Eingeben
(26.66 KiB) 126-mal heruntergeladen
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo!

Danke, echt klasse. Das hätte ich so bestimmt nicht hinbekommen. Eins fehlt mir aber noch, was ich im Nachhinein auch mit dem Formularnavigator nicht hinbekomme. Ich möchte eigentlich auf dem Formular Adressen das Subformular das Subformular Adressen_Filter haben. Wie funktioniert das bzw. könntest du das dort einbauen?
Ich wäre dir für die Arbeit sehr dankbar.
Desweiteren hast du vielleicht gesehen, dass ich im Formular Adressen ein Listenfeld für neu Stichwörter eingefügt habe. Wenn ich dort ein Stichwort neu einfüge bzw. ein vorhandenes auswähle, muss ich immer das Feld Stichwort anklicken, damit es dort eingefügt wird. Gibt es dafür eine andere Lösung?


Gruß Andreas
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von RobertG »

Hallo Andreas,

ich habe Dir einmal ein neues Formular dazugebaut. Oben steht dann die Filterung (kann natürlich noch besser gestaltet werden), unten Deine Eingabemaske. Die ganzen Buttons habe ich rausgelassen, da sie ja in der Suchfunktion eine einfache Ersetzung finden.
schane65 hat geschrieben: Desweiteren hast du vielleicht gesehen, dass ich im Formular Adressen ein Listenfeld für neu Stichwörter eingefügt habe. Wenn ich dort ein Stichwort neu einfüge bzw. ein vorhandenes auswähle, muss ich immer das Feld Stichwort anklicken, damit es dort eingefügt wird. Gibt es dafür eine andere Lösung?
Das habe ich anders geregelt. Ich habe den Bezug zur Tabelle "Stichwort" völlig rausgenommen. Stattdessen habe ich ein Kombinationsfeld genommen. Das Kombinationsfeld zeigt die Werte aus der Tabelle "Adressen" im Feld "Stichwort" an. Du schreibst ja sowieso die Werte in die Tabelle "Adressen" rein.
Wenn Du eine separate Tabelle "Stichwort" nutzen möchtest, so würde normalerweise in der Tabelle "Adressen" nur der Fremdschlüssel der Tabelle "Stichwort" stehen - also ein Hinweis meist in Form einer Zahl. Dann müsste auch die Filterung diese Zahl speichern, nicht den eigentlichen Text.
Übrigens: Die Einfärbung des Hintergrundes bei Formularen erhältst Du über die Seiteneinstellung, nicht über das Hinzufügen von Absätzen. Durch die vielen Absätze in Deiner Vorlage sind neue Elemente schwer positionierbar.

Gruß

Robert
Dateianhänge
AdressenNeu.odb
(35.98 KiB) 116-mal heruntergeladen
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo Robert !

Das ist alles super, wirklich. Ein Ding ist aber, dass ich ein Feld haben möchte, bei dem ich ein neues Stichwort eingeben kann, welches in die Tabelle Stichwörter eingetragen werden soll. Bei der Eingabe von Daten soll nun ein Feld existieren, dass aus der Tabelle Stichwort die dortigen Einträge anzeigt und ausgewählt werden kann. Dieses ausgewählte Stichwort soll dann bei der jeweiligen Person in der Tabelle Adressen im Feld Stichwörter eingetragen werden, was bewirkt, dass es beim Suchen der Person im Formular auch angezeigt wird.

Ich denke, da haben wir uns irgendwie missverstanden, oder?

Trotzdem bin ich heilfroh, jemanden gefunden zu haben, der mir so sehr hilft, wirklich. Nochmals danke.


Gruß Andreas
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von RobertG »

Hallo Andreas,
schane65 hat geschrieben:Ein Ding ist aber, dass ich ein Feld haben möchte, bei dem ich ein neues Stichwort eingeben kann, welches in die Tabelle Stichwörter eingetragen werden soll. Bei der Eingabe von Daten soll nun ein Feld existieren, dass aus der Tabelle Stichwort die dortigen Einträge anzeigt und ausgewählt werden kann. Dieses ausgewählte Stichwort soll dann bei der jeweiligen Person in der Tabelle Adressen im Feld Stichwörter eingetragen werden, was bewirkt, dass es beim Suchen der Person im Formular auch angezeigt wird.
Ich denke schon, dass ich das richtig verstanden habe. Ich verstehe nur nicht, warum Du überhaupt die separate Tabelle nehmen möchtest, wenn Du doch in die Tabelle "Adressen" die Stichwörter reinschreibst - und nicht den Primärschlüssel der Tabelle "Stichwort" als Fremdschlüssel.
Mit einem Kombinationsfeld wird so der Umweg über die 2. Tabelle umgangen. Kommt ein neues Stichwort, so wird das einfach eingetragen. Kommt ein altes Stichwort, so wird das durch das Kombinationsfeld vorgeschlagen und kann eingefügt werden.
Willst Du das Eintragen direkt in die Tabelle verhindern, damit nicht z.B. Schreibfehler zu Stichworten führen, die eigentlich gleich sein sollen, so wäre die Konsequenz, aus der Tabelle auch das Textfeld für "Stichwort" zu entfernen und durch ein Feld zu ersetzen, das den Fremdschlüssel aus der Tabelle "Stichwort" aufnimmt. Dann kannst Du ein Listenfeld sinnvoll nutzen, das nämlich zu dem Fremdschlüssel den jeweiligen Wert darstellt. Bei wenigen Stichworten ist das sinnvoll - bei einer stark wachsenden Zahl an Stichworten ist dieses Vorgehen allerdings lästig, da dieses Listenfeld immer wieder mit neuen Inhalten bestückt werden muss, die an anderer Stelle (im Formular oder in der Tabelle) geschrieben werden.
Die Anzeige des Stichwortes beim Suchen ist völlig unproblematisch. Dann wird in der Suchfunktion eben einfach der entsprechende Zahlenwert in der Filtertabelle abgespeichert. Die Listenfelder wandeln das dann um. Soll ich die Tabellenstruktur einfach entsprechend ändern?

Gruß

Robert
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo Robert !

Aus der Warte habe ich es bislang noch nicht betrachtet. Hintergrund ist eigentlich eine uralte mit Access 97 programmierte Datenbank, wo solche Geschichten eingebaut sind. Diese Datenbank kann demnächst aber nicht mehr benutzt werden. Daher soll es eine Neue sein und ich denke, diese ist super und wir sollten es dabei belassen.
Eins habe ich aber noch festgestellt:
Ich habe die Schalter mit denb Buchstaben übertragen und musste feststellen, dass die einzelnen Schalter nach dem Anklicken orange bleiben und nicht, wie vorher, nach dem Anklicken eines anderen Schalters wieder grau werden.
Woran kann das liegen?
Ich füge die Datenbank noch mal hinzu.

Gruß Andreas
Dateianhänge
AdressenNeu(2).odb
(37.47 KiB) 126-mal heruntergeladen
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von RobertG »

Hallo Andreas,

die Schaltflächen wurden nicht mit dem Formular aktualisiert. Das liegt daran, dass Du beim Einfügen der Schaltflächen ein neues Nebenformular gegründet hast. Ich habe die Schaltflächen jetzt ins erste Formular verschoben. Außerdem habe ich das neue Nebenformular umbenannt.

Was möchtest Du mit dem Tabellenkontrollfeld rechts erreichen? Das hat jetzt keine Verbindung zu den anderen Daten sondern ist sozusagen nur eine separate Übersicht. Soll das auch nur die gefilterten Daten anzeigen? Dann muss es ebenfalls in das erste Formular verschoben werden. Dazu musst Du den Formularnavigator öffnen, das Kontrollfeld markieren und auf die Bezeichnung für das erste Formular ziehen.

Gruß

Robert
Dateianhänge
AdressenNeu(2).odb
(37.5 KiB) 157-mal heruntergeladen
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: (gelöst) Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo Robert !

Danke für die vielen Tipps und Lösungen. Ich denke, so werde ich die Datenbank nutzen können.



Gruß Andreas
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: (gelöst) Abfrage mit "Wie[Welcher Name?]& "*" "

Beitrag von schane65 »

Hallo Robert !

Eine Frage habe ich noch:

Kann man das Formular so ähnlich wie bei Access als bde laden? ich habe mal versucht, das Formular als Kopie (writer) abzuspeichern. Beim Auswählen der Felder bekomme ich dann aber immer eine Fehlermeldung. Gibt es eine Lösung?


Gruß Andreas
Antworten