Autor Thema: ODBC-Abfrage liefert falsche Werte  (Gelesen 1829 mal)

Offline macchina

  • Junior Mitglied
  • **
  • Beiträge: 62
  • Ich liebe dieses Forum!
ODBC-Abfrage liefert falsche Werte
« am: 07.10.05 - 12:52:27 »
Hallo!

Ausgangssituation:
Ich greife in einer NotesDB via ODBC (Client) und SQL auf eine DB2(UDB)-Datenbank zu. Realisiert habe ich das in einer ScriptLibrary unter Verwendung von *LSXODBC.
Der Benutzer gibt eine Kontonummer ein u. anschließend wird eine SQL-Abfrage gemacht u. die Daten zurück ins UI-Dokument geschrieben.
Funktioniert grundsätzlich bestens. a-bär: bei der 1. Abfrage bekomme ich falsche Kommawerte bei verschiedenen Feldern (z.b. 296,00 anstatt 296,86). Wird die Abfrage wiederholt, so werden die Kommawerte korrekt zurückgeben  :-:
Wird der Notes-Client beendet u. neu gestartet, so wiederholt sich der Effekt. 1. Abfrage = falsche Werte, 2. Abfrage = ok.
Habe es auf Client 6.0.1 und 6.0.4 getestet. Bei beiden der selbe Fehler.

Any ideas?

LG Ernstl

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ODBC-Abfrage liefert falsche Werte
« Antwort #1 am: 08.10.05 - 00:06:52 »
Das scheint irgendein Problem mit Datentypen zu sein. Vielleicht bekommst du die per ODBC mit . als Dezimaltrennzeichen.
Aber du kannst es dir doch im Debugger anschauen, oder?
Bzw. den entsprechenden Wert erstmal in einem String zwischenspeichern und dann nachschauen was da drin steht. Zur Not musst du dann vielleicht einfach nur . durch , ersetzen.
Oder vielleicht kann man auch im ODBC Treiber das Trennzeichen irgendwo einstellen.

Für mich gilt es quasi als Naturgesetz, dass es keine gute Idee ist, Daten aus einer externen Datasource direkt in das Frontend durchzureichen. Dieser Fall scheint diese Wahrheit wieder zu bestätigen. Leg da also noch einen Zwischenspeicher dazwischen, dann kannst du es auch besser nachschauen, was wirklich aus dem RDBMS kommt. Und "Perphormäns" ist hier auch kein Argument, weil dieses Zwischenspeichern nämlich quasi keine bis sehr geringe Ressourcen in Notes beansprucht.
« Letzte Änderung: 08.10.05 - 00:57:26 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline macchina

  • Junior Mitglied
  • **
  • Beiträge: 62
  • Ich liebe dieses Forum!
Re: ODBC-Abfrage liefert falsche Werte
« Antwort #2 am: 10.10.05 - 13:39:59 »
Hallo!

Der Debugger zeigt beim 1. Durchlauf "296" an, ab dem 2. Durchlauf "296,86".

Sobald ich den Trace für die SQL-Abfrage aktiviere, kommt der Wert auch bei der 1. Abfrage richtig  ??? :-:
Vermutlich liegt der Fehler im ODBC-DB2-Treiber von IBM. Werd in die Richtung mal "forschen".

Frontend/Backend:
Diese Applikation läuft ausschliesslich auf standardisierten Clients (vom Betriebssystem bis zu den Applikationen identische Versionsstände).  Deshalb sehe ich hier die Frontend/Backendproblematik nicht so kritisch.

LG
Ernstl

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ODBC-Abfrage liefert falsche Werte
« Antwort #3 am: 10.10.05 - 18:04:54 »
sehr, sehr seltsam.
Vielleicht wendest du dich mal an ein spezielles DB2 Forum.

Das hiesse, dass das beim ersten Aufruf (vermutlich) decimal in DB2 zu bigint oder so konvertiert wird.
Vielleicht hilft es auch, wenn du mal den Code deines Selects postest.

Was du noch versuchen könntest wäre, das entprechende property im select Statement zu casten.

So ungefähr mit der Syntax Select cast(wert, VarChar) from xxx
Vielleicht finde ich noch die entsprechende Funktion.
Möglicherweise wird das hinter dem Dezimaltrenner dann nicht "abgehackt".

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz