CreateStatisticEntry2

Navigation:  Statistiken > Skripts für Statistikgenerierung >

CreateStatisticEntry2

Previous pageReturn to chapter overviewNext page

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

Parameter von p

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.


InsertOrUpdate()

Sub

Speichert die Statistikdaten.


 

Ausgabe

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

p.InsertOrUpdate([Datum], [Wert], [MinimumWert], [MaximumWert], [istGeschätzt], [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


[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 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