Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FB: Charset ISO8859_1 Zeichen mit Code 150, arithmetic overflow (https://www.delphipraxis.net/169606-fb-charset-iso8859_1-zeichen-mit-code-150-arithmetic-overflow.html)

hoika 31. Jul 2012 14:13

Datenbank: Firebird • Version: 2 • Zugriff über: egal

FB: Charset ISO8859_1 Zeichen mit Code 150, arithmetic overflow
 
Hallo #,

beim Import fremder Daten (Inhalt liegt nicht in unserer Hand) habe ich folgendes Problem.
Den lange Bindestrich (Ord('-')=150) kann ich zwar in die DB packen.
Das Select bringt mir aber die vielbekannte "arithmetic exeption, buffer underrun".

Lösung: Das Zeichen ausfiltern und durch normale Bindestriche ersetzen.

Den Charset kann ich nicht ändern.

Was ich brächte wäre eine Funktion "Ersetze_Alle_Ungültigen_Zeichen_In_CharSetISO8859 _1_DurchLeerzeichen".

Wie kann ich da Vorgehen ?

Danke


Heiko

Morphie 31. Jul 2012 14:39

AW: FB: Charset ISO8859_1 Zeichen mit Code 150, arithmetic overflow
 
Da gibt es viele Möglichkeiten...
z.B. clientseitig beim Import die entsprechenden Zeichen ersetzen oder serverseitig über einen Trigger (BeforeInsert)...

Wenn ich die Tabelle bei Wikipedia richtig deute, müssten das die Zeichen 0-31, 127-159, >255 sein...

hoika 31. Jul 2012 15:11

AW: FB: Charset ISO8859_1 Zeichen mit Code 150, arithmetic overflow
 
Hallo,

Morphie, ja korrekt.
Das sind die Nummern, die ich auch herausgefunden habe.

Was ärgerlich ist, dass FB die Daten einträgt, aber nicht auslesen kann.


Heiko

tsteinmaurer 31. Jul 2012 15:46

AW: FB: Charset ISO8859_1 Zeichen mit Code 150, arithmetic overflow
 
Bei mir klappt das grundsätzlich mit Firebird 2.5 in Database Workbench. Befinde mich in einer ISO8859_1 Datenbank und insertiere wie folgt:
Code:
insert into t1 (VC40) select ascii_char(150) from rdb$database
Nach einem SELECT auf diese Tabelle sehe ich den langen Bindestrich.

hoika 2. Aug 2012 18:03

AW: FB: Charset ISO8859_1 Zeichen mit Code 150, arithmetic overflow
 
Hallo Thomas,

unter FB 2.01 (Zugriff per IBDAC) geht es nicht.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 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