Menü

Client.Print (iScript)

Zurück | Ebene zurück

procedure Client.Print(Report, Data, Target, Targetinfo)

function Client.Print(Report, Data, Target, Targetinfo, Optionen)  V4.5

Parameter

Soweit nichts anderes angegeben ist, wird nur auf die jeweils aktuelle EULANDA-Version eingegangen bzw. diese vorausgesetzt. Einige Features sind erst in der kommenden EULANDA-Version verfügbar. Diese sind mit V4.5 gekennzeichnet. Diese können allerdings teilweise mit dem Plugin "Feature Preview 2012" getestet werden. 

Der Parameter Optionen ist ab V4.5 verfügbar

Report

Der Name  des zu druckenden Reports - nicht zu verwechseln mit dem Anzeigenamen im Menü.

Ab Version 4.5: Der Berichtsname kann leer gelassen werden. Dann wird der jeweilige Standardbericht verwendet. In diesem Fall kann als "Data"-Parameter allerdings keine einzelne ID übergeben werden. Alternativ kann auch die Funktion "default(<dataobjectname>)" übergeben werden.

Data

Die zu druckenden Daten. Je nach verwendetem Report kann hier ein einzelnes Objekt oder eine ganze Menge von Daten angegeben werden. Andere Reports wiederum erzeugen die Daten komplett selbst. In diesem Fall wird die Angabe Data ingnoriert. Beispiele:

Report Type SubType Bemerkung
cnsoft.Adresse.Stammdaten MULTI LIST Data wird als Menge von Daten interpretiert
cnsoft.Artikel.Stat.ErloesGr.AktuellesJahr EMBEDDED   Data wird ignoriert. Alle Daten werden innerhalb des Reports erzeugt
cnsoft.Auftrag.Auftragsbestaetigung MULTI SINGLEOBJECT Data wird als einzelner Datensatz interpretiert. Bei Übergabe eines Datasets wird nur der aktuelle Datensatz gedruckt

Mögliche Werte oder Arten von Werten für Data:

Wert Beschreibung Bemerkung
Integer Ganzzahlen werden als IDs interpretiert. Es wird dann ein einzelner Datensatz gedruckt - sofern dies dem Reporttyp entspricht  
Objekt: Dataset Ein Objekt des Types DATASET wird abhängig vom Reporttyp als einzelner Datensatz oder als Menge interpretiert. Das Dataset-Objekt kann selbst erstellt sein oder über den Kontext eines Menü-Actions ermittelt worden sein.
 
Optionenstring handelt es sich bei „DATA“ um einen String, so muss dies ein Optionen-String sein. Hier wird momentan jedoch nur ein einziger Parameter ausgewertet (siehe nachfolgende Tabelle)  

Einzig möglicher Parameter, wenn Data ein String ist:

Name der OptionBeschreibung
SQL_IDs

SQL-Ausdruck, der eine Liste von IDs (Integer-Werten) zurück gibt. Beispiel:

SQL_IDS=(select top 10 id from adresse)

Siehe auch Beispiel E

Target

Wert Beschreibung Bemerkung
"" (Leerstring) Aufruf der Druckbox  
PREVIEW Druckvorschau ab Version 2.5
PRINTER Drucker  
FILE Ausgabe als Datei PDF, CNARP, TXT, FAX, PRN (Druckerspezifisch)
EMAIL PDF als Email siehe auch Beispiel G
FAX Faxausgabe ab Version 4.0
( target1, target2 ...) mehrere Targets in Klammern durch Komma getrennt Anzeige der Druckbox mit lediglich den angegebenen Ausgabezielen

Targetinfo

Zusätzliche Verarbeitungsparameter - abhängig vom gewählten „TARGET“

Es ist möglich mehrere Optionen in TargetInfo zu übergeben. Dies erfolgt nach folgendem Muster:

optionsname1="OptionsWert1";OptionsName2="Wert2"; ...

Diese Wertepaare lassen sich bequem über das Options-Objekt zusammenstellen (V4.5).

Target = "FILE"

entweder der Dateiname oder ein zusammengesetzter Options-String mit einem oder mehreren der nachfolgend aufgeführten Parameter.

Name der OptionBeschreibung
FileNameDateiname der zu exportierenden Datei
FileFormat Dateiformat
Printernameexakter Druckername
ProfileName der Druckergruppe

Target = "PRINTER"

