Seite 1 von 1

Großschreibung im Serienbrief klappt nicht bei Feld (gelöst)

Verfasst: Di, 28.08.2012 17:08
von juetho
Ich "füttere" ein Writer-Dokument mit Daten aus einer MySQL-Datenbank. Das klappt weitgehend. Es gelingt mir aber nicht, die Adress-Zeile "Land" automatisch groß schreiben zu lassen, wie es die Deutsche Post AG wünscht. Mein Vorgehen:
  • mit <F4> die Tabelle anzeigen
  • die betreffende Spalte markieren und in das Dokument ziehen; danach wird <land> angezeigt (die Spaltennamen sind alle klein geschrieben)
  • <land> markieren
  • Format > Groß-/Kleinschreibung > GROSSBUCHSTABEN
Beim Druck bleiben die Feldinhalte in der gemischen Schreibweise.

Notlösung: Drucken in Datei, dann die Feldinhalte nachträglich formatieren - das funktioniert.

Kann man als Alternative etwas wie die Calc-Funktion GROSS() verwenden? Unter Einfügen > Feldbefehl > Andere > Funktionen finde ich nichts Derartiges. Natürlich ließe es sich über ein Makro realisieren. Aber wozu sollte das nötig sein, wenn die Funktionalität im Programm eigentlich schon enthalten ist?

Übersehe ich etwas? Gibt es noch einen anderen Weg? Oder sollte ich das als Wunsch weitergeben?

Danke! Jürgen

Re: Großschreibung im Serienbrief klappt nicht bei Datenbank

Verfasst: Mi, 29.08.2012 10:34
von pmoegenb
Hallo Jürgen,

in einer SQL-Abfrage kannst Du Kleinbuchstaben in Großbuchstaben umwandeln.

Beispiel:

Code: Alles auswählen

SELECT Vorname, Nachname, Strasse, Ort, Upper(Land)
FROM Adressen
ORDER BY Nachname, Vorname
Im Beispiel wird z. B. durch Upper(Feldname) der Feldinhalt in Großbuchstaben zurück gegeben.

Re: Großschreibung im Serienbrief klappt nicht bei Datenbank

Verfasst: Mi, 29.08.2012 11:11
von juetho
Hallo Peter, das ist mir bekannt. Aber durch die Assistenten von LibO wird die Verbindung zur DB vor mir verborgen. Ich kann nichts erkennen, wo ich für die Datenquelle im Writer einen SELECT-Befehl unterbringen kann.

Dein Vorschlag hat mich aber auf eine Idee gebracht: Ich erstelle in der MySQL Workbench eine View mit UPPER; diese View wird dann als Datenquelle im Writer verwendet. (Den Weg über MySQL gehe ich, weil ich beim Ortsnamen zusätzlich CASE benutzen muss: In DE ohne und für das Ausland mit Großschreibung. Mit MySQL kenne ich mich ein wenig aus; bei Base müsste ich erst wieder suchen.)

Das probiere ich jetzt aus; ich melde mich dann wieder. Jürgen

Re: Großschreibung im Serienbrief klappt nicht bei Datenbank

Verfasst: Mi, 29.08.2012 11:22
von pmoegenb
juetho hat geschrieben:Hallo Peter, das ist mir bekannt. Aber durch die Assistenten von LibO wird die Verbindung zur DB vor mir verborgen. Ich kann nichts erkennen, wo ich für die Datenquelle im Writer einen SELECT-Befehl unterbringen kann.
Z. B. im Writer die

- Datenübersicht mit F4 öffnen
- Datenbank mit der rechten Maustaste anklicken und Datenbank bearbeiten wählen. Es öffnet sich Base.
- In Base im Fenster Datenbank auf den Button Abfragen klicken.
- Nun hast im Fenster Aufgaben u. a. die Option Abfrage in SQL-Ansicht erstellen....

Re: Großschreibung im Serienbrief klappt nicht bei Datenbank

Verfasst: Mi, 29.08.2012 12:02
von juetho
Ach, so muss das gehen: nicht unmittelbar im Writer, sondern wenn ich eine bestimmte Auswahl als Datenquelle benötige, geht das immer über eine Abfrage in Base. (Nun ja, nicht ganz "immer"; beim Drucken habe ich auch noch eine gewisse Auswahlmöglichkeit.) Diesen Weg hatte ich gesehen; aber als ich über die Syntax von CASE nachgedacht hatte, bin ich doch lieber zu MySQL gegangen. Das hat in der Tat so funktioniert.

Für spätere Leser nochmals der Lösungsweg:
  • ort und land werden in der Datenbank in "normaler" Schreibweise gespeichert; auf die Eingabe "Deutschland" wird verzichtet.
  • Es gibt ein Tabellenfeld lkz (Länderkennzeichen) gemäß ISO 3166.
  • Es wird eine Abfrage erstellt, die beim Ausland Ort und Land in Großbuchstaben setzt und bei "DE" die normale Schreibweise liefert.
  • Diese Abfrage wird als Datenquelle ausgewählt.
Unter MySQL enthält die Abfrage vor allem folgende Bestandteile (aus UPPER wurde dabei UCASE):

Code: Alles auswählen

        lkz,
        plz,
        (case lkz
            when 'DE' then ort
            else ucase(ort)
        end) AS ort,
        ucase(land) AS land,
Damit ist auch diese Frage gelöst und erledigt. Jürgen