2012-04-07 46 views
1

Ich konvertiere eine D7-App in D2009 und habe ein Problem mit dem Advantage Database Server (Local) festgestellt. Jedes Mal, wenn ich nicht parametrisierte türkische Zeichen in Abfragen enthalten erhalte ich die FehlerAdvantage Database Server 10 Fehler 5211 - Es ist ein Fehler beim Konvertieren der Unicode-Zeichenfolge

[iAnywhere Solutions][Advantage SQL][ASA] 
Error 5211: There is an error converting Unicode string to or from code page string. 
Some Unicode characters cannot be converted to code page characters. 

Ich habe versucht Ansistrings in dem Befehl, wie in;

AdsQuery1.SQL.Text:=AnsiString('SELECT something FROM sometable WHERE somefield=''somelocalçharaçterş'' '); 

Aber ohne Erfolg. Ich habe auch die AdsCollation-Werte von AdsConnection auf ANSI, OEM, TURKISH-1254 gesetzt, aber das Ergebnis war das gleiche. Irgendwelche Ideen?

+3

Es scheint mir, dass, da das Problem nur auftritt, wenn Sie * nicht parametrisierte Abfragen * verwenden, dass die Lösung ziemlich offensichtlich wäre: Verwenden Sie * parametrisierte * Abfragen. Nein? :) –

+0

Stimmt, aber das wäre extrem zeitaufwendig. Ich war auf der Suche nach einer Art Optimierung für AdsConnection oder einer anderen Art ... – AgentAdams

Antwort

2

Können Sie einen Blick auf die adscollate.adt werfen, die sich im selben Verzeichnis der adslocal32.dll befindet?

Eine mögliche Ursache des Problems laut der Hilfedatei ist, dass eine ältere Version von adscollate.adt vom Server geladen wird. Die 10.0-Version von adscollate.adt hat einige zusätzliche Spalten, von denen eine die "UnicodeLocale" ist.

Wie lautet die ANSI/OEM-Einstellung in der Datei adslocal.cfg?

Was ist das Ergebnis, wenn Sie diese "SELECT :: stmt.collation FROM system.iota" ausführen?