Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Вниз

Параметры ADO и условие like   Найти похожие ветки 

 
Palladin ©   (2009-01-07 13:32) [0]

mssql2000, простенькая таблица со строковым полем name


q:TADOQuery;

q.sql.text:="select name from table where name like :PName";
q.Parameters.ParamByName("PName").Value:="стр%";
q.Open;


пустой набор приходит, если же тупо подставить в like строчку, то все хорошо, возвращает то, что надо.

чего я не знаю о параметрах с like условием?


 
sniknik ©   (2009-01-07 13:36) [1]

> пустой набор приходит
а вот не должно бы...
правда с TADOQuery даже проверять не буду.


 
sniknik ©   (2009-01-07 13:42) [2]

кстати вспомнил, был глюк в какой то версии дельфей (sp?) с параметром если он стоит последним в строке, попробуй изменить запрос на такой к примеру
select name from table where name like :PName AND 1=1
если сработает значит ты на него, этот глюк, нарвался.


 
Palladin ©   (2009-01-07 13:44) [3]

звиняюсь, вопрос снимаю. оказывается для lik"а нужно вручную указывать DataType у параметра, что он ftString. довольно, странно...


 
Palladin ©   (2009-01-07 13:48) [4]


> sniknik ©   (07.01.09 13:42) [2]

пробовал. та же ерунда.
вообще странно. но, как уже сказал, тупо указание типа параметра сработывает.


 
sniknik ©   (2009-01-07 13:51) [5]

> оказывается для lik"а нужно вручную указывать DataType у параметра
не может такого быть, если параметр ftUnknown а он такой и есть если не смог определится с сервера то тип присваивается по типу варианта входного значения т.е. -> "стр%" стринг.

посмотри какой тип определился сразу после внесения запроса. ???


 
Palladin ©   (2009-01-07 13:54) [6]

уж поверь, я своим глазам верю :)


 
sniknik ©   (2009-01-07 14:00) [7]

а я тебе верю, но выяснить что не так разве не интересно?


 
Palladin ©   (2009-01-07 14:02) [8]

интересно, вечерком мы вместе с пивом будем это выяснять )


 
Anatoly Podgoretsky ©   (2009-01-07 16:58) [9]

Cлучайно Name не nvarchar?


 
Palladin ©   (2009-01-07 20:28) [10]

угу, он самый. самое интересное. у парамера в обоих случаях (и like и просто = (равно) ) DataType есть ftFixedChar (adChar). однако с = присвоение Value корректно отраьатывает, с like же - чепуха. бред какой то... испробовал оба провайдера Native и стандартный... результат ничем не отличается...


 
sniknik ©   (2009-01-07 21:48) [11]

а у меня единственная разница в том, что с nvarchar определяет WideString вместо String, но результаты есть в обоих случаях.
и отличие, дельфи у меня 7я я не 6я, а mssql 2000й а не 2005й.


 
Palladin ©   (2009-01-07 22:09) [12]

думаю, дело не в версии делфи... adChar тип параметра... а не adVarChar, который по логике быть должен... завтра продолжу, экспиримент на asp проведу... нативней некуда... )

ну я йода мля ) с пда писать себе переписывать дороже )


 
Anatoly Podgoretsky ©   (2009-01-07 22:18) [13]

> Palladin  (07.01.2009 20:28:10)  [10]

Ну тогда я знаю ответ.
В Д6/Д7 nvarchar и еще ряд других функций неправильно работает в параметрах.
Ошибка Борланда с оберткой над АДО.
Решения нет и единственная возможность это переход на Д2006 и выше, там эту ошибку исправили.
Не поможет даже правка генофонда, он просто не компилируется никакими простыми методами.


 
sniknik ©   (2009-01-07 23:41) [14]

> В Д6/Д7 nvarchar и еще ряд других функций неправильно работает в параметрах.
у меня D7 и с nvarchar работает правильно...  во всяком случае вот этот конкретный случай ([0] только ADODataSet а не квери)


 
Anatoly Podgoretsky ©   (2009-01-08 16:31) [15]

Я в свое время из-за ошибок в АДО с типами, последовательно переходил с Д5 на Д6, Д7, Д2006 - ошибки касались типов Date/AutoInc/WideString и других. Конечно где какая ошибка устранялась я не помню. Но вот небольшой кусок из Quality Central

http://bdnqc.borland.com/wc/qcmain.aspx?d=8854

касается немного другого вопроса, но Д7 и тот же самый кусок, конечно можно поискать другую ссылку, где говорится, что параметр типа ftWideString возвращался как ftFixedChar. Таких мест несколько. Я проверил свой adodb.pas - у меня исправлен каким то патчем, а у автора статьи еще нет, и у меня тоже самое было на оригинале без патчей.
В 2006 у меня все заработало, с Date/AutoInc/WideString, без патчей. Хотя там еще есть ошибки с АДО, но я с ними не сталкиваюсь.
Неправильные объявления в функциях ADOTypeToFieldType и FieldTypeToADOType


 
sniknik ©   (2009-01-08 17:19) [16]

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

> каким то патчем
может TNT ставил (или чего там у них сейчас).


 
Anatoly Podgoretsky ©   (2009-01-08 18:24) [17]

> sniknik  (08.01.2009 17:19:16)  [16]

Может по этому и кажется?
Я привел название двух функций их и нужно проверить.



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

Форум: "Базы";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1256817080
d@nger
2009-10-29 14:51
2009.12.13
DBGrid и цвет выбранной ячейки


2-1256031787
kyn66
2009-10-20 13:43
2009.12.13
Глюк компонента TCheckBox ?


2-1256632484
Max1
2009-10-27 11:34
2009.12.13
Имитация зажатия Shift


2-1256201388
ghost
2009-10-22 12:49
2009.12.13
проверка на недопустимые символы


2-1256034201
Yes
2009-10-20 14:23
2009.12.13
определить есть ли связь с базой оракл?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский