Formel mit Datenbankfeldern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Formel mit Datenbankfeldern

von nullfreizeit » Mo, 02.04.2007 12:43

Hallo Stephan,

das klappt super, auch bei längeren Texten und erzielt seinen Zweck (auch wenn es beim Bearbeiten sehr unübersichtlich wird). Aber es läuft jetzt, danke!

Hallo Eia,

sorry, da hatte ich mich wohl etwas unglücklich ausgedrückt.

Euch beiden vielen Dank und noch einen schönen Tag. :D

von Eia » Mo, 02.04.2007 11:32

nullfreizeit hat geschrieben:Unter der Tabelle habe ich dann wieder eine Variable "ergebnis" mit Wert "<Tabelle1.E15>+ergebnis" eingefügt, was mir die Fehlermeldung "Fehlerhafter Ausdruck" ausgibt. Was soll ich denn sonst im Feld Wert schreiben?
Eine Zelladresse ist kein verwertbarer Feldname. Ich war davon ausgegangen, dass die Werte über ein Serienbrieffeld in die Tabelle gelangen. Den Namen dieses Serienbrieffeldes müsstest Du statt <Tabelle1.E15> verwenden.

mfG

von Stephan » Mo, 02.04.2007 11:17

In einer Writer-Tabelle habe ich einen Wert errechnet. Bsp.: 500,00
Wenn der Betrag größer 0 ist soll ein Text "Nachzahlung", andernfalls "Guthaben" erscheinen. Wie löse ich das?
verwende in der Zelle wo sich ohnehin die Berechnung befindet oder in einer Weiteren (wo Du die Berechnung zu diesemZweck wiederholen mußt) ein benutzerdefiniertes Zahlenformat, im konkreten Fall:

also beispielsweise:
#.##0,00 [$€] "Nachzahlung";#.##0,00 [$€] "Guthaben";#.##0,00 [$€] "Guthaben"

oder:
"Nachzahlung";"Guthaben";"Guthaben"




Gruß
Stephan

von nullfreizeit » Mo, 02.04.2007 10:38

Hallo Eia,

erstmal vielen Dank für deine Geduld und Hilfe hier.
Habe deine Idee mal probiert, scheitere aber bei folgendem.

Habe am Anfang des Dokuments die Variable "ergebnis" (natürlich ohne Anführungsstriche auch folgende ohne) mit Wert "0" eingesetzt. Unter der Tabelle habe ich dann wieder eine Variable "ergebnis" mit Wert "<Tabelle1.E15>+ergebnis" eingefügt, was mir die Fehlermeldung "Fehlerhafter Ausdruck" ausgibt. Was soll ich denn sonst im Feld Wert schreiben?

Bild

PS: Hatte gestern auch schon mit Bedingtem Text eine solche WENN-DANN-SONST Kombination probiert, ohne Erfolg:
<Tabelle1.E15> > 0, oder so [Tabelle1.E15] > 0

von Eia » So, 01.04.2007 23:38

Beim Rumgrübeln an dieser Frage ist mir auch noch gleich eine Idee für das Summenfeld gekommen:

Du fügst irgendwo vor der Tabelle eine Variable ein:
Format: das Euro-Format
Name: Saldo
Wert: 0
ankreuzen: unsichtbar

In die Tabellenspalte fügst Du in der Spalte mit den Werten, die summiert werden sollen, nach dem jeweiligen Datenfeld wieder die Variable Saldo ein, wieder unsichtbar, aber mit Wert: Saldo+Name des Datenfeldes.

Eine Variable kann im writer mehrere Instanzen haben und so erhöhst Du den Wert von "Saldo" in jeder Zeile um den neuen Betrag.

Dort, wo die Summe stehen soll, lässt Du nun ganz einfach diese Variable anzeigen. Diese Variable kannst Du dann auch wieder für einen bedingten Text benutzen.

mfG

von nullfreizeit » So, 01.04.2007 21:25

