Feld Versteckter Absatz funktioniert nicht

Das Textverarbeitungsprogramm

Moderator: Moderatoren

cinaebnit
Beiträge: 2
Registriert: So, 05.03.2006 22:29

Feld Versteckter Absatz funktioniert nicht

Beitrag von cinaebnit »

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?
Lenu
*******
Beiträge: 1085
Registriert: Sa, 30.10.2004 09:24

Beitrag von Lenu »

Hast Du's schon so versucht:
!FELDNAME
oder
NOT FELDNAME
→ siehe auch
cinaebnit
Beiträge: 2
Registriert: So, 05.03.2006 22:29

Beitrag von cinaebnit »

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.
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Beitrag von laura36 »

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
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag von pmoegenb »

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
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Beitrag von laura36 »

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
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Beitrag von laura36 »

Hallo,

Noch eine Ergänzung:
das gleiche Dokument (es handelt sich um Etiketten) funktioniert unter OO 1.3 problemlos. Dort werden alle Absätze versteckt, wenn die Felder leer sind. In 2.0 tritt der Fehler auf. Das hat cinaebnit ja ähnlich berichtet.

Nur, wo liegt der Fehler?

grüße
laura
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag von pmoegenb »

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.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Beitrag von laura36 »

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
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Beitrag von laura36 »

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
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Beitrag von pmoegenb »

Hallo laura,
Ich habe ja gar nichtsvon einer "Ansicht" geschrieben.
Stimmt, da habe ich mich verguckt, das war cinaebnit.

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
Karen Steffen
*
Beiträge: 16
Registriert: Sa, 14.01.2006 09:48
Wohnort: Brande-Hörnerkirchen

Lösungsvorschlag

Beitrag von Karen Steffen »

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
Zuletzt geändert von Karen Steffen am Sa, 07.10.2006 12:43, insgesamt 4-mal geändert.
Viele Grüße
Karen
Ein__Stadtmensch
***
Beiträge: 61
Registriert: Do, 18.12.2003 10:08

Beitrag von Ein__Stadtmensch »

> Hoffe, ich konnte helfen

Mir schon :D

Klappt echt super, danke!!
Antworten