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