AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Lokalisierungsproblem? bei TO_CHAR-Fkt.
Thema durchsuchen
Ansicht
Themen-Optionen

Lokalisierungsproblem? bei TO_CHAR-Fkt.

Ein Thema von Jumpy · begonnen am 20. Jun 2012 · letzter Beitrag vom 21. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2      
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 08:51
Datenbank: Oracle • Version: 10g • Zugriff über: ADO+ODBC
Hallo,

die folgende Abfrage soll dazu dienen die Werte in einem Number-Feld, die entweder keine oder zwei Nachkommastellen haben, auf jeden Fall mit zwei Nachkommastellen auszugeben:

SQL-Code:
Select
TRIM(TO_CHAR(BETRAG_EU,999999999999990.99)) AS WERT
From
TABELLE
Nur kommen da bei zwei Rechnern unterschiedliche Ergebnisse raus (abgefragt wird natürlich die selbe DB). Ist der Wert in der DB z.B. 1234 so liefert Rechner1 1234.00 und Rechner2 12,34.

Rechner1: Win7, OracleClient 11g, Oracles-ODBC-Treiber
Rechner2: Windows Server 2008, OracleClient 11g, Oracles-ODBC-Treiber

Ich vermute, dass es irgendwie mit der Lokalisierung/Ländereinstellung der Rechner zu tun hat, doch versteh ich das nicht so ganz, da die eigentliche Operation doch auf der DB ausgeführt wird und an dern Rechnern als Antwort der DB doch nur eine Zeichenkette ankommen sollte?
Oder liegt das daran, das ODBC den Befehl anders übermittelt? Hab da in Google eine entsprechende Bemerkung zu gefunden, dies aber abgetan, da der ODBC-Treiber in beiden Fällen gleich eingestellt ist.

Wer hätte demnach eine Vermutung, was es sein könnte oder kennt einen anderen Weg, den Wert auf jeden Fall mit zwei Nachkommastellen zu erzwingen?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 09:05
Win7, da war doch mal was. Stell doch auf dem entsprechenden Rechner einmal aus US um und dann wieder zurück auf DE. Zeigt Rechner1 dann auch einen falschen String? Im Übrigen könnte man sich auch überlegen, ob man den Wert nicht einfach nummerisch ermittelt und bei der Ausgabe erst formatiert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 09:28
Der Win 7 Rechner zeigt eigentlich das gewollte Verhalten, da bei uns (aus anderen Gründen) alles englisch lokalisiert ist.
Der Windows Server macht eher das für uns überraschende.
Hätte ich vllt. dabeisagen sollen
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 09:37
Ich bin jetzt nicht der große Oracle-Experte, aber Du könntest einmal auf beiden Rechnern NLS_LANG prüfen. Siehe auch http://www.datenbank-sql.de/nls.htm
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 10:11
Prüfe auf beiden Rechnern die NLS Session settings.
Wenn nicht innerhalb der Session extra geändert, gilt Registry gewinnt vor Server Einstellungen.

Was auch immer wo eingestellt ist, am Ende zählen die Session Settings:

Code:
select * from nls_session_parameters
ergibt z.B. sowas:
Code:
1   NLS_LANGUAGE   GERMAN
2   NLS_TERRITORY   GERMANY
3   NLS_CURRENCY   ¿
4   NLS_ISO_CURRENCY   GERMANY
5   NLS_NUMERIC_CHARACTERS   ,.
6   NLS_CALENDAR   GREGORIAN
7   NLS_DATE_FORMAT   DD.MM.RR
8   NLS_DATE_LANGUAGE   GERMAN
9   NLS_SORT   GERMAN
10   NLS_TIME_FORMAT   HH24:MI:SSXFF
11   NLS_TIMESTAMP_FORMAT   DD.MM.RR HH24:MI:SSXFF
12   NLS_TIME_TZ_FORMAT   HH24:MI:SSXFF TZR
13   NLS_TIMESTAMP_TZ_FORMAT   DD.MM.RR HH24:MI:SSXFF TZR
14   NLS_DUAL_CURRENCY   ¿
15   NLS_COMP   BINARY
16   NLS_LENGTH_SEMANTICS   BYTE
17   NLS_NCHAR_CONV_EXCP   FALSE
Hier dürfte Parameter NLS_NUMERIC_CHARACTERS für Dich interessant sein.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 10:32
Da liegt der Hund begraben.
Auf dem Win7: NLS_Languaga=American und NLS_Numeric_Characters=.,
Auf dem WS2008: NLS_Languaga=Germen und NLS_Numeric_Characters=,.

Was sind den diese NLS Session Settings?
Ist das eine Einstellung bei der Installtaion des Oracle-Clients (uns wurde nämlich immer gesagt, dass wir dabei explizit nur englisch als Sprache wählen sollen und deutsch ja nicht), könnte also sein, das da einer bei der Installation was falsch gemacht hat.

Oder ist das eine Einstellung des Betriebssystems?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 10:36
Am Besten kann das wohl der Hersteller erklären.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 10:55
Jo, danke. Haben gerade mal in die Regitry geguckt. Der Oracle-Client wurde falsch installiert. Haben das in der Regitry jetzt geändert und es macht was es soll.



Sollte natürlich jemand geben, der generell eine bessere/elegantere Idee hat, wie man Nachkommastellen erzwingen kann: Immer her damit
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 11:02
Clientseitig das DisplayFormat vorgeben?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Lokalisierungsproblem? bei TO_CHAR-Fkt.

  Alt 20. Jun 2012, 11:11
Erzwingen kann man es zur Laufzeit, also innerhalb der Anwendung durch Absetzen von:
Code:
alter session set NLS_DATE_FORMAT = 'dd.mm.yyyy';
usw.

Wenn die Connection in der Anwendung geschlossen und geöffnet wird, muss man es wiederholen.
Wie gesagt, die NLS Settings können auf 3 Ebenen gesetzt werden. Server, Client[installation] (also Registry unter windows) und Session. Letzte Instanz ist die Session, die ist allerdings flüchtig. Alles was fehlt oder nicht angegeben ist, wird ausgehend von den Serversettings verwendet.

Das Displayformat im Client hilft bei der to_Char Funktion nicht, da es sich innerhalb von Oracle abspielt.

Nachtrag:
Die NLS Settings definieren alle sprachabhängigen Darstellungen, länderspezifisch. Wird auch (bei anderen Anbietern) als locale settings o.ä bezeichnet. Das hat mit dem OS überhaupt nichts zu tun, es ist komplett unabhängig, allerdings nimmt der Installer die Einstellungen des Wirtsystems als Vorgabe. Eine Installation des Servers auf einem deutschen Windows ergibt also andere NLS Settings als auf englischen Servern, ebenso beim Client.
Man kann es aber alles verstellen.
Gruß, Jo

Geändert von jobo (20. Jun 2012 um 11:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz