Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c