CreateStatisticEntry
CreateStatisticEntry
Section titled “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.
Parameter
Section titled “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
Section titled “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 SubQuelle
Section titled “Quelle”- Ursprungsdatei: createstatisticentry.htm