entweder die Druckergruppe oder ein Optionen-String mit folgenden möglichen Parametern:

Name der OptionBeschreibung
CopiesAnzahl der Kopien
LetterheadFormularname des Briefkopfes
Printernameexakter Druckername
ProfileName der Druckergruppe
SQL_IDsSQL-Ausdruck, der die Liste der zu druckenden IDs zurückgibt

Target = "EMAIL"

Ein Optionen-String mit folgenden möglichen Parametern:

Name der OptionBeschreibung
AttachmentFilename Name des zue generierenden Dateianhangs
MailBodyText (Inhalt) des Emails
SubjectBetreff des Emails
AddressEmail-Adresse des Empfängers
RcptNameAnzeigename des Empfängers
EditBeforeSendEmail soll vor dem Senden noch bearbeitet werden. Es wird dann ein Dialogfensters des jeweiligen Email-Programmes angezeigt

Target = "FAX"

Fax-Ausgabe über diese API ist ab EULAND 4.0.2 verfügbar. Ein Optionen-String mit folgenden möglichen Parametern:

Name der OptionBeschreibung
FaxNumber Faxnummer des Empfängers

Beispiele

A. Drucken mit Druckbox

Ausdruck der Auftragsbestätigung zum aktuellen Auftrags mit Anzeige der Druckbox

VBScript
Reportname = "cnsoft.Auftrag.Auftragsbestaetigung" 
Client.Print Reportname, Dataset, "", ""

B. Drucken auf Druckergruppe

Ausdruck auf direkt auf den Drucker. Es werden die Einstellungen der Druckergruppe "Geschaeftspapier" verwendet. D.h. z.B. das digitale Briefpapier, die Schachtauswahl und der Drucker selbst. Wenn keine Druckergruppe angegeben wird nimmt Eulanda die Einstellungen aus der Druckergruppe, die dem Report zugeordnet ist.

VBScript
Reportname = "cnsoft.Auftrag.Auftragsbestaetigung" 
Client.Print Reportname, Dataset, "PRINTER", "Geschaeftspapier"

C. Anzeige der Druckvorschau

VBScript
Reportname = "cnsoft.Auftrag.Auftragsbestaetigung" 
Client.Print Reportname, Dataset, "PREVIEW", ""

D. Ausgabe als PDF (Portable Document Format)

In diesem Beispiel wird der aktuelle Auftrag als PDF-Datei auf dem Desktop gespeichert. Zum Ermitteln des Desktop-Verzeichnisses wird das WScript.Shell-Objekt von Windows instanziert. Als Abschluss wird dem Benutzer ein Hinweis ausgegeben, wo die Datei liegt.

VBScript Kontext: Auftragsmodul

DesktopFolder = Client.Properties("Folder.Desktop")

Reportname = "cnsoft.Auftrag.Auftragsbestaetigung"
Filename = "Auftrag" & Dataset.Values("Kopfnummer") & ".pdf"
Filepath = DesktopFolder & "\" & Filename

Client.Print Reportname, Dataset, "FILE", Filepath
 
MsgBox "Die Auftragsbestätigung wurde als '" & Filename &_
   "' auf dem Desktop gespeichert"


E. Drucken einer Adressliste über eine SQL-Bedingung

VBScript
Reportname = "cnsoft.Adresse.TelefonListe"
SelectIDs = "(SELECT TOP 10 id FROM Adresse WHERE ISNULL(Email,'')='')"
Client.Print Reportname, "SQL_IDS=" & SelectIDs, "PREVIEW",""

F. Druck-Steuerung anhand von PC und Benutzername

Hier wird zuerst der aktuelle Benutzername und der Arbeitsplatzname (PcName) aus den Windows-Umgebungsvariablen ermittelt. Je nach dem von welchem PC das Skript aufgerufen wird ermittelt es eine andere Druckergruppe über die SELECT/CASE-Struktur. Auf diese Weise kann arbeitsplatzabhängig ein anderer Drucker angesprochen werden. Der Benutzername wird in diesem Beispiel nicht weiter ausgewertet. Das kann aber analog zum PcNamen erfolgen.

Hinweis: Ab EULANDA Version 2.7 lässt sich arbeitsplatzabhängige Druckergruppen-Einstellung auch ohne Skripts über die Registry erreichen.

VBScript Kontext: Auftragsmodul
option explicit 'strenge Prüfung der Variablennamen

