Formel mit Datenbankfeldern

Das Textverarbeitungsprogramm

Moderator: Moderatoren

nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Formel mit Datenbankfeldern

Beitrag von nullfreizeit »

Hallo zusammen,

ich binde per Base Abfrage ein paar Zahlenwerte in eine Writervorlage ein. Der Ausschnitt zeigt die eingefügten Daten in eine Writer-Tabelle was alles problemlos klappt, nur scheint Writer diese Daten nicht in einer Formel summieren zu können. In dem rotgekennzeichnetem Feld steht die Formel "=SUMME(<D11:D13>)", insofern müsste er 0 + 1104,40 + 63,80 ausrechnen können, er errechnet aber 0,00 €

Hat jemand eine Idee wie ich das Problem lösen kann? Vielen Dank schon jetzt für Rückantworten!

Bild

Gruss
Andre
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey André,

könnte daran liegen, dass du mit den Feldern keine Zahlen sondern Texte einfügst. Eine Lösung könnte ich dir auf Anhieb auch nicht nennen, es könnte aber die Ursache sein.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

Hallo Toxitom,

nein leider nicht.
Die Werte sind in Base im Typ "Zahl [NUMERIC]".

Writer scheint gar nicht damit rechnen zu können!?!
Gibt es andere Möglichkeiten die Summe zu errechnen?
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

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]"
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

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
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

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:
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

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
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

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!?!
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

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.
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

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.
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

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?
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

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.
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

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:
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

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
nullfreizeit
**
Beiträge: 47
Registriert: Mi, 01.02.2006 12:11
Wohnort: OO 2.2.0

Beitrag von nullfreizeit »

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
Antworten