In der Firmenansicht nach vergebenen Kategorien filtern

Wir haben unsere Kundenfirmen über die über den Reiter Kategorisierung in die bei uns üblichen Arbeitsgebiete eingeteilt. In der Listenansicht kann ich aber zu diesem Feld keine Filterabfrage durchführen, weil es kein Eingabefeld in dieser Spalte gibt.

Eine Filterabfrage per Assistent erstellen geht zwar, aber hier kann man nur FEST einen der vorhandenen Werte auswählen und speichern, eine Eingabe oder Auswahl durch den Benutzer beim Aufrufen des Filters ist nicht einstellbar.

Wie kann ich dieses Problem lösen?

Vielen Dank
Holger

Ich interpretiere mal, dass wir von einem „Codefeld“ reden. Eine interaktive Benutzereingabe für den Vergleichswert zu einem Codefeld gibt es bislang nicht.

„Arbeitsgebiete“ klingt jetzt erstmal nicht nach so furchtbar vielen Werten. Könnte man für die TOP5 nicht einen Filter hinterlegen (wenn global steht er auch in der Auswahlliste im Menüband oben zur Verfügung) und den dann direkt über 5 Scripting-Schaltfläche oder Aktionselement einfach ausführen?

Alternativ können Sie ein Script machen, das alle Codeeinträge für dieses Feld (ViewConfig.CodeDefinitions) in eine Liste (DialogSelectString) schiebt und für den gewählten Eintrag dann den Filter (SUBSTRING der „x-ten“ Stelle ist ‚1‘) erstellt.

Hallo Herr Eggstein,
leider erst jetzt gesehen, dass Sie geantwortet haben. Die Liste enthält leider über 30 Einträge, daher fällt die Option mit den Filtern aus.

MIt dem Script müßte ich mal beschäftigen, so tief stecke ich da nicht drin. Leider aber wird nicht immer nur genau eine Kategorie zum filtern benutzt, sondern auch eine Auswahl aus Arbeitsgebieten. Das macht es etwas komplizierter.

Gäbe es sonst eine Alternative, diese Art der Information zuzuordnen, so dass sie wieder einfacher zu finden und zu filtern ist?

vielen Dank und viele Grüße

Ich denke, wenn combit CRM diese Codeauswahl auch zur Laufzeit bringen könnte, wäre es für Ihren Fall schon die eleganteste Lösung.

Ich habe mal in der Ideenwerkstatt einen Eintrag dafür angelegt:
Filter: Vergleichswert mit ‚Benutzereingabe‘ sollte auch Codefeld-Einträge unterstützen - combit CRM-Forum

1 „Gefällt mir“

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…

  1. 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.

  2. 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.

  3. 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

PS: Die View ergibt eventuell noch nicht so richtig Sinn weil er auch 0 vergleicht und wenn der Filter auf der Position 0 hat und der Datensatz auch 0 auf der Position ist dann entspricht das natürlich einem Treffer. Da müsste man sich noch ein bisschen verrenken, z.B. so:

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) = ‚0‘ OR substring(f.code,1,1) = ‚1‘ AND substring(d.code,1,1) = ‚1‘ )
AND ( substring(f.code,2,1) = ‚0‘ OR substring(f.code,2,1) = ‚1‘ AND substring(d.code,2,1) = ‚1‘ )
AND ( substring(f.code,3,1) = ‚0‘ OR substring(f.code,3,1) = ‚1‘ AND substring(d.code,3,1) = ‚1‘ ) )
OR ( f.suchmethode = ‚ODER‘
AND ( substring(f.code,1,1) = ‚1‘ AND substring(d.code,1,1) = ‚1‘
OR substring(f.code,2,1) = ‚1‘ AND substring(d.code,2,1) = ‚1‘
OR substring(f.code,3,1) = ‚1‘ AND substring(d.code,3,1) = ‚1‘ ) )
WHERE try_convert(BIGINT,f.code) > 0

Zusätzlich würde es dann eventuell noch Sinn machen zu verhindern, das im Filter nicht alles auf 0 steht. Das habe ich mal ins WHERE gepackt.

Hallo, vielen Dank für den Input, aber das ist dann tatsächlich etwas sehr um die Ecke gesprungen, um es mit eigenen Mitteln umzusetzen. Aber in die Richtung würde ich auch mal weiterüberlegen und vor allen auch die Ideenwerkstatt beobachten.
viele Grüße