![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 как тип параметра я не нашел, куда копать?