+49 (0)7531 906010| service@combit.net

Grafik sichtbar nur wenn im Container was drin steht

Hallo lieber Leser

Ich will eine Grafik über einer Registerkarte Ein / Ausblenden abhängig davon ob in einem Container der unter der Registerkarte platziert ist etwas hinterlegt ist oder nicht.
Ich verspreche Mir davon mehr Übersichtlichkeit.

Vielen Dank für alle Arten von Tipps - Ansätzen im Voraus.

Ich habe ein vergleichbares Problem. Ein Container soll ausgeblendet werden wenn er keine Daten enthält.

Ideen habe ich ein paar aber die würden per Trigger eine Spalte füllen oder dergleichen, ich suche eigentlich auch die einfache Variante.

Ich arbeite jetzt seit 2007 mit combit cRM. Dieses Problem hatte ich auch schon x-mal. Leider gibt es immer noch keine Möglichkeit, über eine Formel bei der Darstellungs-Bedingung eine SQL-Abfrage einzubauen. Sonst könnte man ein einfaches „SELECT COUNT(*)“ verwenden.

Ein Datenbank-Trigger, welcher beim Anlegen eines DS in der 1:n-verknüpften Ansicht ein Feld in der „Haupt“-Ansicht ändert, wäre durchaus eine Möglichkeit.

Man kann auch einen ganz seltsamen Weg gehen. Ich hab’s mal irgendwann ausprobiert:

Wenn man in der Haupt-Ansicht ein Feld anlegt, welches automatisch den gleichen Wert enthält, wie das eigentliche Schlüsselfeld (per SQL-Trigger, automatischem Inhalt am SQL-Server oder einfach über einen Auto-Wert bei Neuanlage des DS im cRM), dann kann man mit diesem Feld eine 1:1-Verknüpfung auf den Fremdschlüssel eintragen.

Sobald es mindestens einen 1:n-Verknüpften DS gibt, gibt es auch eine 1:1-Verknüpfung auf das zweite Feld. Und dies kann man mit „NOT Empty()“ abfragen.

Beispiel:

Ansicht 1: „Personen“, Schlüssel „ID_Personen“
Ansicht 2: „Kontakte“, Schlüssel „ID_Kontakte“, Fremdschlüssel „RECID_Personen“

Im cRM gibt es bei eine 1:n-Verknüpfung von „Personen.ID_Personen“ zu „Kontakte.RECID_Personen“.

Jetzt Fügen wir der Ansicht „Personen“ ein Feld namens „ID_Personen_Kopie“ hinzu. Über einen der beschriebenen Werte sorgen wir dafür, dass „ID_Personen_Kopie“ den gleichen Wert enthält, wie „ID_Personen“.

Nun tragen wir im cRM eine 1:1-Verknpüfrung von von „Personen.ID_Personen_Kopie“ zu „Kontakte.RECID_Personen“ ein.

Danach können wir im Eingabemasken-Designer für „Personen“ als Darstellungs-Bedingung für den Container folgendes eintragen:

NOT Empty(ID_Personen_Kopie.Kontakte.RECID_Personen.ID_Kontakte)

Wie gesagt: Der Weg ist ziemlich seltsam und auch nicht wirklich empfehlenswert. Wenn man sich aber an DB-Trigger und dergleichen nicht heran traut, könnte es eine Alternative für den Einzelfall sein.

Hallo zusammen,

eine andere Lösung ist, eine Datenbanksicht zu erstellen, die nach dem Fremdschlüssel des Containers gruppiert ist.

create view KONTAKTE_Index as select RECID_Personen, Count(*) as Anzahl from KONTAKTE Group by RECID_Personen

Anschließend eine Ansicht Kontakte_Index auf die View erstellen und in der Ansicht Personen mit einer 1:1 - Relation verknüpfen:

Personen.ID_Personen 1:1 Kontakte_Index.RECID_Personen

Dann kann die Sichtbarkeitsbedingung über die Formel

ID.Kontakte_Index.RECID_Personen.Anzahl>0

definiert werden.

Ist für mich die einfachste Lösung.

Viel Erfolg beim Implementieren!

© combit GmbH