Ich habs gemerkt. Deshalb habe ich mit Writer weitergemacht und bin mit dem Rechnungsformular fast fertig. Eine Frage habe ich aber noch die ich bei der Benutzung von Calc nicht hätte:

In einer Writer-Tabelle habe ich einen Wert errechnet. Bsp.: 500,00
Wenn der Betrag größer 0 ist soll ein Text "Nachzahlung", andernfalls "Guthaben" erscheinen. Wie löse ich das?

In Calc geht das mit WENN(x>0;DANN;SONST) aber das geht ja in Writer nicht! :roll:

von Eia » So, 01.04.2007 20:02

nullfreizeit hat geschrieben:Oha, mit Makros hatte ich noch nie was am Hut.
Ich im Prinzip auch nicht. Jedenfalls nicht, wenn es wirklich um Programmierung geht. Ich setze es nur da ein, wo ich einfache Tastenfolgen mit dem Makro-Recorder aufzeichnen kann, also das gleiche von einem Makro erledigen lasse, was ich auch von Hand tun würde.
Ich probiere gerade dasselbe in Calc zum Laufen zu bringen.

Aber mal eine vielleicht lächerliche Nebenfrage: Wie füge ich da ein Datenbankfeld ein, damit ich wenn ich auf eine Datenbankquelle gehe auch die aktuellen Daten aus der Base Datei in die Calc Tabelle übernehmen kann?
Sowas wie Serienbrieffelder oder Variablen gibt es in Calc nicht. Du kannst markierte Datensätze aus einer Datenbank oder einer Abfrage mit "Daten in Text" übernehmen, dann bekommst Du einfach die Tabelle kopiert.

Ansonsten gibt es wohl noch die Möglichkeit, Daten in Formularfelder zu übernehmen. Aber da kenne ich mich nicht aus, hab noch nie damit gearbeitet.

Aber vielleicht sollte man das, was Du tun möchtest mit Datenbank-Bereichten angehen? Da bin ich aber auch noch sehr schwach. Aber es gibt ein Buch von T. Krumbein dazu.

von nullfreizeit » So, 01.04.2007 15:29

Oha, mit Makros hatte ich noch nie was am Hut. Ich probiere gerade dasselbe in Calc zum Laufen zu bringen.

Aber mal eine vielleicht lächerliche Nebenfrage: Wie füge ich da ein Datenbankfeld ein, damit ich wenn ich auf eine Datenbankquelle gehe auch die aktuellen Daten aus der Base Datei in die Calc Tabelle übernehmen kann?

von Eia » So, 01.04.2007 15:05

Was das erste hier genannte Problem betrifft - SUMME funktioniert nicht - bin ich schonmal so weit gekommen:
Wenn Du zuerst die Tabellenspalte mit "Daten in Felder" ausfüllst und dann im Summenfeld darunter die Summenformel neu eingibst, dann wird gerechnet.
Aber eine Summenformel, die schon besteht, bevor man die Daten in die Felder übernimmt, wird nicht aktualisiert, auch nicht mit F9, wenn man die Daten in die Felder übernimmt.

Man könnte diesen Vorgang aber als Makro aufzeichnen:
Schreibe in der Vorlage in das Summenfeld einen eindeutigen Text, wie #SUMME#
Makroaufzeichnung starten
Bearbeiten/Suchen&Ersetzen, Suche nach: #SUMME#, Ersetzen durch: [leer lassen], ersetze alle
F2 drücken, Formel eingeben, RETURN
Makroaufzeichnung beenden.

von Eia » So, 01.04.2007 14:39

nullfreizeit hat geschrieben: Es scheint so als das Writer nur einmal "Daten in Felder" verkraftet!?!
Ich glaube nicht. Bisher habe ich sowas noch nie gebraucht, aber ich habe mal testweise zunächst das Feld "Autor" aus der Bibliography-DB eingefügt und anschließend das Feld "Email" aus einer Adress-DB, die ich hier habe. Dann habe ich einen Datensatz in der Literatur-DB angeklickt und auf "Daten in Felder gedrückt". Das Feld "Autor" wurde ausgefüllt.
Anschließend habe ich die andere DB aufgeklickt und dort einen Datensatz ins Dokument geschickt und das Feld "email" wurde ausgefüllt, und der Autor aus der anderen DB war immer noch drin.

