Приложете следния SQL оператор към ClientDataset като свойство Filter:
'(((DORcode > ''00'') AND (DORcode < ''10'')) AND (((SiteNumber+'' ''+SiteStreet+SiteCity)<>(OwnerAddr1+OwnerCity)) AND ((SiteNumber+SiteStreet+SiteCity)<>(OwnerAddr1+OwnerCity))) AND (TaxStatus > ''!''))'
Дава ми следната грешка: „)“ се очаква, но нищо не е намерено или (за >още по-дълъг израз): Несъответствие на типа.
Гмуркането в детайлите установи, че проблемът е причинен от дължината на изявлението, части от него работят, като:
'(((DORcode > ''00'') AND (DORcode < ''10'')) AND (((SiteNumber+'' ''+SiteStreet+SiteCity)<>(OwnerAddr1+OwnerCity))))';
или всяка друга по-къса част.
Всички имена на полета са валидни, наборът от данни не е празен, филтрите работят добре за всички включени имена на полета, ако изразът е по-кратък.
Така че грешката не е синтактична, явно е причинена от вътрешно изрязване на оператора, надвишаващо ограничението за брой символи (някъде между 111 и 196).
Въпросите ми са: 1. Някой забелязвал ли е тази грешка на Delphi XE5? 2. Пач ли е за него? 3. Как да решим филтрирането за първоначалния (дълъг) оператор по друг начин?
Благодаря ви предварително.
OnFilterRecord
за такава бъркотия с низове. - person TLama   schedule 09.03.2015