Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Eintrag in DB Kyrillisch nur ?????? (https://www.delphipraxis.net/182638-eintrag-db-kyrillisch-nur.html)

Pet04 6. Nov 2014 13:27

Datenbank: MSSQL • Version: 2008 R2 • Zugriff über: Adoq

Eintrag in DB Kyrillisch nur ??????
 
Hallo,

ich habe folgendes Problem.
Ich habe ein Array welches korrekt in kyrillisch übersetzt wird.
Wenn ich es in die DB eintrage habe ich nur ?????????



ADOT_TempFehler['Stationsname'] := station_array[SQL_Station_Typ];

hat jemand eine Lösung wie ich das Array umwanden muss, damit es richtig eingetragen wird ?


Gruß
Pet

Bernhard Geyer 6. Nov 2014 13:33

AW: Eintrag in DB Kyrillisch nur ??????
 
Die wichtigste Infos fehlt:

- Welche Delphi-Version (Erst ab D2009 wird es mit ADOExpress/dbGo direkt so einfach gehen)
- Nur bei nvarchar-Feldern geht es. varchar-Felder sind Ansi.

Pet04 6. Nov 2014 13:36

AW: Eintrag in DB Kyrillisch nur ??????
 
ups sorry XE2 und Felder sind auf nvarchar gestellt

himitsu 6. Nov 2014 13:40

AW: Eintrag in DB Kyrillisch nur ??????
 
Zitat:

Zitat von Pet04 (Beitrag 1278912)
Ich habe ein Array welches korrekt in kyrillisch übersetzt wird.

Wie?

Und was ist station_array?

Was für ein Encoding benutzt die DB, bzw. das Feld und was nutzt die Connection?

Pet04 6. Nov 2014 13:41

AW: Eintrag in DB Kyrillisch nur ??????
 
Das Array ist ein String welches mit gnugettext "übersetzt" wird

Bernhard Geyer 6. Nov 2014 14:03

AW: Eintrag in DB Kyrillisch nur ??????
 
Verwende mal lieber die AsString-Methoden.

Also

Delphi-Quellcode:
ADOT_TempFehler.FieldByName('Stationsname').AsString := station_array[SQL_Station_Typ];


Bei deiner Version wird über (Ole)Variants gegangen und ich habe hier im Hinterkopft das das nicht immer 100% OK läuft ...

Pet04 6. Nov 2014 14:20

AW: Eintrag in DB Kyrillisch nur ??????
 
ändert sich nichts

baumina 6. Nov 2014 14:26

AW: Eintrag in DB Kyrillisch nur ??????
 
Das hier hatte dich auch nicht weiter gebracht?

Oder das

Pet04 6. Nov 2014 14:44

AW: Eintrag in DB Kyrillisch nur ??????
 
nicht wirklich

himitsu 6. Nov 2014 15:07

AW: Eintrag in DB Kyrillisch nur ??????
 
Dann beantworte endlich mal alle nötigen Fragen.

Wie ist das Array definiert?
Wie ist ds encoding der Datenbank, des Feldes und der Connection?
"welches korrekt in kyrillisch übersetzt wird" und das ist auch ganz sicher so?


Ansonsten können wir aufhören, da keiner Helfen kann, außer in wilden Spekulationen rumzuraten oder die kaputte Glaskugel zu befragen.

Pet04 7. Nov 2014 07:57

AW: Eintrag in DB Kyrillisch nur ??????
 
Wie ist das Array definiert?

station_array: array [0 .. 210] of string;

Wie ist ds encoding der Datenbank, des Feldes und der Connection?

Wo sehe ich die Einstellungen fürs Encoding der DB ?
Die Tabellenspalte ist als nvarchar() definiert.

Meine DB Connection:
Server=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Datenbankname;Data Source=.\

"welches korrekt in kyrillisch übersetzt wird" und das ist auch ganz sicher so?

ja

Über insert... wird es richtig eingetragen, daher gehe ich davon aus, dass die Einstellungen richtig ist.

Bernhard Geyer 7. Nov 2014 08:18

AW: Eintrag in DB Kyrillisch nur ??????
 
Sind Persistente Felder definiert?

Dejan Vu 7. Nov 2014 08:30

AW: Eintrag in DB Kyrillisch nur ??????
 
Vermutlich schafft der Treiber es nicht, ein 'N' vor das Stringliteral bei der Parametrierung zu setzen. Ich würde mir mal im Profiler anschauen, welcher SQL-Befehl genau zum Server geschickt wird. Ich war neulich so blöd, und hab das direkt im SSMS geschafft, also etwas kyrillisches in ????? zu verwandeln, nämlich so:
Code:
declare @foo nvarchar(20)
set @foo = '<etwas kyrillisches>'
select @foo
Ergebnis: '??????'
Code:
declare @foo nvarchar(20)
set @foo = N'<etwas kyrillisches>'
select @foo
Ergebnis: '<etwas kyrillisches>'

Bei falsches Codepages würde ich annehmen, das einfach ein anderer Buchstabensalat rauskommt. Bei reinen '????' auf Datenverlust im SQL-Skript.

Bernhard Geyer 7. Nov 2014 08:46

AW: Eintrag in DB Kyrillisch nur ??????
 
Der Treiber hat hier mit Sicherheit kein Problem (Verwende ADO+D6 seit Jahren und habe keine Probleme mit nvarchar-Feldern).
Wenn dann hat hier die ADOExpress/dbGo-Implemenetierung der verwendeten Delphi-Version einen Fehler (Verwende bei uns eben kein dbGo).

Probier mal statt .AsString .AsWideString aus.

Dejan Vu 7. Nov 2014 11:06

AW: Eintrag in DB Kyrillisch nur ??????
 
'Treiber' war wirklich falsch formuliert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz