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