- Beiträge: 2
Fehler in Version 4.0.4: YEAR-Heater / Typkonvert.
- Bloess
- Autor
- Offline
- Benutzer
Weniger
Mehr
8 Jahre 4 Monate her #2765
von Bloess
Fehler in Version 4.0.4: YEAR-Heater / Typkonvert. wurde erstellt von Bloess
Ich meine zwei kleine Bugs in der Version 4.0.4 gefunden zu haben:
- Der YEAR -Heater macht aus der Eingabe "01.06.2016" den Wert "2.016"
- Soll ein String der eine reine Zahl enthält, in ein INT Feld eines SQL-Adapters geschrieben werden, ergibt dies einen Fehler : "Arithmetischer Überlauffehler beim Konvertieren von expression in den int-Datentyp". Ist das ein Fehler oder kann man keine implizite Umwandlung von String -> Zahl ausführen auch wenn der Inhalt des Strings eine Zahl ist?
- Der YEAR -Heater macht aus der Eingabe "01.06.2016" den Wert "2.016"
- Soll ein String der eine reine Zahl enthält, in ein INT Feld eines SQL-Adapters geschrieben werden, ergibt dies einen Fehler : "Arithmetischer Überlauffehler beim Konvertieren von expression in den int-Datentyp". Ist das ein Fehler oder kann man keine implizite Umwandlung von String -> Zahl ausführen auch wenn der Inhalt des Strings eine Zahl ist?
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
8 Jahre 4 Monate her - 8 Jahre 4 Monate her #2768
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Fehler in Version 4.0.4: YEAR-Heater / Typkonvert.
Hallo Herr Bloess,
bei ersterem kann ich Sie beruhigen, der FlowHeater tut genau das was er soll Bei Ihrem zweiten Problem denke ich dass das am verwendeten Datentypen in der SQL Server Tabelle liegt.
Problem 1) Der FlowHeater führt eine automatische Typkonvertierung durch! In Ihrem Fall extrahiert der YEAR Heater die Jahreszahl vom übergebenen Datum, die Rückgabe davon ist vom FlowHeater Datentyp „INT“ (Ganzzahl). Hier wird erstmal nur der Wert, ohne weitere Formatierung gespeichert. Wenn Sie nun diesen Wert einem Feld vom Typ „STRING“ (Zeichenketten) oder aber einem Heater der eine Zeichenkette verarbeitet zuweisen erfolgt eine automatische Typkonvertierung in diesem Datentypen, INT (Ganzzahl) wird zu STRING (Zeichenfolge). Für das Format verwendet der FlowHeater Standardmäßig die im ersten WRITE Adapter gemachten Vorgaben. Hier steht vermutlich auf dem Reiter „Format“, dass Sie Ganzzahlen mit einem Tausenderpunkt formatiert ausgeben möchten, daher kommt die Formatierung. Um Zahlen generell ohne Tausendpunkt formatiert auszugeben würde es ausreichen hier bei Tausendertrenner den Wert „(ohne)“ anzugeben.
Im Anhang finden Sie ein kleines Beispiel wie Sie die Rückgabe des Year Heater bzw. eine Ganzzahl formatiert als Zeichenfolge (STRING) ausgeben können. Ein etwas ausführlicheres Beispiel mit weiteren Erklärungen finden Sie hier: Zahlen in Zeichenketten formatieren
Problem 2) Hier denke ich, dass das Problem am in der Tabelle für das Feld verwendeten SQL Server Datentypen liegt! Bitte prüfen Sie mal in der Tabelle am SQL Server welcher Datentyp verwendet wurde. Achtung: Es geht nicht um den in der Definition verwendeten FlowHeater Datentyp !
Ich vermute jetzt das Feld ist vom SQL Server Datentyp tinyint bzw. smallint? Das Problem hier ist der max. Wertebereich der in so einem Feld gespeichert werden kann.
SQL Server Datentyp tinyint = 0 bis 255
SQL Server Datentyp smallint = -32.768 bis +32.767
Wenn Sie so einem Feld eine größere Zahl zuweisen quittiert der SQL Server das mit der Fehlermeldung „Arithmetischer Überlauffehler …“.
Hinweis. Der FlowHeater prüft derzeit Wertebereiche von Zahlendatentypen nicht, überlässt diese Prüfung dem SQL Server und zeigt im Fehlerfall nur die vom SQL Server generierte Fehlermeldung an. Diese Prüfung steht auf der TODO Liste.
Sollte es daran liegen würde es ausreichen wenn Sie den verwendeten Datentyp auf einen größeren Zahlendatentyp ändern, z.B. über das „Microsoft SQL Server Management Studio“.
bei ersterem kann ich Sie beruhigen, der FlowHeater tut genau das was er soll Bei Ihrem zweiten Problem denke ich dass das am verwendeten Datentypen in der SQL Server Tabelle liegt.
Problem 1) Der FlowHeater führt eine automatische Typkonvertierung durch! In Ihrem Fall extrahiert der YEAR Heater die Jahreszahl vom übergebenen Datum, die Rückgabe davon ist vom FlowHeater Datentyp „INT“ (Ganzzahl). Hier wird erstmal nur der Wert, ohne weitere Formatierung gespeichert. Wenn Sie nun diesen Wert einem Feld vom Typ „STRING“ (Zeichenketten) oder aber einem Heater der eine Zeichenkette verarbeitet zuweisen erfolgt eine automatische Typkonvertierung in diesem Datentypen, INT (Ganzzahl) wird zu STRING (Zeichenfolge). Für das Format verwendet der FlowHeater Standardmäßig die im ersten WRITE Adapter gemachten Vorgaben. Hier steht vermutlich auf dem Reiter „Format“, dass Sie Ganzzahlen mit einem Tausenderpunkt formatiert ausgeben möchten, daher kommt die Formatierung. Um Zahlen generell ohne Tausendpunkt formatiert auszugeben würde es ausreichen hier bei Tausendertrenner den Wert „(ohne)“ anzugeben.
Im Anhang finden Sie ein kleines Beispiel wie Sie die Rückgabe des Year Heater bzw. eine Ganzzahl formatiert als Zeichenfolge (STRING) ausgeben können. Ein etwas ausführlicheres Beispiel mit weiteren Erklärungen finden Sie hier: Zahlen in Zeichenketten formatieren
Problem 2) Hier denke ich, dass das Problem am in der Tabelle für das Feld verwendeten SQL Server Datentypen liegt! Bitte prüfen Sie mal in der Tabelle am SQL Server welcher Datentyp verwendet wurde. Achtung: Es geht nicht um den in der Definition verwendeten FlowHeater Datentyp !
Ich vermute jetzt das Feld ist vom SQL Server Datentyp tinyint bzw. smallint? Das Problem hier ist der max. Wertebereich der in so einem Feld gespeichert werden kann.
SQL Server Datentyp tinyint = 0 bis 255
SQL Server Datentyp smallint = -32.768 bis +32.767
Wenn Sie so einem Feld eine größere Zahl zuweisen quittiert der SQL Server das mit der Fehlermeldung „Arithmetischer Überlauffehler …“.
Hinweis. Der FlowHeater prüft derzeit Wertebereiche von Zahlendatentypen nicht, überlässt diese Prüfung dem SQL Server und zeigt im Fehlerfall nur die vom SQL Server generierte Fehlermeldung an. Diese Prüfung steht auf der TODO Liste.
Sollte es daran liegen würde es ausreichen wenn Sie den verwendeten Datentyp auf einen größeren Zahlendatentyp ändern, z.B. über das „Microsoft SQL Server Management Studio“.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Letzte Änderung: 8 Jahre 4 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.276 Sekunden