Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Kalender Woche (KW) bestimmen
#1
Hallo Visam-Team,

Fuer die protokollierung benoetige ich die aktuelle Kalenderwoche.
Es gibt bereits im netz etliche scripte dazu, leider nix was direkt mit visam funktioniert.
Antworten
#2
Bisher hat dieses Script hier immer gute Dienste geleistet:
Code:
Dim KW As Integer = 0

Dim Jahr As Integer = System.DateTime.Now.Year 'oder das Jahr angeben
Dim Monat As Integer = System.DateTime.Now.Month 'Oder den Monat angeben
Dim Tag As Integer = System.DateTime.Now.Day'oder den Tag angeben


Dim DT0 As New System.DateTime(Jahr, Monat, Tag)
Dim TagImJahr As Integer = DT0.DayOfYear

Dim dt1 As New System.DateTime(Jahr, 1, 1)
Dim TagderWocheAnfangJahr As Integer = dt1.DayOfWeek

KW = Cint((((TagderWocheAnfangJahr + 2) Mod 7) + 3 + TagImJahr) \ 7)

If KW = 0 Then
'letztes Jahr ausrechnen
Dim dt2 As New System.DateTime(Jahr - 1, 12, 31)
Dim TagderWocheEndeJahrVorher As Integer = dt2.DayOfWeek
Dim TageLetztesJahr As Integer = dt2.DayOfYear
KW = Cint((((TagderWocheEndeJahrVorher + 2) Mod 7) + 3 + TageLetztesJahr) \ 7)
End If

vdf.writeint 0,0,kw 'wegschreiben des Wertes ins VDF
Antworten
#3
Das funktioniert auch ganz gut bis auf die Jahre mit 53 Kalenderwochen. Da muss noch eine Abfrage rein:


Code:
Dim KW As Integer = 0
Dim Jahr As Integer = System.DateTime.Now.Year
Dim Monat As Integer = System.DateTime.Now.Month
Dim Tag As Integer = System.DateTime.Now.Day

Dim DT0 As New System.DateTime(Jahr, Monat, Tag)
Dim TagImJahr As Integer = DT0.DayOfYear

Dim dt1 As New System.DateTime(Jahr, 1, 1)
Dim dt31 As New System.DateTime(Jahr, 12, 31)

Dim TagderWocheAnfangJahr As Integer = dt1.DayOfWeek
Dim TagderWocheEndeJahr As Integer = dt31.DayOfWeek

KW = Cint((((TagderWocheAnfangJahr + 2) Mod 7) + 3 + TagImJahr) \ 7)

If KW = 0 Then
  Dim dt2 As New System.DateTime(Jahr - 1, 12, 31)
  Dim TagderWocheEndeJahrVorher As Integer = dt2.DayOfWeek

  Dim TageLetztesJahr As Integer = dt2.DayOfYear
  KW = Cint((((TagderWocheEndeJahrVorher + 2) Mod 7) + 3 + TageLetztesJahr) \ 7)
  ElseIf KW = 53 Then
 If TagderWocheAnfangJahr = 4 Or TagderWocheEndeJahr = 4 Then
         Else
          KW = 1
 End If
End If

' Beispiel: Wochendatei erzeugen für Protokollsegment 5
VOK.SetProtDBName 5, "KW_" & KW.ToString() & "_" & system.DateTime.Now.ToString("yyyy")

' Beispiel: Schreiben als ASCII in Gruppe 0
VDF.WriteAscii 0,50,"KW_" & KW.ToString() & "_" & System.DateTime.Now.ToString("yyyy")
Antworten
#4
Hallo an alle.

Frage hierzu: Wo kann man solche Sachen denn bei Visam nachschlagen?
Ein vollständiger Syntax zum Nachschlagen wäre ganz nett. Es steckt so viel Potential in der Script-Engine aber dieses kann man als User irgendwie nicht ausschöpfen, da man den Syntax nicht kennt.

Gibt es Quellen bei Microsoft oder woanders, wo man den vollständigen Syntax oder den größten Teil davon in Erfahrung bringen könnte? Eine Auflistung der verfügbaren Befehle würde auch erstmal reichen.
Antworten
#5
Lightbulb 
(05.10.2012, 13:29)crash0 schrieb: Hallo an alle.

Frage hierzu: Wo kann man solche Sachen denn bei Visam nachschlagen?
Ein vollständiger Syntax zum Nachschlagen wäre ganz nett. Es steckt so viel Potential in der Script-Engine aber dieses kann man als User irgendwie nicht ausschöpfen, da man den Syntax nicht kennt.

Gibt es Quellen bei Microsoft oder woanders, wo man den vollständigen Syntax oder den größten Teil davon in Erfahrung bringen könnte? Eine Auflistung der verfügbaren Befehle würde auch erstmal reichen.
VBScript im klassischen VisAM hat immer auf VBScript von Microsoft basiert.
Ähnlich verhält es sich nun auch mit der 'Script-Programmierung' unter den DotNet-versionen von VisAM. Diese bauen bei den Klassen auf das DotNetFramwork 2.0 (Achtung, bei den VTP Geräten mit Windows CE Betriebssystem, die Compactversion des Frameworks)  sowie als Syntax auf VB.NET auf.
In der Regel kommt man mit dem Befehlsvorrat den wir in der Hilfe angeben auch aus. Gelegentlich wird dann aber doch auf Klassen (wie oben) zum Bsp. im System-Namespace zurückgegriffen. Den können wir natürlich hier alleine vom Umfang her nicht Beschreiben/Dokumentieren, dazu ist er zu mächtig.

Hier der Link zu der Doku von Microsoft

Microsoft Framework 2 Class Library Documentation

Einige links zu freien Büchern und Dokumentationen(OHNE GEWÄHR UND SUPPORT) :

VB2005 Einsteiger Buch bei Microsoft

HTMl-Buch von Galileo

grundlegendes zu VB.NET

einen Anfänger-Kurs beim VBMagazin
Antworten


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste