Bedingter Text und Datenbankfeld

Das Textverarbeitungsprogramm

Moderator: Moderatoren

AHoppe
**
Beiträge: 25
Registriert: Mi, 25.03.2009 15:32

Bedingter Text und Datenbankfeld

Beitrag von AHoppe »

Hallo NG,

irgendwie fehlt mir jetzt gerade der letzte Klick...

Ich habe eine MySQL-Datenbank mit Namen test_db.
In dieser DB ist eine Tabelle namens tbl_test1.
In dieser Tabelle befindet sich ein Feld namens testfeld.

Ich habe die DB in OOo eingebunden. Die OOo-Base-Datei heißt: test-db.odb
Ich habe in der OOo-Datenbankdatei eine Abfrage namens 'Alle Felder' (ohne Hochkomma) erstellt,
in der u.a. testfeld mit dem Alias Testfeld abgefragt wird.

Der Inhalt von Testfeld ist entweder 1 oder 0.

So weit so gut.

In meinem Serienbrief-Dokument möchte ich in Abhängigkeit des Inhalts des Feldes testfeld entweder "Ja" oder "Nein" ausdrucken.

Wie muss meine Wenn-Bedingung im bedingten Text aussehen. Ich habe alle möglichen Varianten ausprobiert, aber egal welchen Datensatz ich auswähle, es bleibt immer der Text in der DANN-Anweisung im Feld stehen und ändert sich nie, egal, ob im ausgewählten Datensatz im testfeld die 0 (= Nein) oder die 1 (= Ja) steht.

Mir fehlt anscheinend die korrekte Syntax, um das DB-Feld anzusprechen...

Viele Grüße

Andreas
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Bedingter Text und Datenbankfeld

Beitrag von pmoegenb »

Hallo AHoppe,
der vollständige Name hat folgende Syntax:

Code: Alles auswählen

Datenbankname.Tabelle oder Abfragename.Feldname
Also jeweils durch einen Punkt (.) getrennt. Du kannst Dir alles im Datenbank-Explorer (Funktionstaste F4) anzeigen lassen.

Beispiel: DB1.Abfrage1.Feld1 EQ 1 (bei numerischem Feld), DB1.Abfrage1.Feld1 EQ "1" (bei alphanumerischem Feld).
Zuletzt geändert von pmoegenb am Di, 26.05.2009 16:15, insgesamt 1-mal geändert.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
anho1000
*
Beiträge: 13
Registriert: Sa, 23.10.2004 08:32
Wohnort: 77855 Achern
Kontaktdaten:

Re: Bedingter Text und Datenbankfeld

Beitrag von anho1000 »

Hallo Ihr beiden,

danke für die Antwort, aber es klappt weder über direktes Ansprechen in der Tabelle der DB noch über die Abfrage.

Ich gebe bei der Bedingung ein:

test-db.Alle Felder.Testfeld == "1" (Testfeld ist nicht numerisch!) -> funktioniert nicht
test-db.Alle Felder.Testfeld EQ "1" -> funktioniert nicht

Wenn ich test-db und Alle Felder und Testfeld beliebig mit ` "einkreise" (bspw. test-db.`Alle Felder`.Testfeld) passiert ebenfalls nicht das gewünschte. Es bleibt immer beim selben Wert im bedingten Text, egal welchen Datensatz ich für den Seriendruck auswähle.

Grüße

Andreas
OpenSuSE 11.4 - 64 Bit
OOo 3.2.0
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Bedingter Text und Datenbankfeld

Beitrag von pmoegenb »

Hallo Andreas,
bei Datenbanken wie Datenbank-, Tabellen- und Feldnamen ist es immer ein Problem, wenn man von den diesbezüglichen Benamungsregeln abweicht. Dies sind z. B. Bindestriche und Leerzeichen. Verwende stattdessen Unterstreichungsstriche.

Ob dies allerdings ursächlich für Dein Problem ist, musst Du letztendlich selbst herausfinden.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Bedingter Text und Datenbankfeld

Beitrag von pmoegenb »

Sanne hat geschrieben:Ich verwende in unseren Serienbriefen (die wir regelmässig mit OO verfassen) immer nur den Feldnamen, ohne Datenbank- und Tabellennamen.
Das macht es einfacher, die Datenquelle zu tauschen.
In früheren Versionen hatte ich auch noch den vollständigen Namen verwendet, den dann aber in eckige Klammern setzen müssen:
[test-db.Alle Felder.Testfeld] == "1"
mfG
Hallo Sanne,
die eckigen Klammern sind nur erforderlich, wenn man sich nicht an die Benamungsregeln für Datenbanken hält. Ich zitiere dazu aus der Online-Hilfe:

Wenn Sie in einer Bedingung auf ein Datenbankfeld Bezug nehmen, verwenden Sie die Form Datenbankname.Tabellenname.Feldname. Wenn einer der Namen ein Operatorzeichen enthält, z. B. ein Minuszeichen (-), müssen Sie den Namen in eckige Klammern einschließen. Beispiel: Datenbankname.[Tabellen-Name].Feldname. Innerhalb von Feldnamen dürfen keine Leerzeichen verwendet werden.

Gegen die Benamungsregeln hat Andeas gleich mehrfach verstoßen. Dies dürfte auch die Ursache für seine Problem sein. Bei Bedingungen halte ich es so wie Du, ich lasse ebenfalls DB- und Tabellenname weg. Bisher hat es geklappt.

Zu den Standards ANSI SQL habe ich folgendes Zitat gefunden:

Die Vorschriften des Standards ANSI SQL beschränken einen Tabellen- bzw. Spaltennamen auf ein einziges Wort, zu dessen Bildung nur alphanumerische Zeichen und der Unterstrich zugelassen sind.
Zuletzt geändert von pmoegenb am Mi, 27.05.2009 07:33, insgesamt 1-mal geändert.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
AHoppe
**
Beiträge: 25
Registriert: Mi, 25.03.2009 15:32

Re: Bedingter Text und Datenbankfeld

Beitrag von AHoppe »

Hallo Sanne und pmoegenb,

jetzt klappt es auch bei mir. :-)

Die eckigen Klammern waren mein Problem. Da ich einige Abfragen mit Alias-Namen habe, um die Benutzung für andere einfacher zu machen.

Ich verwende jetzt nur noch die Alias-Namen in eckigen Klammern ohne Angabe der DB und der Abfrage. Das ist für mich vorteilhaft, weil bei verschiedenen Abfragen die Alias-Namen identisch sind und ich somit die Vorlagen für verschiedene Abfragen leichter austauschen kann.

Danke Euch beiden. Problem gelöst. :-)

Grüße

Andreas
Antworten