CreateStatisticEntry

Navigation:  Statistiken > Skripts für Statistikgenerierung >

CreateStatisticEntry

Previous pageReturn to chapter overview

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.

 

Parameter

Parameter

Typ

Beschreibung

 

st

tbl_Statistik_Settings

Beinhaltet die Einstellungen. Nur erforderlich für Scripts die auf die Filtereinstellungen zugreifen oder das zuletzt berechnete Datum in den Einstellungen speichern.


dc

DC_AllgemeinDataContext

Der Datenkontext für den Zugriff auf die Datenbank.


prg

IProgress(of TaskProgress)

Schnittstelle zur Rückmeldung des Fortschritts


ctx

CancellationToken

Token für kontrollierten Abbruch wenn Skript während der Ausführung gestoppt werden soll. z.B. beim Abbruch des Jobs oder herunterfahren des Servers.


 

Ausgabe

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])

Parameter

Typ

Beschreibung

 

[Datum]

DateTime

Das 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]

boolean

Pflichtfeld.

Ja / Nein


st.ID

bigint / Int64

Die ID der Statistik.

Hier muss zwingend st.ID verwendet werden.


[Unterkategorie]

bigint / Int64

Pflichtfeld.

ID für Unterkategorie. Wenn keine Unterkategorie verwendet wird muss der Wert auf 0 gesetzt werden.


[Gruppe]

string

Pflichtfeld.

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