Unglaublich / gleich 7 in SQL?

16/06/2008 - 14:01 von Martin Zimmermann | Report spam
Hallo zusammen

Beim debuggen eines Fehlers ist mir folgendes aufgeballen:
Auslesen eines TXT-Files mittels oledb:
In einer Spalte sind mehrheitlich Integerwerte gespeichert aber gelegentlich
auch 12/24 oder 36/36. Um dies abzufangen habe ich im SQL-Srting IsNumeric
eingeführt, welche im False-Fall eine 0 einfügt. Nun habe ich eine Überlauf
erhalten, und zwar weil aus 36/36 die Zahl 36736 entsteht.

Wie geht das? Dies ist schliesslich keine OCR-Software sondern arbeitet mit
einer Zeichencodierung. Für 36/36 würde ich noch 1 akzetieren, sofern dies
als Bruch angesehen wird. Da sollte der Unterschied zwischen Slash und einer
7 schon erkannt werden. In der Schema-ini habe ich CharacterSet=ANSI
eingetragen. Ist dies fehlerhaft?

Vielen Dank für eure Antworten.

Martin Zimmermann
 

Lesen sie die antworten

#1 Elmar Boye
16/06/2008 - 16:33 | Warnen spam
Hallo Martin,

Martin Zimmermann schrieb:
Beim debuggen eines Fehlers ist mir folgendes aufgeballen:
Auslesen eines TXT-Files mittels oledb:
In einer Spalte sind mehrheitlich Integerwerte gespeichert aber gelegentlich
auch 12/24 oder 36/36. Um dies abzufangen habe ich im SQL-Srting IsNumeric
eingeführt, welche im False-Fall eine 0 einfügt. Nun habe ich eine Überlauf
erhalten, und zwar weil aus 36/36 die Zahl 36736 entsteht.



Nein, nicht unglaublich, nur (schlecht) vom Treiber geraten.
Der Jet Text-Treiber, versucht anhand der ersten Zeilen den
Datentyp zu ermitteln.
Das wird durch die Einstellung MaxScanRows bestimmt:
<URL:http://support.microsoft.com/kb/282263/en-us>
(Standard sind 25 Zeilen)

Hinzu kommt "/" ist dummerweise auch ein Datumstrennzeichen.

In der Schema-ini habe ich CharacterSet=ANSI eingetragen.



Ergànze die SCHEMA.INI um Spaltenangaben und verwende
für die Spalte Text, und konvertiere ggf. nachtràglich.

Gruß Elmar

Ähnliche fragen