Scripting Host
Zuletzt geändert: 14.03.2026 15:10

Scripting Host (Python) #

Python-Beispiele für den Zugriff auf EULANDA über COM-Automation. Die Objektreferenz finden Sie unter iScript / Scripting Host.

Alle Beispiele auf dieser Seite verwenden import win32com.client und setzen das Paket pywin32 voraus. Installation und Einrichtung sind unter Python beschrieben.

Mandanten auflisten #

Listet alle verfügbaren EULANDA-Mandanten auf.

import win32com.client

app = win32com.client.Dispatch("Eulanda.Application")

for i in range(app.ClientCount):
    print(f"{i + 1}. {app.Clients(i).Alias}")

app = None

Adresse abfragen #

Sucht die erste Adresse, deren Matchcode mit “b” beginnt, und zeigt die Kontaktdaten an.

import win32com.client

app = win32com.client.Dispatch("Eulanda.Application")
cli = app.Clients(0)
cli.Active = True

ds = cli.CreateDataset("Adresse")
ds.Search()
ds.Values("Match").Value = "b*"
ds.Post()

print(f"Ort:   {ds.Values('PLZ').Value} {ds.Values('Ort').Value}")
print(f"Tel:   {ds.Values('Tel').Value}")
print(f"Match: {ds.Values('Match').Value}")
print(f"EMail: {ds.Values('EMail').Value}")

ds = None
cli = None
app = None

Zugriff auf Script-Bibliotheken #

Zugriff auf ellib, userlib und andere Bibliotheken von Python aus:

import win32com.client

app = win32com.client.Dispatch("Eulanda.Application")
client = app.Clients("MeinMandant")
client.Active = True

context = client.CreateObject("Context")
context.userlib.HelloWorld()

context = None
client = None
app = None

Die Eigenschaft client.Properties("FOLDER.DESKTOP") liefert z.B. den Desktop-Pfad. Eine Übersicht aller Properties finden Sie unter Client.Properties.

SQL-Abfragen über ADO #

Für direkte Datenbankzugriffe kann eine ADO-Verbindung verwendet werden. Der ConnectionString wird aus einer UDL-Datei oder den Client-Properties bezogen.

import win32com.client

conn = win32com.client.Dispatch("ADODB.Connection")
conn.Open(
    "Provider=MSOLEDBSQL.1;"
    "Integrated Security=SSPI;"
    "Initial Catalog=EULANDA_MeinMandant;"
    "Data Source=."
)

# Einfache Abfrage
rs = conn.Execute("SELECT TOP 10 Match, Name1, Ort FROM Adresse ORDER BY Match")[0]

while not rs.EOF:
    print(f"{rs.Fields('Match').Value:20s} {rs.Fields('Ort').Value}")
    rs.MoveNext()

rs.Close()
conn.Close()

Adressen mit Umsatz abfragen #

Ein praxisnahes Beispiel: Alle Kunden mit Umsatz im aktuellen Jahr auflisten.

import win32com.client
from datetime import date

conn = win32com.client.Dispatch("ADODB.Connection")
conn.Open(
    "Provider=MSOLEDBSQL.1;"
    "Integrated Security=SSPI;"
    "Initial Catalog=EULANDA_MeinMandant;"
    "Data Source=."
)

jahr = date.today().year
sql = f"""
    SELECT a.Match, a.Name1, SUM(r.GesNetto) AS Umsatz
    FROM Rechnung r
    INNER JOIN Adresse a ON a.ID = r.AdresseID
    WHERE YEAR(r.Datum) = {jahr}
    GROUP BY a.Match, a.Name1
    ORDER BY Umsatz DESC
"""

rs = conn.Execute(sql)[0]

print(f"{'Match':20s} {'Name':30s} {'Umsatz':>12s}")
print("-" * 64)

while not rs.EOF:
    umsatz = rs.Fields("Umsatz").Value or 0
    print(f"{rs.Fields('Match').Value:20s} {rs.Fields('Name1').Value:30s} {umsatz:12.2f}")
    rs.MoveNext()

rs.Close()
conn.Close()

Siehe auch #