Skip to content

CreateStatisticEntry

Veraltet. Verwenden Sie für neue Skripts die Funktion CreateStatisticEntry2

Section titled “Veraltet. Verwenden Sie für neue Skripts die Funktion CreateStatisticEntry2”

Dieses Skript läuft täglich um Mitternacht und wird dazu verwendet neue Einträge für Statistiken mit der Funktion dc.InsertOrUpdate\_Statistik() zu generieren.

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

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.

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

dc.InsertOrUpdate\_Statistik(\[Datum\], \[Wert\], \[MinimumWert\], \[MaximumWert\], \[istGeschätzt\], st.ID, \[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
st.IDbigint / Int64Die ID der Statistik.
Hier muss zwingend st.ID verwendet werden.
[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 CreateStatisticEntry(st As tbl_Statistik_Settings, dc As DC_AllgemeinDataContext, prg As IProgress(Of Styletronix.Threading.TaskProgress), ctx As System.Threading.CancellationToken) Dim EvaluatedDay = dc.GetServerTime.Value.AddDays(-1) If Not st.StartTime Is Nothing Then EvaluatedDay = st.StartTime End If EvaluatedDay = Styletronix.Utils.DateTimeHelper.Truncate(EvaluatedDay, TimeSpan.TicksPerDay) Dim QueryDatum As DateTime = EvaluatedDay.AddDays(1) Do Until QueryDatum > If(dc.GetServerTime, DateTime.Now) For Each g In (From a In 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 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) ctx.ThrowIfCancellationRequested() For Each lager In (From a In dc.tbl_Lagers) Dim Menge = 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 dc.InsertOrUpdate_Statistik(QueryDatum, (SummeEK + SummeVK) / 2, SummeEK, SummeVK, False, st.ID, 0, g.Bezeichnung) Next st.StartTime = QueryDatum dc.SubmitChanges() QueryDatum = st.StartTime.Value.AddDays(10) Loop End Sub
  • Ursprungsdatei: createstatisticentry.htm