Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: CL | DM;

Вниз

Проблема при записи текста на русском текста в MSSQL2000   Найти похожие ветки 

 
jtiger   (2003-02-19 11:01) [0]

Я использую MSSQL200+D7+ADO. Пытаюсь записать в базу ФИО на русском. А в место русского в базе получаю каракули. В чем может проблема.
Делаю я это так:

with ADOQEmployee do
begin
Insert;
ADOQEmployeeId.Value := "1";
ADOQEmployeeLastName.Value := "Иванов";
...
Post;
end;
и вместо "Иванов", получаю "Eaaiia". Что за хрень?.


 
ermserg   (2003-02-19 11:20) [1]

Posmotri default collation


 
jtiger   (2003-02-19 11:33) [2]

to ermserg
смотрел на collation, менял с "SQL_Latin1_General_CP1251_CI_AS" на "Cyrillic_General" не помогает.


 
ermserg   (2003-02-19 17:36) [3]

I ne pomozhet esli menyayesh na urovne servera ili db. Kogda sozdayosh novuyu tablitsu, vse char polya berut default database collation (esli ne ukazivayesh collation yavno). Kogda sozdayesh novuyu db - ona poluchayet default collation servera (esli ne ukazivayesh collation yavno).


 
ermserg   (2003-02-19 17:38) [4]

P.S. Eto vso dla MSSQL2000, v 7-om po-drugomu.


 
Tux ©   (2003-02-20 00:22) [5]

А поля тово... nvarchar? Надо бы.


 
jtiger   (2003-02-20 05:55) [6]

To ermserg:
Делал все, что можно: 1. Создавал новую DB, где по умолчанию collation была "Cyrillic_General", пытался записать и ни фига - каракули.
2. Пробовал менять collation каждого поля различным образом, ну например с "Cyrillic_General" на "SQL_Latin1_General_CP1251_CI_AS" или наоборот. Ну не помогает.
3. Пытался менять на nvarchar. Вроде работает, но работает криво. Т.е. если я записываю русский в базу через Delphi и считываю его, то все нормально (при этом в Enterprise Manager-е вместо русского отображаются каракули). Если же я записываю напрямую через Enterprise Manager ручками, то при считывание в Delphi поля на русском появляются как "??????".
Вот такая хрень.

И еще, я заметил такую, если можно так сказать, особенность. Если я в Regional and Language Options выставляю для "Standarts and formats" - Russain, то все начинает работать нормально. Т.е. и записать и чтение работает нормально, и данные в DB MSSQL2000 тоже отображаются нормально на русском. Но стоит мне поменять региональные установки обратно на English (United States). И все
пошла кривизна. Ведь это же не нормально.

Может кто встречал такую проблему. Помоги плиз.


 
jtiger   (2003-02-21 06:24) [7]

Что ни кто не использует MSSQL2000+Delphi7+ADO.


 
MOA ©   (2003-02-21 10:24) [8]

>Если я в Regional and Language Options выставляю для "Standarts and formats" - Russain, то все начинает работать нормально
А у Вас Windows дуиает, что он не в России - тогда, м.б., проблема со шрифтами в EM?
Удачи!


 
jtiger   (2003-02-21 11:54) [9]

to MOA:
Нет EM прекрасно понимание и отображает на русском, т.е. если я напрямую набираю в EM на русском, то нет ни каких проблем.

Вообщем, целый день ковырялся и думаю, что это ГЛЮК 7-ых делфей.
Дело в том, что изменяемые данные храняться в кэше компонента ADOQuery. Тип полей данных - OleVariant. И при присваивание введенного русского текста полю, текст преобразуется к типу OleVariant. Так вот это преобразование и глючит.



 
SoftPacker   (2003-02-21 14:26) [10]

У меня была подобная проблема ... Необходимо указать серверу что пользователь под которым ты входишь в SQL -сервер то же являеться Russian: EM> Security> Login>Propertes>Language


 
jtiger   (2003-02-21 15:05) [11]

to SoftPacker
Нет не работает.


 
fio   (2003-02-21 17:24) [12]

Возможно проблема в используемом языке SQL-сервера
функция
@@LANGUAGE

SELECT @@LANGUAGE AS "Language Name"

Установить по умолчанию для всех
SET LANGUAGE us_english


 
jtiger   (2003-02-22 06:26) [13]

To fio:
SELECT @@LANGUAGE AS "Language Name"
как раз и выдает, что:

Language Name
---------------------------------------------------------------
us_english

(1 row(s) affected)


Нет проблема в не SQL сервере.

Еще до записи в БД SQL сервера, на клиенте, при вводе на русском, например в DBEdit, а затем выхода из DBEdit-а, и появляются каракули, т.е. еще до команды "ADOQuery.Post"

Решил проверить, что будет, если я попробую следующую конфигурацию - MSSQL2000+Delphi6+ADO. Оказалось, при такой конфигурации ВСЕ РАБОТАЕТ НОРМАЛЬНО, т.е. как и должно быть, и запись и чтение русского без проблем, изменение региональных установок также ни как ни влияет.

Поэтому я думаю, что это именно Delphi 7 глючит.


 
Delirium ©   (2003-02-22 18:01) [14]

> Поэтому я думаю, что это именно Delphi 7 глючит.

Некорректная фраза по отношению к Delphi 7. Надо бы так:
"Поэтому я думаю, что это у меня именно Delphi 7 глючит."


 
sniknik ©   (2003-02-22 22:46) [15]

> "??????".
Вот такая хрень.

вот это наводит на мысль, что некоректна работа с юникодом, именно так и бывает когда юникод в строку преобразовывать с неправильной позиции.
к примеру небольшой код, посмотри к чему приведет 2-е присваивание
var st, wt: string;
begin
st:= "String";
wt:= StringOfChar(#0, Length(St)*2+1);
StringToWideChar(st, Addr(wt[1]), Length(St)*2+1);
Label1.Caption:= WideCharToString(Addr(wt[1]));
Label2.Caption:= WideCharToString(Addr(wt[2]));
end;


то что в 6 работает а в 7 нет, тоже может служить подтверждением этому, слышал что там все на юникод перевели (утверждать конечно не буду т.к. не работал в 7-ом).


 
jtiger   (2003-02-24 06:06) [16]

to Delirium:
согласен.

to sniknik:
проверить уже не могу, снес я Delphi 7 и установил Delphi 6.
Наверное вы правы на счет юникод. Но мне от это не хуже не лучше. Факт остается фактом, что с русским У МЕНЯ 7-ые Делфи нормально не работают (это только, конечно, при использовании ADO).


 
yozhik ©   (2003-02-24 12:22) [17]

У нас была такая же проблема...
Оказалось все в настройках виндов (Win 2000 Server), дожен стоять русский язык по умолчанию



Страницы: 1 вся ветка

Текущий архив: 2003.03.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
1-54107
Korvet
2003-03-05 19:07
2003.03.17
Создание дерева пустых каталогов


3-53935
fool
2003-02-26 12:13
2003.03.17
ADO - после Post обнуляеться(NULL) значение поля, почему?


14-54279
Hint
2003-02-20 17:46
2003.03.17
А что нам надо?


1-54082
Maxim2030
2003-03-05 10:27
2003.03.17
Вопрос по $IFDEF


14-54194
Товарищъ
2003-03-03 05:49
2003.03.17
Смерть?! Или нет?!