![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
приложение не передаёт в ms SQl русские буквы
AIK © (2009-12-08 10:16:00)Выполняю следующий запрос с помощью 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
AIK (2009-12-08 15:29:00) [1]УРА СДЕЛАЛ!!!
всё прекрасно работает, всё прояснилось когда начал всю базу заново создавать.
> у тебя этому 2 ветки посвящены, тебе это несколько раз повторяли
> в разных вариациях,
Ну так сложилось просил же сильно не пенать
sniknik (2009-12-08 14:47:00) [2]+
вообще, это не обязательное условие чтобы, это был коллатион по умолчанию, можно задавать явно, при создании базы/таблицы/поля, можно не задавать, можно приводить к нужному при операциях, можно в работать в юникоде, можно даже работать со строками как с бинарными массивами, вообще без коллатионов...
но это все требует чуть больше знаний чем если бы было просто по умолчанию.
в общем ты в той ветке поменял "велосипед на мопед" теперь просто обязан использовать/знать двигатель внутреннего сгорания, хотя бы по минимуму. иначе - "а чего это педали не вертятся?" или "я тут рычажок повернул (тормоз) и колеса перестали вращаться, почему?".
> Ну подскажи как мне настроить поля чтоб русский язык показывала
??????
у тебя этому 2 ветки посвящены, тебе это несколько раз повторяли в разных вариациях, или ты ждешь "чудо способ", типа "щелкнуть пальцами, дернуть волос из бороды и сказать трах тибедох три раза" (рецепт от Хотабыча). не будет такого, и через сто вопросов ответ будет один, либо делай по умолчанию либо разбирайся в "кухне". аминь.
AIK (2009-12-08 14:37:00) [3]Ну подскажи как мне настроить поля чтоб русский язык показывала
Cyrillic_General_BIN тоже пробовал без результата
sniknik (2009-12-08 14:30:00) [4]> Тогда в утилите и DBGride отображаются вопросительные знаки, и заносятся тоже
вот я и говорю
> так и не решенных [7]
AIK (2009-12-08 14:24:00) [5]
> у тебя этот колайтион по умолчанию? тогда убери юникод в
> полях
Нет по умолчанию SQL_Latin1_General_CP1_CI_AS
> поменяй на varchar
Тогда в утилите и DBGride отображаются вопросительные знаки, и заносятся тоже
sniknik (2009-12-08 13:56:00) [6]> Cyrillic_General_CS_AI
> А это разве не решение?
у тебя этот колайтион по умолчанию? тогда убери юникод в полях
> поле tov имеет тип nvarchar
поменяй на varchar
> И что значит:
>> если бы заменил все на новое тоже не столкнулся бы.
использовал юникод везде. ответ [1]! я что не по русски отвечаю? ты там у себя, что мои ответы тоже в виде "?????" читаешь?
AIK (2009-12-08 13:46:00) [7]
> ты понял почему коверкается?
Проблема была в collation (вроде)
> исправил это?
Cyrillic_General_CS_AI
А это разве не решение?
И что значит:
> если бы заменил все на новое тоже не столкнулся бы.
sniknik (2009-12-08 13:16:00) [8]> это почему не решенных?
ты понял почему коверкается? исправил это? нет, ты "обошел" начав использовать другое.
сейчас ты столкнулся с первой "проблемой" с немного другого бока, если бы исправил то не столкнулся бы, если бы заменил все на новое тоже не столкнулся бы.
clickmaker (2009-12-08 13:14:00) [9]> отправляю запрос через ADOQuery1.SQL.Add
может, так: insert into table(Field) values(N'вопросительные знаки в место русских букв') ?
AIK (2009-12-08 13:09:00) [10]Русский текс у меня прекрасно отображается в dbgrid’е и через SQL Server Enterprise Manager открываю тоже всё в порядке
И вообще интересно почему когда я добавляю поле через ADOQuery1.Insert в вожу всё не обходимое русскими буквами то всё прекрасно а когда отправляю запрос через ADOQuery1.SQL.Add то отправляются вопросительные знаки в место русских букв, вроде один и тодже компонент
> и кстати тут у тебя неявная такая "мелочь" из-за которых
> я и не рекомендую пользоваться ADOQuery (в паре с ADOTable
> и ADOStoredProc).
А как насчет ADODataSet
P.S. SQL начал учить только что, сильно не пинайте
AIK (2009-12-08 13:00:00) [11]
> а из-за проблем из прошлой ветки (так и не решенных)
это почему не решенных?
sniknik (2009-12-08 12:12:00) [12]> dbgrid это не тот инструмент
dbgrid тут пока еще не причем, у него сам запрос в анси (а заодно и значение для выборки т.к. включено в запрос), при операции с юникодным полем это значение приводится к юникоду, а из-за проблем из прошлой ветки (так и не решенных) оно при приведении "коверкается" в те же знаки вопроса что были, ну и в операцию передаются уже они, и ищет именно их... правильно ищет. :)
кстати еще как решение можно использовать "насильное" приведение одной из сторон условия к коллатиону другого. но, блин, из работающей практически "по умолчанию" системы делать монстра "на подпорках"... это нужно очень хорошо в этом разбираться, а не так как тут не понял чего то, вместо изучения сделал "затычкой" и повалились проблемы как снежный ком...
Anatoly Podgoretsky (2009-12-08 11:23:00) [13]> AIK (08.12.2009 10:16:00) [0]
Может и передает, dbgrid это не тот инструмент, что бы делать какие либо выводы. Запусти SSMS и там смотри.
sniknik (2009-12-08 11:01:00) [14]> легко. конвертация простым присвоением к нужному типу.
вот например
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1259658224&n=5
[7]
DName:= DomainName;
делается из-за того, что функция хочет юникод.
sniknik (2009-12-08 10:55:00) [15]и кстати тут у тебя неявная такая "мелочь" из-за которых я и не рекомендую пользоваться ADOQuery (в паре с ADOTable и ADOStoredProc). метод SQL это стринглист со всеми вытекающими из этого, он работает исключительно с анси строками... вайдестрока тут неявно приведется к анси, даже если изначально все задать правильно...
ну другая набившая всем оскомину рекомендация (но все одно никем не выполняющаяся пока пока из-за этого не "получат по зубам")... - пользоваться параметрами... значение параметра вполне могло бы быть юникодным.
вот почему все игнорируют то что им говорят, а после только и делают, что борются с последствиями? нет чтобы сразу пытаться понять, и после просто писать.... (риторический вопрос)
> А это как?
легко. конвертация простым присвоением к нужному типу.
AIK (2009-12-08 10:41:00) [16]
> sniknik © (08.12.09 10:24) [1]
> раз уж выбрал юникод то приводи все к нему.
А это как?
йцукен (2009-12-08 10:26:00) [17]Блин, приятно посмотреть. Наконец-то грамотный вопрос. В смысле задан грамотно, а не "не отображает русские буквы". Поздравляю с прогрессом.
К сожалению не в теме, за сим помочь не могу.
sniknik (2009-12-08 10:24:00) [18]раз уж выбрал юникод то приводи все к нему. либо разберись все таки в вопросе кодировок который задавал вчера.