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 5
namespace Ruthardt.PrintPlus.Skripting
{
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using Ruthardt.CobraBase.Functions.Access.Ado;
using Ruthardt.CobraFramework.Ado;
using Ruthardt.PrintPlus.Export.Context;
using Ruthardt.PrintPlus.Model;
using Ruthardt.PrintPlus.Model.Interfaces;
using Ruthardt.PrintPlus.Model.Enumerations;
public class DialogScript : IScriptAction
{
public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
{
// erzeuge zwei Objekte
var o1 = new M
{
SuperId = (int) currentContext.Data.CurrentKey, Message = "Meldung 1"
};
var o2 = new M
{
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 = new ObjectView(o2, "SuperId");
// Füge die Objekte in den virtuellen Context ein
currentContext.AddChildContext("Message", ov1);
currentContext.AddChildContext("Message", ov1);
}
}
}
In der Vorlage kann eine normale Untervorlage für den Unterdatensatz verwendet werden.