Hallo Welt,
wenn ich im Python-Makro eine Datenbak-Funktion anwende und dabei die Suchkriterien eine Null enthalten, gibt das Makro eine andere Anwort als die Funktion im Tabellenblatt selbst.
Hier ist das Tabellenblatt:
| Nummer | Platz | Art | |
|---|---|---|---|
| z[0-9]+ | Reis | ||
| Nummer | Platz | Art | |
| 1 | z01 | Reis | |
| 2 | z10 | Reis | |
| 3 | a01 | Reis | |
| 4 | a10 | Reis | |
| Anzahl im Regal Z | |||
| berechnet mit Formel im Blatt: | 2 | ||
| berechnet mit Formel im Makro: | 0 |
Die Formel im Tabellenblatt lautet:
=DBANZAHL2($D$5:$F$9;"Nummer";$D$1:$F$2)
Dies ist das Python-Makro:
def db_funktionen(*_):
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.Sheets['Tabelle1']
createUnoService = XSCRIPTCONTEXT.ctx.ServiceManager.createInstance
fa = createUnoService("com.sun.star.sheet.FunctionAccess")
z_platz = "z[0-9]+"
sheet['E2'].setString(z_platz)
datenbank = sheet['$D$5:$F$9']
kriterien = sheet['$D$1:$F$2']
anzahl = fa.callFunction("DCOUNTA", (datenbank, "Nummer", kriterien))
sheet['D14'].setString(anzahl)
“Reguläre Ausdrücke in Formeln ermöglichen” ist in den Optionen unter → Calc → Berechnen angeklickt.
Nun erläutert die Calc-Hilfe zum Thema Datenbankfunktionen, dass Zeichenfolgen-Kriterien zunächst in Zahlen umgewandelt werden. Um zu erreichen, dass der reguläre Ausdruck aber als solcher ausgewertet wird, solle man einen Ausdruck verwenden, der nicht als numerisch falsch verstanden werden kann. Ist das bei “z[0-9]+” nicht gegeben? Wer weiß Rat?
Hier ist die Datei:
db-funktionen.ods (13.7 KB)