Ich arbeite total gerne und viel mit SQL, daher muss ich vorab sagen das meine Lösung vielleicht etwas abwegig erscheint. Aber ich hätte hierfür eine Idee…
-
Eine Tabelle anlegen mit Codefeld + Beschriftung oder was auch immer. Das Codefeld übernimmt die selben 30 Werte wie in der zu durchsuchenden Tabelle. Diese Tabelle ist eine Art Filter-Liste. Jeder Datensatz in der Tabelle kann von jedem Benutzer aufgerufen und ggf. verändert werden. Jeder Datensatz repräsentiert einen eigenen Filter, man kann also mehrere Suchvorgänge dauerhaft vorhalten.
-
Eine View in SQL anlegen. Die View joint die Filter-Tabelle mit der eigentlichen Datensatztabelle und Verhält sich damit für Combit wie eine Tabelle für eine n:m-Beziehung. Die Join-Condition kann wahlweise mit OR oder AND arbeiten.
-
In Combit die View als Beziehungstabelle einpflegen und als Container auf der Ansicht für die Filter-Tabelle abbilden. In dem Moment, wo der Filterdatensatz angepasst und gespeichert wird, ändert sich die Anzeige im Container.
Wermutstropfen: Um von der Filter-Ansicht zum eigentlichen Datensatz zu kommen muss man durch die Zwischentabelle „springen“ (bin grade nicht sicher, ob man das irgendwie umgehen konnte). Außerdem eignet sich das ggf. nicht, um mit der Auswahl weitere Filter etc. durchzuführen, man kann wirklich erstmal nur Datensätze finden.
Proof of concept:
CREATE TABLE datentabelle(
pk UNIQUEIDENTIFIER NOT NULL,
code VARCHAR(3) NULL
);
INSERT INTO datentabelle VALUES (newid(),‚110‘);
INSERT INTO datentabelle VALUES (newid(),‚011‘);
CREATE TABLE filtertabelle(
pk UNIQUEIDENTIFIER NOT NULL,
filtername VARCHAR(100) NOT NULL,
code VARCHAR(3) NOT NULL,
suchmethode VARCHAR(10) NULL
);
INSERT INTO filtertabelle VALUES (newid(),‚Suche #1‘,‚110‘,‚UND‘);
INSERT INTO filtertabelle VALUES (newid(),‚Suche #2‘,‚110‘,‚ODER‘);
CREATE VIEW z_filter_daten
AS
SELECT newid() AS pk,
f.pk AS fk_filter,
d.pk AS fk_daten
FROM filtertabelle f
INNER JOIN datentabelle d
ON ( f.suchmethode = ‚UND‘
AND substring(f.code,1,1) = substring(d.code,1,1)
AND substring(f.code,2,1) = substring(d.code,2,1)
AND substring(f.code,3,1) = substring(d.code,3,1) )
OR ( f.suchmethode = ‚ODER‘
AND ( substring(f.code,1,1) = substring(d.code,1,1)
OR substring(f.code,2,1) = substring(d.code,2,1)
OR substring(f.code,3,1) = substring(d.code,3,1) ) )
SELECT *
FROM z_filter_daten