Documentation
Back to website >

Client.Print (iScript)

Client.Print (iScript)

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

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

Parameter

Soweit nichts anderes angegeben ist, wird nur auf die jeweils aktuelle EULANDA-Version eingegangen bzw. diese vorausgesetzt.

Report

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

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()" ü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:

ReportTypeSubTypeBemerkung
cnsoft.Adresse.StammdatenMULTILISTData wird als Menge von Daten interpretiert
cnsoft.Artikel.Stat.ErloesGr.AktuellesJahrEMBEDDEDData wird ignoriert. Alle Daten werden innerhalb des Reports erzeugt
cnsoft.Auftrag.AuftragsbestaetigungMULTISINGLEOBJECTData 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:

WertBeschreibungBemerkung
IntegerGanzzahlen werden als IDs interpretiert. Es wird dann ein einzelner Datensatz gedruckt - sofern dies dem Reporttyp entspricht
Objekt: DatasetEin 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.
Optionenstringhandelt 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

WertBeschreibungBemerkung
"" (Leerstring)Aufruf der Druckbox
PREVIEWDruckvorschau
PRINTERDrucker
FILEAusgabe als DateiPDF, CNARP, TXT, FAX, PRN (Druckerspezifisch)
EMAILPDF als Emailsiehe auch Beispiel G
FAXFaxausgabe(veraltet, in neuen Projekten nicht verwenden)
( target1, target2 ...)mehrere Targets in Klammern durch Komma getrenntAnzeige 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.

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
FileFormatDateiformat
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
AttachmentFilenameName des zu 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"

Ein Optionen-String mit folgenden möglichen Parametern:

Name der OptionBeschreibung
FaxNumberFaxnummer 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: Die arbeitsplatzabhängige Druckergruppen-Einstellung lassen sich auch ohne Skripts über die SQL-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