Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1202457429
dj0n
2008-02-08 10:57
2008.03.02
как скопировать файл если такой уже есть??


15-1201263477
TUser
2008-01-25 15:17
2008.03.02
Обживаем вин2003: множественность рабочих столов


15-1201527834
Kerk
2008-01-28 16:43
2008.03.02
50 работодателей мечты для молодого специалиста


8-1175137172
VitAngel
2007-03-29 06:59
2008.03.02
Пожалуйста, помогите с установкой DSPack


15-1201524459
DillerXX
2008-01-28 15:47
2008.03.02
MatAn music





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский