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

Вниз

Параметры 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
15-1255496803
И. Павел
2009-10-14 09:06
2009.12.13
Компоненты для смены скинов.


2-1256592395
Евгений Р.
2009-10-27 00:26
2009.12.13
Декодирование PHP строк


11-1209725067
ILPU
2008-05-02 14:44
2009.12.13
Как масштабировать изображение по размерам окна?


15-1255426204
pasha_golub
2009-10-13 13:30
2009.12.13
Что за орнагическое соединение?


2-1256704986
JohnLemon
2009-10-28 07:43
2009.12.13
киньте плиз ссылочку на документацию FastReport или QuickReport..