Ist natürlich eine unsinnige Versuchsstellung, aber scheint mir zu zeigen, dass das Prinzip funktioniert.

von nullfreizeit » So, 01.04.2007 14:25

Hallo Eia,

auf dem Bild sind zwei Variabeln zu erkennen, und da fülle ich die erste unter Datenquellen mit einem Wert aus einer Abfrage, die darunter mit einem Wert ebenfalls aus den Datenquellen aus einer Tabelle.

Habe eben auch nochmal die Variabelnamen geändert mit dem selben Ergebnis. Es scheint so als das Writer nur einmal "Daten in Felder" verkraftet!?!

von Eia » So, 01.04.2007 14:07

Ich kann mir jetzt nicht so recht vorstellen, wie das gemeint ist "Die oberste fülle ich mit einer Base Abfrage, die untere mit einem Feld aus einer Base Tabelle" und kann dazu daher keine Stellung nehmen.
Aber was mit/ohne Klammern betrifft:
Nach meiner Erfahrung braucht man Klammern, wenn man den qualifizierten Namen verwendet:
[Datenbank.Tabelle.Feld]
Beim einfachen Feldnamen kann (sollte?) man auf die Klammern verzichten:
Feld


Bei der Vergabe der Variablen-Namen: hast Du darauf geachtet, keine Namen zu verwenden, die auch in der DB vorkommen?

mfG

von nullfreizeit » So, 01.04.2007 13:51

Hallo Eia,

also das sind ganz normale Seriendruck-Datenfelder.

Dein Tipp mit den Variabeln wollte ich gerade testen da bekam ich schon wieder Gänsehaut über das was Writer da macht. Ich habe einfach im Dokument zwei Variabeln gesetzt (übrigens mit und ohne [] Klammern probiert). Die oberste fülle ich mit einer Base Abfrage, die untere mit einem Feld aus einer Base Tabelle.

Bild

Allerdings füllt er mir sofort wenn ich die Abfrage durchführe in beide den Wert den eigentlich nur die obere Variable erhalten sollte oder besser könnte!?! Wenn ich dann die untere Variable mit der Tabelle fülle erhält die obere 0,00 und die untere ihren richtigen Wert.

Writer spinnt doch! :oops:

von Eia » So, 01.04.2007 12:14

Ich kann jetzt die Konstellation mit der Datenbank-Anbindung nicht nachvollziehen, mein Hinweis ist daher nur ein Tipp, ohne das selbst überprüft zu haben.
Der Writer kann ja in writer-Tabellen rechnen. Aber irgendwie scheint er den Inhalt der Tabellenzelle nicht als Zahl zu erkennen.
Hast Du vielleicht in dieser Zelle noch einen Feldbefehl "nächster Datensatz"?. Wenn ja, probier doch mal, noch eine weitere Tabellenspalte einzufügen und den Feldbefehl dort einzutragen, sodass in der Werte-Spalte wirklich nur Zahlen stehen.
Was Du auch noch probieren könntest: Im writer eine Variable definieren mit dem entsprechenden Zahlenformat und als "Wert" den Namen des DB-Feldes (ohne Anführungszeichen!) erfassen. In der Tabelle verwendest Du dann statt des DB-Feldes die Writer-Variable. Vielleicht kommt das Programm damit besser zurecht.

mfG

von nullfreizeit » So, 01.04.2007 10:02

Hmm, habe es alleine lösen können.

Writer kann Datenfelder in den Writertabellen nicht einfach so per Formel über die Felder summieren. In der Formel müssen die Datenbankfelder summiert werden. Also "=[basedatei.Tabelle.Feld1]+[basedatei.Tabelle.Feld2]"

Nach oben