0

Anzeige der „richtigen" Daten in der Ansicht auf dem Dashboard

Mahlzeit,

auf meinem Dashboard kann ich über den Kundenamen bzw. -Nr. eine Suche starten und frage damit verschiedene Tabellen ab. U.a. meine Tabelle mit Aktivitäten, Verträgen und auch den Kalenderbesuchen.

Bei den Kalenderbesuchen möchte ich mir immer den aktuellsten (also jüngsten) Datensatz anzeigen lassen. Das sollte dann der neuste Eintrag im Feld Jahr sein. In den anzuzeigenden Spalten habe ich bisher dann immer z.B. first('Verteilung Jahre'.Wandkalender) eingetragen.

Dann war natürlich nicht wirklich die beste Idee, denn das stimmt nur, wenn alle Felder entsprechend gefüllt sind, wenn nicht, dann werden mir die jeweils ersten Enträge in den Feldern angezeigt, die aber schon Jahre zurückliegen können.

So sieht das ganze aus:

 

Wie man allerdings sieht ist da zum einen nicht der erste Eintrag (2020 wird mir nicht angezeigt) und bei Wandkalender steht die Zahl von 2016 und bei Schreibtisch-Unterlagen die von 2015.

 

 

Das ist ziemlich verwirrend. Wenn z.B. 2020 im Feld Jahr steht, dann soll mir auch nur diese Zeile angezeigt werden. Und wenn 2019 drin steht, dann die komplette Zeile für 2019. Die anderen Felder sollen dann ignoriert werden.

 

Ich vermute mal, dass ich das über die Funktion bei der Ansicht abfangen kann. Bisher lautet die Funktion so:

let me := Suchbegriff;
let mg := 'Mitglieds-Nr.';
if Suchbegriff then
select Kalenderbesuche where contains(lower(Firma), lower(me))
else
if 'Mitglieds-Nr.' then
select Kalenderbesuche where 'Mitglieds-Nr.' = mg
end
end

Ich habe es mit first vor den beiden select-Anweisungen versucht. Da wird mir aber gar nichts angezeigt

Wie muss denn eine solche Funktion aussehen, damit ich meine Anzeige so hinbekomme, wie ich es gerne hätte?

Für Ideen oder Lösungen wäre ich dankbar

Viele Grüße
Markus

2 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Markus,

    du kannst auch mit last und  order by versuchen:

    ---

    let me := lower(Suchbegriff);
    let mg := 'Mitglieds-Nr.';
    if Suchbegriff then
    last( (select Kalenderbesuche where contains(lower(Firma), lower(me))) order by Jahr)
    else
    if 'Mitglieds-Nr.' then
    last ((select Kalenderbesuche where 'Mitglieds-Nr.' = mg) order by Jahr))
    end
    end

    ---

    Leo

    • Markus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    das haut leider nicht hin. Das Feld Jahr stammt aus der 'Kalender Verteilung Jahre'. Deswegen musste ich die Funktion noch abändern, damit kein Fehler gemeldet wird (irgendwo steht die Tabelle noch mit 'Verteilung Jahre' drin)

    let me := lower(Suchbegriff);
    let mg := 'Mitglieds-Nr.';
    if Suchbegriff then
    last((select Kalenderbesuche where contains(lower(Firma), lower(me))) order by 'Verteilung Jahre'.Jahr)
    else
    if 'Mitglieds-Nr.' then
    last((select Kalenderbesuche where 'Mitglieds-Nr.' = mg) order by 'Verteilung Jahre'.Jahr)
    end
    end

    Aber auch hier bleibt das Ergebnis leer bzw. es wird kein Datensatz angezeigt

    Markus