DB2 via ODBC

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

DB2 via ODBC

Beitrag von Eia »

Hi
Ich habe eine ODBC-Verbindung zu einer DB/2-Datenbank unter Linux (wie hier beschrieben), die im Prinzip auch funktioniert.
Mein Problem:
Die Adressfelder werden alle mit Leerzeichen soweit aufgefüllt, bis die definierte Feldlänge erreicht ist.
Im Briefkopf ist das ja (fast) wurscht, aber ich habe Fälle, bei denen die Felder nebeneinander stehen und durch Kommata getrennt sind.
Das sieht dann etwa so aus:

Code: Alles auswählen

Name              , Strasse             , Ort
Hat jemand einen Tipp?
Könnte man das mit einer Abfrage lösen, wobei man quasi Substrings aus den Originalfeldern ausliest, die diese Leerzeichen ignorieren?
Auch für Bedingungen ist das doof, weil leere Felder eben nicht leer sind und ich auf Formeln wie <"." ausweichen muss in der Hoffnung, dass ich da immer richtig liege.
Danke und Gruss
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: DB2 via ODBC

Beitrag von komma4 »

es gibt auch beim DB2/SQL eine TRIM-Funktion

http://publib.boulder.ibm.com/infocente ... 023198.htm


Hilft Dir das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: DB2 via ODBC

Beitrag von pmoegenb »

In dem Fall müsste es RTRIM sein.
Ich zitiere:
DB2
DB2 stellt die Funktionen LTRIM und RTRIM zur Verfügung, um Leerzeichen vom Anfang oder
Ende eines Strings zu kappen.


Beispiel:

Code: Alles auswählen

SELECT LTRIM( RTRIM('   wamalamadingdong  ') );
'wamalamadingdong'
Eine Abfrage wäre demzufolge erforderlich.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: DB2 via ODBC

Beitrag von Eia »

Danke für die schnelle Auskunft. Aber ich weiß jetzt nicht, wo ich das eingeben müsste.
Das Ganze ist ja in eine OO-Datenbank eingebunden. Also habe ich Base geöffnet, dort eine Abfrage definiert und diese SQL-Sequenz eingegeben:
SELECT "KDNR", TRIM(:KUNA1), TRIM(TRAILING FROM :KUNA1) FROM "Systemname"."Bibliothek"."Tabelle"
Das wird aber nicht akzeptiert.
Im Hilfetext von OO finde ich auch nichts zu TRIM
Sollte das in OO prinzipiell gehen oder ist es ein SQL-Statement, welches in einer IBM-Umgebung benutzt werden muß?
Ich hab' kaum Ahnung von SQL, daher sind meine Fragen wahrscheinlich ziemlich doof
mfG
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: DB2 via ODBC

Beitrag von Eia »

pmoegenb hat geschrieben: Beispiel:

Code: Alles auswählen

SELECT LTRIM( RTRIM('   wamalamadingdong  ') );
'wamalamadingdong'
Eine Abfrage wäre demzufolge erforderlich.
Ich hab versucht, das einzubauen:
SELECT RTRIM(KUNA1), FROM "System"."Bibliothek"."Tabelle"
bekomme aber immer "Error in SQL-Syntax

Kannst du nochmal helfen?

mfG
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: DB2 via ODBC

Beitrag von komma4 »

die Stelle ich richtig.

Die Syntax des Befehls ist abhängig vom Treiber. I.d.R. dokumentieren die aber ihre Befehle nicht.

versuche mal ein einfaches SELECT TRIM( ' FeldMitSpaces ' ) ;

geht das?



Edit: der phpBB Editor hat mir die Leerzeichen in der Variablen rausgenommen, vor und hinter "FeldMitSpaces" sind drei Leerzeichen
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
chrk
*******
Beiträge: 1670
Registriert: Sa, 22.09.2007 18:09

Re: DB2 via ODBC

Beitrag von chrk »

Eia hat geschrieben:SELECT RTRIM(KUNA1), FROM "System"."Bibliothek"."Tabelle"
Das Komma trennt Felder in der Abfrage, hinter dem letzten (hier: einzigen) Feld kommt keins, in Deiner Variante erwartet er noch ein Feld.

Ach, und auf komma4's Beitrag: je nach DB und Treiber können die Hochkomma nötig sein oder nicht, manchmal benötigst Du auch ein schräges (`) Hochkomma.
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: DB2 via ODBC

Beitrag von pmoegenb »

Eia hat geschrieben: Ich hab versucht, das einzubauen:
SELECT RTRIM(KUNA1), FROM "System"."Bibliothek"."Tabelle"
bekomme aber immer "Error in SQL-Syntax
Hallo Eia,

ich habe die Syntax von DB2 beschrieben, ob diese von OOo unterstützt wird entzieht sich meiner Kenntnis. In jedem Fall ist das Komma vor FROM falsch. Kommas sind nur bei Aufzählungen (z. B. zu selektierende Felder) erforderlich.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: DB2 via ODBC

Beitrag von Eia »

I got it!
Die Syntax ist:
SELECT "KDNR", RTRIM("KUNA1") FROM "Sytem"."Bibliothek"."Tabelle"
vielen Dank für Eure Hilfe!
Antworten