Feld Versteckter Absatz funktioniert nicht
Moderator: Moderatoren
Feld Versteckter Absatz funktioniert nicht
Hallo
Was mache ich falsch?
In früheren Star/OpenOffice-Versionen habe ich einen Absatz mit der Feldfunktion "Versteckter Absatz" datenbankgesteuert zum Verschwinden gebracht, in dem ich die Bedingung FELDNAME EQ "" eingesetzt habe, wobei FELDNAME ein Feld der verknüpften Datenbank ist. Der Absatz wurde immer dann versteckt, wenn der Feldinhalt leer ist.
Seit dem Upgrade auf OpenOffice.org will das nicht mehr gehen. Der Absatz wird immer angezeigt (Ansicht-Versteckte Absätze = OFF!).
Ich habe ausserdem versucht, das Datenbankfeld vollqualifiziert anzugeben ([Datenkbankname.Abfragename.Feldname]).
Ich habe statt EQ auch == verwendet, statt "" auch ''
Immer dasselbe Un-Resultat: gleichgültig welchen Wert das Datebankfeld Feldname auch hat: Ob leer oder nicht, der Absatz wird angezeigt.
Was mache ich falsch?
Was mache ich falsch?
In früheren Star/OpenOffice-Versionen habe ich einen Absatz mit der Feldfunktion "Versteckter Absatz" datenbankgesteuert zum Verschwinden gebracht, in dem ich die Bedingung FELDNAME EQ "" eingesetzt habe, wobei FELDNAME ein Feld der verknüpften Datenbank ist. Der Absatz wurde immer dann versteckt, wenn der Feldinhalt leer ist.
Seit dem Upgrade auf OpenOffice.org will das nicht mehr gehen. Der Absatz wird immer angezeigt (Ansicht-Versteckte Absätze = OFF!).
Ich habe ausserdem versucht, das Datenbankfeld vollqualifiziert anzugeben ([Datenkbankname.Abfragename.Feldname]).
Ich habe statt EQ auch == verwendet, statt "" auch ''
Immer dasselbe Un-Resultat: gleichgültig welchen Wert das Datebankfeld Feldname auch hat: Ob leer oder nicht, der Absatz wird angezeigt.
Was mache ich falsch?
Besten Dank Lenu für den Tipp!
Ich habe inzwischen herausgefunden, woran es liegt:
Ich hatte für den Serienbrief eine _Abfrage_ (Query) verwendet.
Leere Felder in der Quelltabelle scheinen aber nach einer Abfrage nicht mehr leer zu sein.
Wenn ich die Originaltabelle (einer dBase-Datenbank) als Datenquelle einsetze, funktioniert es.
Dann funktioniert übrigends auch Deine Syntax korrekt.
Ich habe inzwischen herausgefunden, woran es liegt:
Ich hatte für den Serienbrief eine _Abfrage_ (Query) verwendet.
Leere Felder in der Quelltabelle scheinen aber nach einer Abfrage nicht mehr leer zu sein.
Wenn ich die Originaltabelle (einer dBase-Datenbank) als Datenquelle einsetze, funktioniert es.
Dann funktioniert übrigends auch Deine Syntax korrekt.
Hallo,
das scheint ein Bug in OpenOffice 2.0 (auch noch 2.0.2) zu sein. Ich habe verschiedenes ausprobiert: an dem Kriterium "leere Felder" scheint es nicht zu liegen, denn auch wenn man die Bedingung spezifischer formuliert, klappt es nicht. Eher scheint es, dass es mit Abfragen und Fremddatenbanken (zumindest MySQL) prinzipiell nicht funktioniert. Weder mit ODBC noch mit JDBC
Bis Version 1.5 hat es wunderbar geklappt.
Beim Suchen bin ich auf folgendes gestoßen:
http://www.openoffice-suche.de/index.ph ... 3.BCber_OD
irgendwer hat das auch schon als bug berichtet (finde die Seite aber nicht mehr).
weiß jemand mehr?
grüße
das scheint ein Bug in OpenOffice 2.0 (auch noch 2.0.2) zu sein. Ich habe verschiedenes ausprobiert: an dem Kriterium "leere Felder" scheint es nicht zu liegen, denn auch wenn man die Bedingung spezifischer formuliert, klappt es nicht. Eher scheint es, dass es mit Abfragen und Fremddatenbanken (zumindest MySQL) prinzipiell nicht funktioniert. Weder mit ODBC noch mit JDBC
Bis Version 1.5 hat es wunderbar geklappt.
Beim Suchen bin ich auf folgendes gestoßen:
http://www.openoffice-suche.de/index.ph ... 3.BCber_OD
irgendwer hat das auch schon als bug berichtet (finde die Seite aber nicht mehr).
weiß jemand mehr?
grüße
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Hallo laura36,
ich erachte das eher als unwahrscheinlich. Egal ob ich direkt oder per ODBC zugreife, wenn die Bedingung korrekt formuliert wurde klappt dies auch.
Angenommen Du hast im Dokument einen Feldnamen mit der Bezeichnung Adresse1, dann heißt die Bedingung, die vor den Feldnamen eingefügt werden muss, not(Adresse1).
Gruß
Peter
ich erachte das eher als unwahrscheinlich. Egal ob ich direkt oder per ODBC zugreife, wenn die Bedingung korrekt formuliert wurde klappt dies auch.
Angenommen Du hast im Dokument einen Feldnamen mit der Bezeichnung Adresse1, dann heißt die Bedingung, die vor den Feldnamen eingefügt werden muss, not(Adresse1).
Gruß
Peter
Hallo pmoegenb,
Danke für die Antwort.
ich habe es mehrfach getestet. Wie gesagt, am Treiber scheint es nicht zu liegen. Mit der base-eigenen Datenbank habe ich es noch nicht probiert. Allerdings gibt es folgendes Phänomen:
Bei manchen Abfragen funktioniert es tatsächlich. Bei komplexeren Abfragen über mehrere Tabellen klappt es nicht. Der Absatz ist immer sichtbar. Ich hab es ausgiebig in allen möglichen Syntax-Varianten probiert.
Das Verhalten ist leider nicht konsistent. Ist beim ersten Aufruf eines Datensatzes (direkt nach Bearbeitung der Bedingung) alles ok, ändert sich dies beim "Daten in Felder" bei einem nächsten Satz.
Alles rätselhaft.
Zum Formulieren der Bedingung gibt's prinzipiell viele Möglichkeiten
not(Adresse1)
!Adresse1
Adresse1 == ""
manchmal scheinen sich alle etwas unterschiedlich zu verhalten. Es funktioniert mit keiner richtig.
Kein Problem gibt es bei Tabellen und einfachen Abfragen. Daher nehme ich stark an, dass es nicht an den formulierten Bedingungen liegt. (Warum sollte ich da immer Fehler machen, bei den Tabellen nicht
?
grüße
laura
Danke für die Antwort.
ich habe es mehrfach getestet. Wie gesagt, am Treiber scheint es nicht zu liegen. Mit der base-eigenen Datenbank habe ich es noch nicht probiert. Allerdings gibt es folgendes Phänomen:
Bei manchen Abfragen funktioniert es tatsächlich. Bei komplexeren Abfragen über mehrere Tabellen klappt es nicht. Der Absatz ist immer sichtbar. Ich hab es ausgiebig in allen möglichen Syntax-Varianten probiert.
Das Verhalten ist leider nicht konsistent. Ist beim ersten Aufruf eines Datensatzes (direkt nach Bearbeitung der Bedingung) alles ok, ändert sich dies beim "Daten in Felder" bei einem nächsten Satz.
Alles rätselhaft.
Zum Formulieren der Bedingung gibt's prinzipiell viele Möglichkeiten
not(Adresse1)
!Adresse1
Adresse1 == ""
manchmal scheinen sich alle etwas unterschiedlich zu verhalten. Es funktioniert mit keiner richtig.
Kein Problem gibt es bei Tabellen und einfachen Abfragen. Daher nehme ich stark an, dass es nicht an den formulierten Bedingungen liegt. (Warum sollte ich da immer Fehler machen, bei den Tabellen nicht

grüße
laura
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Hallo laura,
Du schreibst immer von einer Ansicht. Wenn Du ein Seriendruckfeld einfügst und davor eine Bedingung wie versteckter Absatz. Dann wird die Ansicht erst richtig dargestellt wenn Du in der Datenquellen-Ansicht den entsprechenden Datensatz markierst und dann den Schalter Daten in Felder anklickst.
Wie der Ausdruck Seriendruckfeld schon aussagt, erfolgt die Auswertung sonst nur beim Seriendruck.
Du schreibst immer von einer Ansicht. Wenn Du ein Seriendruckfeld einfügst und davor eine Bedingung wie versteckter Absatz. Dann wird die Ansicht erst richtig dargestellt wenn Du in der Datenquellen-Ansicht den entsprechenden Datensatz markierst und dann den Schalter Daten in Felder anklickst.
Wie der Ausdruck Seriendruckfeld schon aussagt, erfolgt die Auswertung sonst nur beim Seriendruck.
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Hallo Peter,
danke für die Anwort, aber ich verstehe nicht ganz. Ich habe ja gar nichtsvon einer "Ansicht" geschrieben. Die Funktionsweise von der Felder und Bedingungen ist mir schon klar. Auch hatte ich schon geprüft, ob beim Ausdruck dann alles klappt und nur am Bildschirm nicht bei "Daten in Felder". Ist aber leider nicht der Fall.
Um nochmal festzuhalten:
1. Die Funktion "Absatz verstecken" funktioniert, wenn sich die Felder auf eine Tabelle in der mysql Datenbank beziehen (die über jdbc oder odbc eingebunden ist.
2. Sie funktioniert bei ( zumindest bei komplexen ) Abfragen aber nicht. (ich hänge unten mal ein Beispiel an).
3. Bei Abfragen gibt es zwei Fälle - ich habe noch nicht herausgefunden, dass sich das konsistent verhält: entweder wird der Datensatz immer gedruckt oder nie.... Die Bedingung wird ignoriert, bzw. falsch interpretiert
4. Die gleiche !!! Abfrage mit dem gleichen !!! Dokument (als sxw gespeichert) funktioniert unter OpenOffice 1.3 problemlos. Hier werden alle Bedingungen richtig interpretiert.
5. Das Phänomen taucht auf bei OpenOffice.org 2.0, 2.0.1, 2.0.2 unter Debian Sarge, mysql 4.1.11-Debian_4sarge2, unixODBC 2.2.4
grüße
laura
So sieht die Abfrage aus, mit der ich es ausgiebig getestet habe:
SELECT
vid,
pid,
organisationen.oid,
iid,
`vnname` AS Verteilername,
concat(
IF(LENGTH(psex), concat(psex,' '),''),
IF(LENGTH(ptitel), concat(ptitel,' '),''),
IF(LENGTH(pvorname), concat(pvorname,' '),''),
IF(LENGTH(pnachname),pnachname,''),
IF(LENGTH(ititel),concat(ititel, ' '),''),
IF(LENGTH(ivorname),concat(ivorname, ' '),''),
IF(LENGTH(inachname),concat(inachname, ' '),'')
) AS Name,
CONCAT( IF( LENGTH( `organisationen`.`oco` ), `organisationen`.`oco`, '' ), IF( LENGTH( `organisationen_1`.`oco` ), `organisationen_1`.`oco`, '' ) ) AS `co`,
concat( IF( LENGTH( `organisationen`.`oname` ), `organisationen`.`oname`, ''), IF( LENGTH( `organisationen_1`.`oname` ),`organisationen_1`.`oname`, '') ) AS Organisation ,
concat( IF( LENGTH( `pstrasse` ), `pstrasse`, '' ), IF( LENGTH( `organisationen`.`ostrasse` ), `organisationen`.`ostrasse`, '' ), IF( LENGTH( `organisationen_1`.`ostrasse` ), `organisationen_1`.`ostrasse`, '')) AS `Strasse`,
concat( IF( LENGTH( `organisationen`.`opostfach` ), `organisationen`.`opostfach`, '' ), IF( LENGTH( `organisationen_1`.`opostfach` ), `organisationen_1`.`opostfach`, '')) AS `Postfach`,
concat( IF( LENGTH( `pplz` ), `pplz`, '' ), IF( LENGTH( `organisationen`.`oplz` ), `organisationen`.`oplz`, '' ), IF( LENGTH( `organisationen_1`.`oplz` ), `organisationen_1`.`oplz`, '')) AS `PLZ`,
concat( IF( LENGTH( `port` ), `port`, '' ), IF( LENGTH( `organisationen`.`oort` ), `organisationen`.`oort`, '' ), IF( LENGTH( `organisationen_1`.`oort` ), `organisationen_1`.`oort`, '')) AS `Ort`,
concat( IF( LENGTH( `pland` ), `pland`, '' ), IF( LENGTH( `organisationen`.`oland` ), `organisationen`.`oland`, '' ), IF( LENGTH( `organisationen_1`.`oland` ), `organisationen_1`.`oland`, '')) AS `Land`,
concat( IF( LENGTH( `pstatus` ), `pstatus`, '' ), IF( LENGTH( `organisationen`.`ostatus` ), `organisationen`.`ostatus`, '' ), IF( LENGTH( `organisationen_1`.`ostatus` ), `organisationen_1`.`ostatus`, '')) AS `Status`,
vpostanzahl AS Anzahl
FROM `verteiler` `verteiler`
LEFT JOIN `organisationen` `organisationen` ON vorganisation = `organisationen`.`oid`
LEFT JOIN inorgapersonen ON vinorgaperson = iid
LEFT JOIN `organisationen` `organisationen_1` ON iorganisation = `organisationen_1`.`oid`
LEFT JOIN personen ON vperson = pid
LEFT JOIN `verteiler_name` `verteiler_name` ON vdname = vnid
WHERE
vpostanzahl > 0
AND
(pstatus = '' OR (organisationen.ostatus = '' OR organisationen_1.ostatus = '')
AND
(port <> '' OR (organisationen.oort <> '' OR organisationen_1.oort <> ''))
AND
(
pstrasse <> '' OR (organisationen.ostrasse <> '' OR organisationen_1.ostrasse <> '')
OR
(organisationen.opostfach <> '' OR organisationen_1.opostfach <> '')
)
)
ORDER BY Verteilername, PLZ
danke für die Anwort, aber ich verstehe nicht ganz. Ich habe ja gar nichtsvon einer "Ansicht" geschrieben. Die Funktionsweise von der Felder und Bedingungen ist mir schon klar. Auch hatte ich schon geprüft, ob beim Ausdruck dann alles klappt und nur am Bildschirm nicht bei "Daten in Felder". Ist aber leider nicht der Fall.
Um nochmal festzuhalten:
1. Die Funktion "Absatz verstecken" funktioniert, wenn sich die Felder auf eine Tabelle in der mysql Datenbank beziehen (die über jdbc oder odbc eingebunden ist.
2. Sie funktioniert bei ( zumindest bei komplexen ) Abfragen aber nicht. (ich hänge unten mal ein Beispiel an).
3. Bei Abfragen gibt es zwei Fälle - ich habe noch nicht herausgefunden, dass sich das konsistent verhält: entweder wird der Datensatz immer gedruckt oder nie.... Die Bedingung wird ignoriert, bzw. falsch interpretiert
4. Die gleiche !!! Abfrage mit dem gleichen !!! Dokument (als sxw gespeichert) funktioniert unter OpenOffice 1.3 problemlos. Hier werden alle Bedingungen richtig interpretiert.
5. Das Phänomen taucht auf bei OpenOffice.org 2.0, 2.0.1, 2.0.2 unter Debian Sarge, mysql 4.1.11-Debian_4sarge2, unixODBC 2.2.4
grüße
laura
So sieht die Abfrage aus, mit der ich es ausgiebig getestet habe:
SELECT
vid,
pid,
organisationen.oid,
iid,
`vnname` AS Verteilername,
concat(
IF(LENGTH(psex), concat(psex,' '),''),
IF(LENGTH(ptitel), concat(ptitel,' '),''),
IF(LENGTH(pvorname), concat(pvorname,' '),''),
IF(LENGTH(pnachname),pnachname,''),
IF(LENGTH(ititel),concat(ititel, ' '),''),
IF(LENGTH(ivorname),concat(ivorname, ' '),''),
IF(LENGTH(inachname),concat(inachname, ' '),'')
) AS Name,
CONCAT( IF( LENGTH( `organisationen`.`oco` ), `organisationen`.`oco`, '' ), IF( LENGTH( `organisationen_1`.`oco` ), `organisationen_1`.`oco`, '' ) ) AS `co`,
concat( IF( LENGTH( `organisationen`.`oname` ), `organisationen`.`oname`, ''), IF( LENGTH( `organisationen_1`.`oname` ),`organisationen_1`.`oname`, '') ) AS Organisation ,
concat( IF( LENGTH( `pstrasse` ), `pstrasse`, '' ), IF( LENGTH( `organisationen`.`ostrasse` ), `organisationen`.`ostrasse`, '' ), IF( LENGTH( `organisationen_1`.`ostrasse` ), `organisationen_1`.`ostrasse`, '')) AS `Strasse`,
concat( IF( LENGTH( `organisationen`.`opostfach` ), `organisationen`.`opostfach`, '' ), IF( LENGTH( `organisationen_1`.`opostfach` ), `organisationen_1`.`opostfach`, '')) AS `Postfach`,
concat( IF( LENGTH( `pplz` ), `pplz`, '' ), IF( LENGTH( `organisationen`.`oplz` ), `organisationen`.`oplz`, '' ), IF( LENGTH( `organisationen_1`.`oplz` ), `organisationen_1`.`oplz`, '')) AS `PLZ`,
concat( IF( LENGTH( `port` ), `port`, '' ), IF( LENGTH( `organisationen`.`oort` ), `organisationen`.`oort`, '' ), IF( LENGTH( `organisationen_1`.`oort` ), `organisationen_1`.`oort`, '')) AS `Ort`,
concat( IF( LENGTH( `pland` ), `pland`, '' ), IF( LENGTH( `organisationen`.`oland` ), `organisationen`.`oland`, '' ), IF( LENGTH( `organisationen_1`.`oland` ), `organisationen_1`.`oland`, '')) AS `Land`,
concat( IF( LENGTH( `pstatus` ), `pstatus`, '' ), IF( LENGTH( `organisationen`.`ostatus` ), `organisationen`.`ostatus`, '' ), IF( LENGTH( `organisationen_1`.`ostatus` ), `organisationen_1`.`ostatus`, '')) AS `Status`,
vpostanzahl AS Anzahl
FROM `verteiler` `verteiler`
LEFT JOIN `organisationen` `organisationen` ON vorganisation = `organisationen`.`oid`
LEFT JOIN inorgapersonen ON vinorgaperson = iid
LEFT JOIN `organisationen` `organisationen_1` ON iorganisation = `organisationen_1`.`oid`
LEFT JOIN personen ON vperson = pid
LEFT JOIN `verteiler_name` `verteiler_name` ON vdname = vnid
WHERE
vpostanzahl > 0
AND
(pstatus = '' OR (organisationen.ostatus = '' OR organisationen_1.ostatus = '')
AND
(port <> '' OR (organisationen.oort <> '' OR organisationen_1.oort <> ''))
AND
(
pstrasse <> '' OR (organisationen.ostrasse <> '' OR organisationen_1.ostrasse <> '')
OR
(organisationen.opostfach <> '' OR organisationen_1.opostfach <> '')
)
)
ORDER BY Verteilername, PLZ
Ist als Bug berichtet. Allerdings nur für 2.0.1 u. 2.0.2. Gibt aber bei Etikettendruck auch Probleme mit 2.0
http://dba.openoffice.org/issues/show_bug.cgi?id=60950
grüße
laura
http://dba.openoffice.org/issues/show_bug.cgi?id=60950
grüße
laura
-
- ********
- Beiträge: 4330
- Registriert: Di, 22.06.2004 12:02
- Wohnort: 71134 Aidlingen
- Kontaktdaten:
Hallo laura,
Bei den Betriebssystemen die Du jetzt angibst muss ich leider passen.
Stimmt, da habe ich mich verguckt, das war cinaebnit.Ich habe ja gar nichtsvon einer "Ansicht" geschrieben.
Bei den Betriebssystemen die Du jetzt angibst muss ich leider passen.
Gruß
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
-
- *
- Beiträge: 16
- Registriert: Sa, 14.01.2006 09:48
- Wohnort: Brande-Hörnerkirchen
Lösungsvorschlag
Unbedingt in OpenOffice ausschalten:
Ansicht - versteckt Absätze
Eintrag:
1. Einfügen -Feldbefehl - Andere... - Datenbank - Seriendruck-Feld
Datenbankauswahl - Datenbankfeld
dann direkt dahinter:
2. Einfügen - Feldbefehl - Andere... - Funktionen - versteckter Absatz
Bedingung: Datenbankfeld == ""
Hoffe, ich konnte helfen
Ansicht - versteckt Absätze
Eintrag:
1. Einfügen -Feldbefehl - Andere... - Datenbank - Seriendruck-Feld
Datenbankauswahl - Datenbankfeld
dann direkt dahinter:
2. Einfügen - Feldbefehl - Andere... - Funktionen - versteckter Absatz
Bedingung: Datenbankfeld == ""
Hoffe, ich konnte helfen
Zuletzt geändert von Karen Steffen am Sa, 07.10.2006 12:43, insgesamt 4-mal geändert.
Viele Grüße
Karen
Karen
-
- ***
- Beiträge: 61
- Registriert: Do, 18.12.2003 10:08