Skip to content

CreateStatisticEntry2

Dieses Skript läuft täglich um Mitternacht und wird dazu verwendet neue Einträge für Statistiken zu generieren.

Die einzige Aufgabe von Sub CreateStatisticEntry2 ist es, anhand der bereitgestellten Parameter täglich Daten in die Statistiktabelle zu schreiben.

Public Shared Sub CreateStatisticEntry2(p as Statistics.CreateStatisticsEventArgs)
End Sub
ParameterTypBeschreibung
sttbl_Statistik_SettingsBeinhaltet die Einstellungen. Nur erforderlich für Scripts die auf die Filtereinstellungen zugreifen oder das zuletzt berechnete Datum in den Einstellungen speichern.
dcDC\_AllgemeinDataContextDer Datenkontext für den Zugriff auf die Datenbank.
prgIProgress(of TaskProgress)Schnittstelle zur Rückmeldung des Fortschritts
ctxCancellationTokenToken für kontrollierten Abbruch wenn Skript während der Ausführung gestoppt werden soll. z.B. beim Abbruch des Jobs oder herunterfahren des Servers.
InsertOrUpdate()SubSpeichert die Statistikdaten.

Die Ausgabe erfolgt durch schreiben von Daten in die Statistiktabelle mit der Funktion:

p.InsertOrUpdate(\[Datum\], \[Wert\], \[MinimumWert\], \[MaximumWert\], \[istGeschätzt\], \[Unterkategorie\], \[Gruppe\])

ParameterTypBeschreibung
[Datum]DateTimeDas Datum für den Statistikeintrag.
Es sollte die Zeitkomponente entfernt werden. (00:00 Uhr)
[Wert]Decimal(18,2)Wert (Pflichtfeld)
Eintrag wird bei "nothing" gelöscht.
[minimumWert]Decimal(18,2)Optionaler Wert
[maximumWert]Decimal(18,2)Optionaler Wert
[istGeschätzt]booleanPflichtfeld.
Ja / Nein
[Unterkategorie]bigint / Int64Pflichtfeld.
ID für Unterkategorie. Wenn keine Unterkategorie verwendet wird muss der Wert auf 0 gesetzt werden.
[Gruppe]stringPflichtfeld.
Die Gruppe bzw. die Serie der Statistik. Falls keine Gruppierung verwendet wird muss eine beliebige Zeichenfolge übergeben werden. z.B. ""

Das folgende Beispiel generiert die Statistik für den Lagerstand pro Warengruppe.

Beispiel

Public Shared Sub CreateStatisticEntry2(p as Statistics.CreateStatisticsEventArgs) Dim EvaluatedDay = p.dc.GetServerTime.Value.AddDays(-1) If Not p.st.StartTime Is Nothing Then EvaluatedDay = p.st.StartTime End If EvaluatedDay = Styletronix.Utils.DateTimeHelper.Truncate(EvaluatedDay, TimeSpan.TicksPerDay) Dim QueryDatum As DateTime = EvaluatedDay.AddDays(1) Do Until QueryDatum > If(p.dc.GetServerTime, DateTime.Now) For Each g In (From a In p.dc.tbl_Warengruppen Where a.keineLagerstatistik Is Nothing OrElse a.keineLagerstatistik = False) Dim SummeEK As Decimal = 0 Dim SummeVK As Decimal = 0 Dim Zwischensumme As Decimal = 0 p.prg.Report(New Styletronix.Threading.TaskProgress(0, String.Format("Lagerstand für Warengruppe {0} und Datum {1} erfassen...", g.Bezeichnung, QueryDatum.ToShortDateString))) For Each art In (From a In g.tbl_Artikel) p.ctx.ThrowIfCancellationRequested() For Each lager In (From a In dc.tbl_Lagers) Dim Menge = p.dc.Artikel_Lagerstand_Datum(art.ID, lager.ID, QueryDatum) ' Where a.UnterLager Is Nothing).FirstOrDefault Zwischensumme = (Menge * art.EK_ProLagereinheit) If Zwischensumme > 0 Then SummeEK += Zwischensumme Zwischensumme = (Menge * art.VK_ProLagereinheit) If Zwischensumme > 0 Then SummeVK += Zwischensumme Next Next p.InsertOrUpdate(QueryDatum, (SummeEK + SummeVK) / 2, SummeEK, SummeVK, False, 0, g.Bezeichnung) Next p.st.StartTime = QueryDatum p.dc.SubmitChanges() QueryDatum = p.st.StartTime.Value.AddDays(10) Loop End Sub
  • Ursprungsdatei: createstatisticentry2.htm