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

Вниз

приложение не передаёт в ms SQl русские буквы   Найти похожие ветки 

 
AIK ©   (2009-12-08 10:16) [0]

Выполняю следующий запрос с помощью ADOQuery
ADOQuery1.SQL.Add("Select * from _baza where key_sv = "1" and tov LIKE """+edit1.Text+"%"" ;");
Код работает при в воде En раскладкой букв в Едит в DBDrid’е отображаются все начинающиеся на это поля. Но когда начинаешь в водить русские буквы то выводит только  поле с содержанием в tov ??????????? которое я специально создал для проверки.
Вопрос  как передать в запросе в SQL русские буквы

P.S. DBGrid прекрасно отображает русские буквы
P.S.S В таблице _baza поле tov имеет тип nvarchar, collation = Cyrillic_General_CS_AI


 
sniknik ©   (2009-12-08 10:24) [1]

раз уж выбрал юникод то приводи все к нему. либо разберись все таки в вопросе кодировок который задавал вчера.


 
йцукен   (2009-12-08 10:26) [2]

Блин, приятно посмотреть. Наконец-то грамотный вопрос. В смысле задан грамотно, а не "не отображает русские буквы". Поздравляю с прогрессом.
К сожалению не в теме, за сим помочь не могу.


 
AIK ©   (2009-12-08 10:41) [3]


> sniknik ©   (08.12.09 10:24) [1]
> раз уж выбрал юникод то приводи все к нему.


А это как?


 
sniknik ©   (2009-12-08 10:55) [4]

и кстати тут у тебя неявная такая "мелочь" из-за которых я и не рекомендую пользоваться ADOQuery (в паре с ADOTable и ADOStoredProc). метод SQL это стринглист со всеми вытекающими из этого, он работает исключительно с анси строками... вайдестрока тут неявно приведется к анси, даже если изначально все задать правильно...

ну другая набившая всем оскомину рекомендация (но все одно никем не выполняющаяся пока пока из-за этого не "получат по зубам")... - пользоваться параметрами... значение параметра вполне могло бы быть юникодным.

вот почему все игнорируют то что им говорят, а после только и делают, что борются с последствиями? нет чтобы сразу пытаться понять, и после просто писать.... (риторический вопрос)

> А это как?
легко. конвертация простым присвоением к нужному типу.


 
sniknik ©   (2009-12-08 11:01) [5]

> легко. конвертация простым присвоением к нужному типу.
вот например
http://delphimaster.net/view/4-1259658224/
[7]
DName:= DomainName;
делается из-за того, что функция хочет юникод.


 
Anatoly Podgoretsky ©   (2009-12-08 11:23) [6]

> AIK  (08.12.2009 10:16:00)  [0]

Может и передает, dbgrid это не тот инструмент, что бы делать какие либо выводы. Запусти SSMS и там смотри.


 
sniknik ©   (2009-12-08 12:12) [7]

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

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


 
AIK ©   (2009-12-08 13:00) [8]


> а из-за проблем из прошлой ветки (так и не решенных)


это почему не решенных?


 
AIK ©   (2009-12-08 13:09) [9]

Русский текс у меня прекрасно отображается в dbgrid’е и через SQL Server Enterprise Manager открываю тоже всё в порядке
И вообще интересно почему когда я добавляю поле через ADOQuery1.Insert в вожу всё не обходимое русскими буквами то всё прекрасно а когда отправляю запрос через ADOQuery1.SQL.Add то отправляются вопросительные знаки в место русских букв, вроде один и тодже компонент


> и кстати тут у тебя неявная такая "мелочь" из-за которых
> я и не рекомендую пользоваться ADOQuery (в паре с ADOTable
> и ADOStoredProc).


А как насчет ADODataSet

P.S.  SQL начал учить только что, сильно не пинайте


 
clickmaker ©   (2009-12-08 13:14) [10]

> отправляю запрос через ADOQuery1.SQL.Add

может, так: insert into table(Field) values(N"вопросительные знаки в место русских букв") ?


 
sniknik ©   (2009-12-08 13:16) [11]

> это почему не решенных?
ты понял почему коверкается? исправил это? нет, ты "обошел" начав использовать другое.

сейчас ты столкнулся с первой "проблемой" с немного другого бока, если бы исправил то не столкнулся бы, если бы заменил все на новое тоже не столкнулся бы.


 
AIK ©   (2009-12-08 13:46) [12]


> ты понял почему коверкается?

Проблема была в collation (вроде)


> исправил это?

Cyrillic_General_CS_AI

А это разве не решение?

И что значит:

> если бы заменил все на новое тоже не столкнулся бы.


 
sniknik ©   (2009-12-08 13:56) [13]

> Cyrillic_General_CS_AI
> А это разве не решение?
у тебя этот колайтион по умолчанию? тогда убери юникод в полях
> поле tov имеет тип nvarchar
поменяй на varchar

> И что значит:
>> если бы заменил все на новое тоже не столкнулся бы.
использовал юникод везде. ответ [1]! я что не по русски отвечаю? ты там у себя, что мои ответы тоже в виде "?????" читаешь?


 
AIK ©   (2009-12-08 14:24) [14]


> у тебя этот колайтион по умолчанию? тогда убери юникод в
> полях

Нет по умолчанию SQL_Latin1_General_CP1_CI_AS


> поменяй на varchar

Тогда в утилите и DBGride отображаются вопросительные знаки, и заносятся тоже


 
sniknik ©   (2009-12-08 14:30) [15]

> Тогда в утилите и DBGride отображаются вопросительные знаки, и заносятся тоже
вот я и говорю
> так и не решенных [7]


 
AIK ©   (2009-12-08 14:37) [16]

Ну подскажи как мне настроить поля чтоб русский язык показывала
Cyrillic_General_BIN тоже пробовал без результата


 
sniknik ©   (2009-12-08 14:47) [17]

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

в общем ты в той ветке поменял "велосипед на мопед" теперь просто обязан использовать/знать двигатель внутреннего сгорания, хотя бы по минимуму. иначе - "а чего это педали не вертятся?" или "я тут рычажок повернул (тормоз) и колеса перестали вращаться, почему?".

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


 
AIK ©   (2009-12-08 15:29) [18]

УРА СДЕЛАЛ!!!
всё прекрасно работает, всё прояснилось когда начал всю базу заново создавать.


> у тебя этому 2 ветки посвящены, тебе это несколько раз повторяли
> в разных вариациях,


Ну так сложилось просил же сильно не пенать



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

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

Наверх




Память: 0.52 MB
Время: 0.01 c
3-1233848470
M@D
2009-02-05 18:41
2010.01.31
Excel + Delphi


15-1258984807
Unknown user
2009-11-23 17:00
2010.01.31
Кнопка Favorites в диалогах Open/Save в Windows XP


1-1233598079
Deltas
2009-02-02 21:07
2010.01.31
Сервер COM (.EXE)


15-1259189494
POOP
2009-11-26 01:51
2010.01.31
Проблема с D-Link G520


2-1260362586
lorik08
2009-12-09 15:43
2010.01.31
помогите с графикой