Dieses Skript zeigt, wie man zur Laufzeit Daten simuliert, die so eigentlich gar nicht in der Datenbank stehen. Die Daten werden dazu in einem Skript geladen und dann der regulären Logik von PRINT+PLUS hinzugefügt.
Konfiguration
Das Skript wird als AfterLoadData ausgeführt
Für das Skript ist ein Unterdatensatz mit "Andere Daten" konfiguriert:
Ideen
Es werden C#-Objekte erzeugt, die aus anderen Quellen gefüllt werden können. Dies kann zum Beispiel ein entsprechender Dialog oder auch ein Webservice sein
Die C# Objekte werden als sog. ObjectView an PRINT+PLUS übergeben
Skript
// Version 5namespaceRuthardt.PrintPlus.Skripting{usingSystem;usingSystem.Collections.Generic;usingSystem.Data.SqlClient;usingSystem.IO;usingSystem.Linq;usingSystem.Windows.Forms;usingRuthardt.CobraBase.Functions.Access.Ado;usingRuthardt.CobraFramework.Ado;usingRuthardt.PrintPlus.Export.Context;usingRuthardt.PrintPlus.Model;usingRuthardt.PrintPlus.Model.Interfaces;usingRuthardt.PrintPlus.Model.Enumerations;publicclassDialogScript:IScriptAction {publicvoidExecute(IPrintContext printContext,ICurrentContext currentContext,IChildContext childContext) { // erzeuge zwei Objektevar o1 =newM { SuperId = (int) currentContext.Data.CurrentKey, Message ="Meldung 1" };var o2 =newM { SuperId = (int) currentContext.Data.CurrentKey, Message ="Meldung 1" }; // erzeuge jeweils eine ObjectView (Reflection-basierte Wrapper auf die Objekte) var ov1 = new ObjectView(o1, "SuperId"); // SuperID soll hier unser PK des Objekts sein, falls man mehrfach verschachtelt
var ov2 =newObjectView(o2,"SuperId"); // Füge die Objekte in den virtuellen Context eincurrentContext.AddChildContext("Message", ov1);currentContext.AddChildContext("Message", ov1); } }}
In der Vorlage kann eine normale Untervorlage für den Unterdatensatz verwendet werden.