VB Script Editor

Eine wesentlich komfortablere Variante der Erstellung von VB Script Macros erreicht man über den Button "Edit script" in der Maske Interface-Definition.

 

Die Wirkungsweise soll anhand des nachfolgenden Beispiels erläutert werden:

In unserem Beispiel soll der Techniker "Schulz" alle seine Vormerkungen per Email bekommen. Ist allerdings keine Vormerkung für einen Einsatz vorhanden, soll auch keine Nachricht generiert werden.

 

Dafür könnte man folgendes Select als Export Definition verwenden:

SELECT count(*) AS counter, 'Vormerkungen' AS subject, 'schulz' AS postoffice

 FROM tkdauf a, einsatz e

 WHERE a.aufnr = e.auflfdnr and e.techniker like 'Schulz%'

Diese Abfrage gibt die Anzahl der Vormerkungen und die für den Techniker "Schulz" zurück.

Dem Feld To für SMTP-Mail wird hier eine Funktion mit dem Namen postoffice zugewiesen. Die Funktion entscheidet anhand der Anzahl an Vormerkungen, ob eine Email an den Techniker "Schulz" verschickt werden soll. Ist keine Vormerkung vorhanden wird einfach eine unbekannte Adresse verwendet, hier  im Beispiel "nirwana".

Über die VB-Collection "ColExport" kommt man an alle Inhalte der Felder, die in der Export Definition angegeben wurden, in diesem Beispiel: counter, subject und postoffice.

Hinweis:

Die Funktionen müssen mit "Function " beginnen, sonst werden sie nicht als VB Script-Macros erkannt.

Mit dem Button "Run script"  kann das Script auf Fehler in der Syntax untersucht werden. Bitte beachten, bei der beschriebenen Funktion "postoffice" ist das jedoch nicht möglich, da die Collection "ColExport" zwar initialisiert wurde, aber noch keine Werte zugewiesen wurden. Die Werte werden erst zur Laufzeit zugewiesen.

Jetzt muss noch ein VB-Script geschrieben werden, das den Inhalt für "Body" erzeugt. Das könnte etwa wie folgt aussehen:

 

Function Column004()

   Dim sText

   Dim oSession

   Dim oCommon

   Dim rsAuftrag

 

   Set oSession = CreateObject("SACSSessionNET.Session")

   Call oSession.Init("database", "user", "password")

 

   Set oCommon = CreateObject("SABSCommonNET.Common")

   Set rsAuftrag = oCommon.GetList(oSession, 6, 9, 0, "select distinct 'Auftrag ' + cast(a.aufnr as varchar) + ' Prio ' + cast(e.prio as varchar) as subject, a.bemerkung from tkdauf a, einsatz e where a.aufnr = e.auflfdnr and e.techniker like 'Schulz%'")

   Set oCommon = Nothing

   Set oSession = Nothing

 

   sText = ""

   While Not rsAuftrag.EOF

      sText = sText & rsAuftrag("subject") & vbCrLf & "      " & rsAuftrag("bemerkung") & vbCrLf

      rsAuftrag.MoveNext

   Wend

   Set rsAuftrag = Nothing

 

   Column004 = sText

End Function

 

Diese Funktion verwendet die Com-Objekte SACSSessionNET.Session und SABSCommonNET.Common, die zum Lieferumfang von SIMEX Pro gehören. Das Session_Objekt initialisiert das zugrundeliegende Framework. Unter anderem wird ermittelt, ob ein Trace-File erzeugt werden soll. Über das Common-Objekt wird das Recordset-Objekt zurückgegeben.