Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Логика работы ADO-компонентов [D7, dBase, FoxPro]


Страницы:   1 2

Сергей М. ©   (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
>
> возвращает заведомо ожидаемый пустой НД.


Пардон, это ляп.

Читать - "Заведомо НЕожидаемый пустой НД"


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо