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

Вниз

Как передать русскую строку в ХП на MS SQL 2005 из D7   Найти похожие ветки 

 
Int23   (2008-03-21 15:01) [0]

Есть приложение, написанное на Д7 и работающее с SQL 2005. Счас перевожу на 2005. Есть ХП у которой параметр объявлен так @Tag varchar(1000)=null. Пытаюсь из клиенсткого приложения выхвать эту ХП. И создаю параметр SP.AddParam_("@Tag", pdInput, ftString, 500, 0, Tag);
Затем присваиваю значение так
SP.Parameters.ParamByName("@Tag").Value := Tag;
Если Tag содержит русские буквы, то при просмотре SP.Parameters.ParamByName("@Tag").Value показует что там иероглифы. А для англ строки всё работает. В чём грабли?


 
Правильный_Вася   (2008-03-21 15:07) [1]

а varchar для русских подходит?
мож, нужно nvarchar?


 
Int23   (2008-03-21 15:10) [2]

Нет. varchar работает. Пробовал вызвать хп на сервере (SSMS)


 
Правильный_Вася   (2008-03-21 15:36) [3]

ADO ?


 
Int23   (2008-03-21 16:06) [4]

Да, ADO. Вот нашёл описание проблемы http://delphikingdom.com/asp/answer.asp?IDAnswer=59812 . Только решения там обходное. Мне такое не подходит.
И самое интересное пишу код
Prm:=SP.Parameters.ParamByName("@Tag").ParameterObject;
Prm.Value:="Строка";
После присоения появляются иероглифы :(


 
-----------------------------   (2008-03-21 16:09) [5]

Prm.Value:=WideStriing("Строка")
?


 
Johnmen ©   (2008-03-21 16:10) [6]

На заголовок ХП можно глянуть?


 
Int23   (2008-03-21 16:21) [7]

>>Prm.Value:=WideStriing("Строка")
Не полегчало :(

Заголовок
CREATE procedure dbo.MyProc
  @Security   xml=null    
 ,@ActionId   varchar(5)="view"
 ,@ActIdObj   varchar(5)=null
 ,@axObjectName varchar(512)=null
 ,@Tag          varchar(1000)=null
 ,@Blob       image=null
 ,@ObjectNo     bigint=null


 
Правильный_Вася   (2008-03-21 16:43) [8]

в параметрах подключения выставлены настройки локали?
совпадают ли с ожидаемыми в БД?


 
sniknik ©   (2008-03-21 16:52) [9]

> И создаю параметр
нафига? сам он создаст его наверняка правильнее

> После присоения появляются иероглифы :(
> А для англ строки всё работает.
обыкновенное чудо...
проверь
CREATE procedure MyProc
 @RysSt varchar(50),
 @LatSt varchar(50)
AS
 SELECT @RysSt COLLATE Cyrillic_General_CI_AS, @LatSt COLLATE Latin1_General_CS_AS

и выполнить варианты, посмотреть что вернет
MyProc "Строка", "Строка"
MyProc "String", "String"
чудо...


 
Int23   (2008-03-21 17:08) [10]

sniknik
Ды вы прям фокусник :) Т.е. у меня проблема с коннекшином. надо коллате настроить. А как это сделать?


 
Int23   (2008-03-21 17:19) [11]

На базе стоит Cyrillic_General_CI_AS, а в ConnectionString я ничего не прописываю. Как прописать?


 
Int23   (2008-03-21 17:42) [12]

Вообщем разобрался. Ошибка была у меня...... Watch показует иероглифы, но на скл посылается правильный запрос (сморел в Профилере). Пора отдыхать.....


 
sniknik ©   (2008-03-21 19:48) [13]

> Ошибка была у меня......
ага. тут
>> И создаю параметр
> нафига? сам он создаст его наверняка правильнее



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
2-1218563976
RoPs
2008-08-12 21:59
2008.09.21
Про Tray


15-1217264142
Gooler
2008-07-28 20:55
2008.09.21
Как отследить копирование экрана?


8-1186219449
Pasha L
2007-08-04 13:24
2008.09.21
Цветовые схемы в работе с jpg (инструмент IJL)


2-1218444544
lod
2008-08-11 12:49
2008.09.21
Компонент DateTimeParker


2-1218215765
Rimdus
2008-08-08 21:16
2008.09.21
Работа с датами