SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Re: Now() / Today() in calculated Fields

Dieser Beitrag hat 0 Antworten

Ohne Rang
17 Beiträge
Trader erstellt 12 Okt. 2012 09:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe nochmal ne Frage:

Folgendes habe ich gemacht: Ich habe eine Liste kreiert, mit Deadline (Date field) und Days Left field (=calculated Field) mit folgender Formel:

=IF([Milestone order to FENT]=0,"No date",[Milestone order to FENT]-DATE(1970,1,1))

Darauf habe ich im beschriebenen Feld logischerweise grosse Zahlen erhalten (um die 15000, da ja auf 1970 rückdatiert wird).

Dann habe ich zusätzlich eine Spalte kreiert (Indikator, auch calculated field) mit folgender Formel:

="Indikator#"&IF([Days Left]>14,"ampelgreen",IF(AND([Days Left]<=14,[Days Left]>2),"ampelyellow",IF(AND([Days Left]<=2,[Days Left]>=-5),"ampelred","Chrigu")))

an den zwei FOrmeln ist nichts auszusetzen, die funzen prima.

Dann hab ich in einem CEWP ein Java Script hinterlegt, und darauf hat es mir die Ampeln angezeigt, natürlich alle in grün (ampelgreen), da der Bezug ja auf die 15000er Zahlen gilt. So weit mal alles gut:

Nun möchte ich aber zusätzlich das Today field mit einem Workaround umgehen. Dazu muss programmiert werden und das hab ich folgendermassen gemacht:

Ich hab eine Weppartpage kreiert, im Designer geöffnet, dann meine obig beschriebene Liste eingefügt und ein Data Form Web Part erschaffen. Darauf bin ich in den Code gegangen und hab die einze Zeile mit dem Java Script ausgetauscht:

<DIV align = "right">
<xsl:variable name="StrDaysLeft" select="@Days_x0020_Left" />
<xsl:variable name="NbDaysLeft" select="number(translate(@Days_x0020_Left,',',''))" />
<script type="text/javascript">
var d = new Date();
var StrDaysToDue = &apos;<xsl:value-of disable-output-escaping="no" select="$StrDaysLeft" />&apos;;
var DaysToDue = &apos;<xsl:value-of disable-output-escaping="no" select="$NbDaysLeft" />&apos;;
var DaysToToday = (d.getTime() / 86400000);
if (StrDaysToDue == &quot;No due date&quot;)
{
document.write (StrDaysToDue);
}
else
{
var NumberOfDaysLeft = Math.round((DaysToDue - DaysToToday)*10)/10;
if (NumberOfDaysLeft &gt;= 0)
{
document.write (NumberOfDaysLeft);
}
else
{
document.write (&quot;OVERDUE! &quot; + NumberOfDaysLeft);
}
}
</script>
</DIV>

und es hat auch prima funktioniert. Unter Site Asstes, wo ich die Wep Part Page abgelegt habe, wurde dann auch schön in Tagen die Differenz zw Deadline und Today angezeigt (z.B. 4.5 oder 15.6 oder auch -10.1). So weit eigentlich auch alles gut.

Nun aber die Ernüchterung:

Die Ampeln standen immernoch au grün, eigenlich sollten sie ja jetzt andere Farben einnehmen, aber da ich sie in der Liste kreiert habe und dann die Liste in die Web Part Page eingefügt und darauf dann im Designer das java angesetzt habe, vermute ich, dass die Ampeln, resp das dafür im CEWP hinterlegte Java nur in der Liste funktioniert und nicht im WebPart. Das ist natürlich nicht so sexy, zumal ich die WebPartPage ja in SHP schlecht bearbeiten kann.

Hat mir jemand eine Lösung, wie die Ampeln auf das neu definierte Days Left feld (also die schönen Zahlen, nicht 15000ner Zahlen) zugreifen kann??

Hab dafür auch extra oberdetailliert beschrieben ;)

besten Dank schon im voraus

Lg

Simon