' Ermitteln von Benutzer- und PC-Namen aus den
' Windows-Umgebungsvariablen
dim WshShell, objEnv, pcname, username
set WshShell = CreateObject ("WScript.Shell")
set objEnv = WshShell.Environment("PROCESS")
pcname = objEnv("COMPUTERNAME")
username = objEnv("USERNAME")

dim Druckergruppe, Reportname

Reportname = "cnsoft.Auftrag.Auftragsbestaetigung"

' Für den Arbeitsplatz LAGER und EINKAUF wird eine spezielle
' Druckergruppe verwendet. Ansonsten wird die Standardgruppe
' verwendet. TIPP: In einem CASE-Zweig können auch mehrere Variablen 
' gesetzt werden. 
select case pcname
  case "LAGER"
    Druckergruppe = "VORGANG_LAGER"
  case "EINKAUF"
    Druckergruppe = "VORGANG_EINKAUF"
    ' Reportname = "cnsoft.Auftrag.AuftragsKopie"
  case else
    Druckergruppe = "VORGANG"
end select

Client.Print Reportname, Dataset, "PRINTER", Druckergruppe

G. Drucken an Email

Das nachfolgende Beispiel gibt die aktuelle Auftragsbestätigung als PDF per Email aus. Alle relevanten Email-Felder können beeinflusst werden.  Das Skript kann im iScript-Editor im Auftragsmodul direkt ausgeführt werden. Ebenso kann es als Menüaktion dauerhaft hinterlegt werden.

VBScript Kontext: Auftragsmodul
option explicit

sub MailAB

dim ReportName, AttachmentName, MailBody, Options, Email, Subject, Nr

  ' Berichtsname
  ReportName = "cnsoft.Auftrag.Auftragsbestaetigung"
  ' Auftragsnummer
  Nr = CStr(Dataset.Values("KopfNummer"))
  ' Emailadresse des Kunden ermitteln
  Email = Client.ExecuteSql("SELECT Email FROM Adresse WHERE id = " &_
     CStr(Dataset.Values("AdresseId"))).Fields("Email")
  ' Der im Email angezeigte Name der PDF-Datei
  AttachmentName = "AB_" & Nr
  ' Email-Betreff
  Subject = "Auftragsbestätgung " & Nr
  ' Haupttext des Email
  MailBody = "Anbei die angeforderte Auftragsbestätigung"
  ' Die Parameter nun als Optionen-String zusammengebaut
  Options = "AttachmentFilename=" & AttachmentName & ";MailBody=" &_
  MailBody & ";Address=" & Email & ";Subject=" & Subject
  ' Auftragsbestätigung per Email versenden
  Client.Print ReportName, Dataset, "EMAIL", Options

end sub

If Dataset.State = 3 Then
  MailAB
Else MsgBox "Bitte wählen Sie zuerst einen Auftrag aus"
End If

H. Ausgabe im MDI-Format (Microsoft Office Document Image)

Mit diesem Beispiel wird die Liste der offenen Aufträge als MDI-Datei auf dem Desktop ausgegeben und angezeigt. Eine entsprechende Microsoft-Office-Version wird dabei vorausgesetzt. Über das Dateiformat „PRN“ wird Eulanda angewiesen die Daten im Druckerspezifischen Format auszugeben.

Der Befehl ist unabhängig von einem bestimmten Programmmodul und kann dementsprechend an beliebiger Stelle im iScript-Editor ausgeführt oder als Menü-Action fest hinterlegt werden.

VBScript Kontext: allgemein
option explicit

dim fn, options
' Ermitteln des Dateinamens
fn = Client.Properties("Folder.Desktop") & "\OffeneAufträge.mdi"
' Ausgabeparameter zusammensetzen
options  = "FILENAME=" & fn & ";FILEFORMAT=PRN;PrinterName=Microsoft Office Document Image Writer"
' Ausdruck als Datei unter Angabe von Optionen
Client.Print "cnsoft.Auftrag.OffeneAuftraege", 0, "FILE", options

I. Abfangen der Druckbox  (V4.5)

Hierbei wird die normale Druckbox für einen beliebigen Bericht angezeigt. Nach betätigen von "OK" durch den Benutzer wird allerdings keine weitere Verarbeitung durchgeführt. Stattdessen werden alle vom Benutzer ausgewählten Optionen zurückgegeben, um beispielsweise benutzerdefinierte Druckvorgänge realisieren zu können

VBScript Kontext: allgemein
option explicit

' TODO