Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Int23 ©   (2008-03-21 15:01:00) 

Есть приложение, написанное на Д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 показует что там иероглифы. А для англ строки всё работает. В чём грабли?


sniknik   (2008-03-21 19:48:00) [1]

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


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

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


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

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


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

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


sniknik   (2008-03-21 16:52:00) [5]

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

> После присоения появляются иероглифы :(
> А для англ строки всё работает.
обыкновенное чудо...
проверь
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'
чудо...


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

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


Int23   (2008-03-21 16:21:00) [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


Johnmen   (2008-03-21 16:10:00) [8]

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


-----------------------------   (2008-03-21 16:09:00) [9]

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


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

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


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

ADO ?


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо