![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Логика работы ADO-компонентов [D7, dBase, FoxPro]
Сергей М. © (2007-03-14 15:31:00)Некий ADODataSet ориентирован на открытие НД с использованием Microsoft.Jet.OLEDB.4.0 и ISAM=dBase IV
1. Активация компонента при условиях
CommandText = 'SELECT * Table'
Filter = Field LIKE ' XX*'
Filtered = TRUE
возвращает заведомо ожидаемый непустой НД.
2. Активация компонента при
CommandText = SELECT * Table WHERE Field LIKE ' XX*'
Filtered = FALSE
возвращает заведомо ожидаемый пустой НД.
Где засада ?
Ткните, пож., носом ..
Оекружение/конфигурацию готов уточнить
Anatoly Podgoretsky (2007-03-14 19:23:00) [21]> Сергей М. (14.03.2007 15:31:00) [0]
Вероятно интерпритатор запроса выбрасывает пробелы в начале строки
sniknik (2007-03-14 17:50:00) [22]> установка мной св-ва Filtered = True должна обязывать упомянутый компонент добавлять в конец строки св-ва CommandText
логика ошибочна.
Filtered фильтрует уже полученный на клиента рекордсет, а то что в команде (CommandText) то выполняется сервером, ограничивает саму выборку.
и кстати, теоретически(!) может быть разница между синтаксисом в запросе и синтаксисом в фильтре. т.к. это разные вещи. (т.е. в одном случае может быть * в другом %, в одних и тех же компанентах... )
stud (2007-03-14 17:33:00) [23]так а разве при использовании св-ва фильтеред фильтрация происходит не на клиенте из полученого набора?
Сергей М. (2007-03-14 17:00:00) [24]
> Johnmen © (14.03.07 16:41) [12]
> Странно это всё. Очень странно....
> А что в реале вместо XX?
В "реале", к примеру, 62 (да мало ли в Бразилии педров ?!)) ...)
А было б не странным - разве я постил бы этот "странный" вопрос ?)
По моей "дубовой" логике, установка мной св-ва Filtered = True должна обязывать упомянутый компонент добавлять в конец строки св-ва CommandText значение указанного мной св-ва Filter (с неявным префиксом WHERE), что, собственно, успешноинтерпретируется, иначе бы я схлопотал соотв.ошибку.
Johnmen (2007-03-14 16:41:00) [25]
> Сергей М. © (14.03.07 16:12) [11]
Понимаю...
Странно это всё. Очень странно....
А что в реале вместо XX?
Сергей М. (2007-03-14 16:12:00) [26]
> Johnmen
Все эксперименты, вызвавшие вопросы, проводятся в дизайн-тайм, "отсебячина" тут, сам понимаешь, минимальна
Сергей М. (2007-03-14 16:10:00) [27]
> Johnmen © (14.03.07 16:06) [8]
>
> ещё вопрос - что значит "Активация компонента"
Active <- True
> почему в запросе нет FROM?
>
Пардон, очепятка.
Разумеется он есть, иначе бы не было вопроса
Сергей М. (2007-03-14 16:08:00) [28]
> какого типа Field?
Строкового, разумеется ..
И индекс (неуникальный) по полю имеется ...
Поле имеет вормат Char(8)
Johnmen (2007-03-14 16:06:00) [29]ещё вопрос - что значит "Активация компонента"
и почему в запросе нет FROM?
stud (2007-03-14 16:06:00) [30]Сергей М. © (14.03.07 15:31)
SELECT * Table WHERE Field LIKE ' XX*'
так а выполнить этот запрос например в sqlexplorer или аналогичной оболочке?
Johnmen (2007-03-14 16:04:00) [31]
> Сергей М. © (14.03.07 15:45) [3]
> Я заменил шаблон * на % - та же самая печальная ситуация)Да дело даже
> не в символе-шаблоне, как видно ..
Если замена не помогла, вот только тогда и видно...
Один вопрос - какого типа Field?
Сергей М. (2007-03-14 15:52:00) [32]А не следует ли мне проанализировать трассировку запросов, формируемых средствами ADO ?
Если есть резон, то чем лучше/удобней/дешевле/надежней ?
Сергей М. (2007-03-14 15:48:00) [33]результаты
SELECT ... WHERE Field LIKE ' XX *'
SELECT ... WHERE Field LIKE ' XX %'
одинаковы - НД как был пуст , так и им остался
Сергей М. (2007-03-14 15:45:00) [34]
> Johnmen © (14.03.07 15:36) [2]
"Где-то" это где ?
Я заменил шаблон *на %- та же самая печальная ситуация)
Да дело даже не в символе-шаблоне, как видно ..
Johnmen (2007-03-14 15:36:00) [35]Где-то используется *, а где-то %
Для SQL стандартом считается именно %
Сергей М. (2007-03-14 15:33:00) [36]
> 2. Активация компонента при
>
> CommandText = SELECT * Table WHERE Field LIKE ' XX*'
> Filtered = FALSE
>
> возвращает заведомо ожидаемый пустой НД.
Пардон, это ляп.
Читать - "Заведомо НЕожидаемый пустой НД"