Formular mit Suchfunktion mit mind. 2 Kriterien

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von F3K Total »

Hi, du kannst natürlich über einen Parameter (Eingabefeld) auch mehrere Spalten durchsuchen etwa so:

Code: Alles auswählen

... WHERE (LOWER("NACHNAME") LIKE LOWER (:qNAME||'%') OR LOWER("VORNAME") LIKE LOWER (:qNAME||'%') OR :qNAME IS NULL)
HTH R
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von RobertG »

Hallo Joe,

wenn Du das universeller willst, dann musst Du den Code nur für jedes Feld erweitern. Ich würde das allgemeine Nachfragefeld dann nicht ":qName" sonder z.B. ":qSuche" nennen. Das kann dann quer Beet laufen.
Noch allgemeiner geht es, wenn Du so etwas nutzt:

Code: Alles auswählen

SELECT * FROM "Medien" WHERE "Titel" LIKE IFNULL( ( SELECT '%' || "Suchbegriff" ||'%' FROM "Filter" ), "Titel" ) 
Siehe aktuelles Handbuch 4.2, S. 272
Da wird dann von einem Formular aus eine Filtertabelle mit einem Wert gefüllt und im Unterformular das Ergebnis aufgesucht. Für die Vorlage mit Parameter wäre also '%'||:qName||'%' die Allroundfunktion.

Gruß

Robert
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von RobertG »

Hallo Joe,

grundsätzlich kannst Du Suchfunktionen nur auf Abfragen anwenden. Abfragen können in Base aber sehr wohl editierbar sein. Das gilt auch für Parameterabfragen. Wenn das, was Du von "Lucky Müller" hast, für Dich funktioniert, dann kommt es nur noch auf die Art der Abfrage an, ob denn der Inhalt editierbar ist. Schau Dir im Handbuch einfach einmal an, welche Bedingungen für eine editierbare Abfrage erfüllt sein müssen.

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von F3K Total »

RobertG hat geschrieben:Abfragen können in Base aber sehr wohl editierbar sein.
Wollte ich auch gerade schreiben, dazu muss die Abfrage alle Primärschluessel aller beteiligten Tabellen enthalten.
Gruss R(Lucky)
Zuletzt geändert von F3K Total am Di, 20.05.2014 20:45, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von RobertG »

Hallo R,

wusste ich gar nicht, dass Du auch noch mit anderen Pseudonymen unterwegs bist ...

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von F3K Total »

Hallo Robert,
hättest du aber drauf kommen können ... siehe FAQ :wink:
Gruß Rik
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von RobertG »

Hallo Rik,

dazu hätte ich erst einmal mich so weit in dem Forum hochhangeln müssen. Das habe ich bisher wohl äußerst selten gemacht. Mein Einstieg ist direkt die Programmkomponente Base/SQL. Das andere schaue ich mir in der Regel nicht weiter an.

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von F3K Total »

Hallo Joeer82,
die Sache mit der Fehlermeldung könnte auf zwei Weisen funktionieren
  1. per makro
  2. Dazu kommen wir im Folgenden ...
Die zweiter Herausforderung, grundsätzlich, ja geht, entweder
  • per Makro
  • und jetzt auch die oben fehlende Antwort: oder... geht alles mit HSQL aber nicht mit der eingebetten Version 1.8.10.
    Gerade gestern habe ich eine Antwort zu einer ähnlichen Frage geschrieben. Wenn Du dann die Datenbank gesplittet hast, können wir damit weitermachen, die Datenbank auf die aktuelle Version 2.3.2 upzugraden. Dann kann man berechnete Spalten und Trigger verwenden, die eben genau das tun, z.B. den User mitzuschreiben, die Änderungen usw.
    Ist aber nicht banal, die Datenbank kann danach fast ausschließlich mit SQL-Befehlen verändert werden.
Gruß R
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von F3K Total »

Hi Joe,
wenn du im Beispiel aus dem Videotutorial 5 dieses Makro an das Ereignis "nach dem Datensatzwechsel" des Formulares "F_Adressen" hängst, hast du deine Meldung und das automatische Zurücksetzen des Filters.

Code: Alles auswählen

Sub S_no_search_result
    oFormFilter = Thiscomponent.drawpage.forms.Filter
    oF_Adressen = oFormFilter.F_Adressen
    if oF_Adressen.RowCount = 0 then' ---> kein Datensatz vorhanden
        msgbox ("Es wurde kein Datensatz gefunden, der Filter wird zurückgesetzt",64,"Suchergebnis")
        oFormFilter.updatenull(oFormFilter.findcolumn("F_Nachname"))
        oFormFilter.updatenull(oFormFilter.findcolumn("F_Vorname"))
        oFormFilter.updaterow
        oFormFilter.reload
    end if
end sub
Gruß R
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von F3K Total »

