von laura36 » Mo, 27.03.2006 23:38
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
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 [i]gleiche[/i] !!! 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