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

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

MSSQL+ADOStoredProc - проблема с кириллицей [D7, MSSQL]


w666w ©   (2008-02-07 00:06:00) 

Проект использует БД MSSQL, клиент на делфи. Работа только через хранимки, параметры к ХП добавляются в процедуре:

procedure TformMain.AddParamToADOStoredProc(StoredProc: PADOStoredProc; ParamName: String; ParamType: TFieldType; ParameterDirection: TParameterDirection; Size: Integer);
var Parameter : TParameter;
begin
   Parameter := StoredProc^.Parameters.AddParameter;
   Parameter.Name := ParamName;
   Parameter.DataType := ParamType;
   Parameter.Attributes := [paNullable];
   Parameter.Direction := ParameterDirection;
   Parameter.Size := Size;
end;

Проблема - не передаются кириллические строки в параметре:

AddParamToADOStoredProc(SP_Procedure1, '@_SOME_NAME', ftString, pdInput, 200);

На БД получаем знаки вопроса. В чем может быть проблема? Всю голову сломали уже :(

Заранее спасибо!


Anatoly Podgoretsky   (2008-02-07 14:50:00) [1]

Не видя DDL обсуждать бессмысленно и вредно.


Stas   (2008-02-07 13:16:00) [2]

w666w   (07.02.08 00:20) [1]
>Альтернатив ftString как тип параметра я не нашел, куда копать?
ftWideString


Anatoly Podgoretsky   (2008-02-07 12:25:00) [3]

Да и использование параметров, их типы в базе и т.д. ничего не приведоно.
Переведу ка я это в соответствующую конференцию.


Anatoly Podgoretsky   (2008-02-07 12:16:00) [4]

Возможно у него MS SQL 6.5
Он же не указывает, что у него, да и Дельфи не знает, поскольку код из старого Паскаля.


Anatoly Podgoretsky   (2008-02-07 12:14:00) [5]

Преобразование в вопросики это признак не соответствия кодовой страницы текста с текущей кодовой странице, например бессмысленно пытаться преобразовывать русский текст в английскую кодовую страницу, ну нет там русских букв, только и остается как заменить на вопросики.


sniknik   (2008-02-07 10:28:00) [6]

> неверная локализация машины
в данном случае скорее неверная работа с параметрами (и х.з. с чем там еще, что еще может вылезти), несовпадение локализаций при переводе из юникода (а MSSQL через него локализации "переводит").

> Переходи на Юникод.
это конечно поможет... но, это сложнее, и если он все так пишет (см. код), кто знает каких ляпов он еще и с ним понаделает.

кстати можно проверить,
вот тут
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1199805755&n=1
я давал ссылку на тестовую программу, в ней можно сделать аналогичный запрос с параметрами и русским значениями в них. в ней есть проблема?
если нет, то это она в твоей программе (неправильно задаются).
если есть то это уже "виновата" серверная сторона пытается принять не в той кодировке. и нужно настраивать коллатионы в базе.


Anatoly Podgoretsky   (2008-02-07 08:52:00) [7]

> w666w  (07.02.2008 00:06:00)  [0]

Старо как мир, неверная локализация машины. Переходи на Юникод.


sniknik   (2008-02-07 08:35:00) [8]

> но каждый символ состоит из 2-х  байт вместо одного, первый из которых - сам символ, второй - всегда
это юникод. и ноль не всегда, просто тебе еще не попадалось другого значения.

а нормально задавать параметры не пробовали? обязательно через анус все делать?

и работать не через сторедпрос а нормальный ADODataSet/Command, ставиш там тип что запрос - процедура, и он тебе при выборе процедуры сам все пропишет (нужен коннект к базе на тот момент), останется только значения параметрам дать (и ничего больше! а то сломаете).


w666w   (2008-02-07 02:36:00) [9]

тип ftVarBytes передает кириллицу нормально, но каждый символ состоит из 2-х  байт вместо одного, первый из которых - сам символ, второй - всегда 0. Схожу с ума...


w666w   (2008-02-07 01:54:00) [10]

нашел такой пост

http://www.dbforums.com/archive/index.php/t-387445.html

Может трабла у меня в OLE DB Provider? если да, как его кириллице научить? :(

Помогите :((


w666w   (2008-02-07 00:20:00) [11]

Ну само сабой что в самом коде проблем нет, с латиницей весь проект работает отлично. Альтернатив ftString как тип параметра я не нашел, куда копать?


Наверх

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