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 verwendenimport win32com.clientund setzen das Paketpywin32voraus. 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 #
- iScript – EULANDA-Objektmodell
- ADO-Konstanten – ADO-Konstantendefinitionen für Python
- XML-Import – XML-Datenaustausch
- SQL-Registry – Registry-Zugriff per SQL