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

Вниз

MSSQL+ADOStoredProc - проблема с кириллицей   Найти похожие ветки 

 
w666w   (2008-02-07 00:06) [0]

Проект использует БД 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);

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

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


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

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


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

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

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

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

Помогите :((


 
w666w   (2008-02-07 02:36) [3]

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


 
sniknik ©   (2008-02-07 08:35) [4]

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

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

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


 
Anatoly Podgoretsky ©   (2008-02-07 08:52) [5]

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

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


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

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

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

кстати можно проверить,
вот тут
http://delphimaster.net/view/3-1199805755/
я давал ссылку на тестовую программу, в ней можно сделать аналогичный запрос с параметрами и русским значениями в них. в ней есть проблема?
если нет, то это она в твоей программе (неправильно задаются).
если есть то это уже "виновата" серверная сторона пытается принять не в той кодировке. и нужно настраивать коллатионы в базе.


 
Anatoly Podgoretsky ©   (2008-02-07 12:14) [7]

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


 
Anatoly Podgoretsky ©   (2008-02-07 12:16) [8]

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


 
Anatoly Podgoretsky ©   (2008-02-07 12:25) [9]

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


 
Stas ©   (2008-02-07 13:16) [10]

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


 
Anatoly Podgoretsky ©   (2008-02-07 14:50) [11]

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



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1202236794
fics
2008-02-05 21:39
2008.03.02
Проблемка с цветом компонента на разных ПК


15-1201437254
Семеныч
2008-01-27 15:34
2008.03.02
Парадокс


2-1202065033
San1712
2008-02-03 21:57
2008.03.02
Как узнать начальный и последний адрес программы в памяти ?


2-1202040662
slavon
2008-02-03 15:11
2008.03.02
Освобождение памяти


15-1201519922
No_Dead
2008-01-28 14:32
2008.03.02
А не подскажете как правильно пишется&#133