Spezielle Fehler bei Zahlenkonvertierung vermeiden

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!

Spezielle Fehler bei Zahlenkonvertierung vermeiden

Postby Josef5287 » Mon Feb 23, 2015 11:47 am

Hallo,

ich stelle hier eine (zumindest für mich) unerwartete Fehlerquelle vor. Ich werde zuerst ein Stück Code zeigen, und bitte euch, das im neuen Debugger einmal durchlaufen zulassen. Im Debugger lasst ihr euch den Inhalt der Variable wa_cawn-atflv anzeigen. Im zweiten Zuweisungsblock passiert es dann. Die (wahrscheinliche) Erklärung und den Hintergrund werde ich in einem zweiten Posting erläutern.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. data wa_cawn type cawn.
  2. data xml_wert(30) type c.
  3.  
  4. xml_wert = 'Additional wireless mainte'.
  5. wa_cawn-atwrt = xml_wert.
  6. CATCH SYSTEM-EXCEPTIONS conversion_errors = 4.
  7. wa_cawn-atflv = xml_wert.
  8.  
  9. xml_wert = 'nance controller'.
  10. wa_cawn-atwrt = xml_wert.
  11. CATCH SYSTEM-EXCEPTIONS conversion_errors = 4.
  12. wa_cawn-atflv = xml_wert.
  13.  
  14.  
GeSHi ©


Viel spass beim Probieren.

Xilukarim
Josef5287
.
.
 
Posts: 8
Joined: Wed Nov 21, 2012 8:57 am

Lösung: Spezielle Fehler bei Zahlenkonvertierung vermeiden

Postby Josef5287 » Mon Feb 23, 2015 12:05 pm

Dieses Problem hatte mich fast zwei Stunden Zeit gekostet, obwohl der Fehler, einmal gefunden, recht klar vor einem liegt. Der Kunde hatte einen Laufzeitfehler gemeldet mit der Meldung "SQL-Fehler "-10811" bei Zugriff auf Tabelle "Z..." aufgetreten."

Die Meldung besagt, das beim Insert auf die Tabelle ein Konvertierungsfehler aufgetreten ist. Das Problem ist nur, das die interne Tabelle die Struktur der DB-Tabelle hat, warum also ist beim Befüllen der internen Tabelle nichts schiefgegangen? Die Tabelle wird aus einer XML-Datei befüllt, aber ich konnte mir zuerst keinen Reim darauf machen. Beim Debuggen bin ich dann letztendlich auf den problematischen Char-Wert gestoßen. Der Debugger ist nämlich beim Anzeigen der Tabelle abgestürzt, und ich habe mich dann mit dem alten Debugger bis zum problematischen Wert gekämpft.

Erklärung:
Normalerweise bleibt ja eine Zahlenvariable initial, wenn die Zuweisung aus einem Char-Wert nicht klappt. In diesem Fall scheint aber der Variable wa_atflv, die vom Typ f ist, tatsächlich der Wert NaN (not a number?) zugewiesen zu werden! Dieser Wert kann beim Sichern auf der Datenbank und auch bei der Anzeige im neuen Debugger nicht verarbeitet werden, so dass diese abstürzen. Mein Fehler als Programmierer war natürlich, sich darauf zu verlassen, das bei Auslösen der Exception der Wert der Zahl immer initial bleibt.

Vielleicht hilft dieser Hinweis jemanden mal.

Viele Grüße
Xilukarim
Josef5287
.
.
 
Posts: 8
Joined: Wed Nov 21, 2012 8:57 am


Return to Tips + Tricks & FAQs

Who is online

Users browsing this forum: No registered users and 2 guests

cron