Joeer82 hat geschrieben:Kann man irgendwie dieser Tabelle sagen, dass wenn ich einen neuen Datensatz anlege (auf neuer Klient klicke), dass die Tabelle keine Daten anzeigen soll?
Im Suchformular wäre das "nicht anzeigen" wohl eher hinderlich.
Du kannst ein zweites Formular anlegen, und ihm die Eigenschaft NUR DATEN HINZUFÜGEN geben, dann ist es beim Anlegen eines neuen Datensatzes leer.
Was das Anmelden ans Forum betrifft, ich kann da nicht helfen, du solltest dich an die Administratoren wenden.
Gruß R
Joeer
Beiträge: 3
Registriert: So, 18.05.2014 22:32

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von Joeer »

Hallo Leute,

lange habe ich mich jetzt mit der Datenbank weitergespielt und stehe jetzt aber wieder an...

Bei den Testläufen hat es sich als nicht praktikabel erwiesen, dass in der Such-Datenbank auch die Daten gleich geändert werden können - deshalb will ich das Formular auf 2 -3 Formulare aufspalten.
Beim ersten Formular sollen die Daten zur Ansicht verfügbar sein und derzeit noch für die Neuanlage
Beim zweiten Formular sollen die Daten geändert werden können.

Ich habe versucht anhand der Anleitungen aus folgenden Beitrag ucp.php?mode=activate&u=56714&k=3NJYIO2 die Übergabe der Werte aus dem 1. Formular in das 2. zu übertragen.

Die "nID" wird auch korrekt in das 2. Formular übergeben, was ich anhand der Messagebox im 2. Formular geprüft habe, allerdings wird der Filter nicht gesetzt. Könnt ihr mir da weiterhelfen?

So wie ich das erkenne muss es irgendwo an diesen Codezeilen liegen:

Code: Alles auswählen

odetailForm = ocomponent.drawpage.forms.MainForm
odetailForm.Filter = "( ""Kundenstammdaten"".""ID"" = "+nID+" )"'Nach der Person mit der aus dem ersten Formular ausgelesenen ID filtern
odetailform.reload
Ich habe versucht mein Formular von der Formularstruktur her genau an die Vorlage anzupassen, allerdings funktioniert es nicht wirklich.
"Kundenstammdaten" ist die Tabelle in der die Kundenstammdaten versteckt sind - das sollte ja passen, da ich ja genau den Datensatz aus den Kundenstammdaten haben will, der der nID entspricht.
Ich habe stundenlang herum probiert und versucht nachzulesen, aber leider ohne Erfolg...
Hoffe, dass ich von euch einen Hinweis erhalten kann.

Vielen Dank vorab

LG Joe
Dateianhänge
Kundendatenbank V 0.04.odb
(51.09 KiB) 116-mal heruntergeladen
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von acco »

Hallo Joe,

Du hast da einen recht komplizierten Weg eingeschlagen, das tut es auch

Code: Alles auswählen

SUB OpenForm_Datenbearbeiten
    oForm = ThisComponent.Drawpage.Forms.Filter.Kundendaten
    nID = oForm.getInt(oForm.findColumn("ID"))
    oFormDatenbearbeiten = ThisDatabasedocument.FormDocuments.getByName("Kundenstammdaten_Aenderung").open
    oFormDatenbearbeiten = oFormDatenbearbeiten.Drawpage.Forms.MainForm
    oFormDatenbearbeiten.Filter = "(""ID"" = '" + nID + "')"
    oFormDatenbearbeiten.reload
END SUB
Belege die Schaltfläche im Formular "Stammdaten" damit. Wenn Du in Stammdaten den Datensatz wechselst, wird auch das Bearbeiten-Formular neu geladen. Ursprünglich hat das mal F3K Total irgendwo im Forum eingestellt, ich habe es auf Deine DB angepaßt. Ist ne schöne SUB, ich benutze sie auch gern. Also nochmal Dank an F3K Total und viel Erfolg weiterhin

Gruß

acco

Edit:
eine kleine Nachlässigkeit hat sicheingeschlichen, die zwar nicht die Funktion, aber die Verständlichkeit beeinträchtigt. Diese Zeile so ändern:
oFormDocDatenbearbeiten = ThisDatabasedocument.FormDocuments.getByName("Kundenstammdaten_Aenderung").open

Gruß acco
Zuletzt geändert von acco am So, 15.06.2014 16:17, insgesamt 1-mal geändert.
openSUSE 13.1, LibreOffice 4.3.2.2
Joeer
Beiträge: 3
Registriert: So, 18.05.2014 22:32

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von Joeer »

Hallo,

super Danke für die Unterstützung. Werde ich dann gleich morgen früh ausprobieren.

LG Joe
Joeer
Beiträge: 3
Registriert: So, 18.05.2014 22:32

Re: Formular mit Suchfunktion mit mind. 2 Kriterien

Beitrag von Joeer »

Hallo Acco,

möchte mich nochmals bei dir bedanken ... das Makro funktioniert super!!!

Ist auch etwas leichter zu verstehen, als das was ich verwenden wollte.

Vielen Dank für deine Hilfe

LG und Gute Nacht

Joe
Antworten