Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Метод Find ADOшного Recordsetа??? / 13 сообщений из 13, страница 1 из 1
14.10.2004, 14:43
    #32738539
Pril
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Знатоки ADO! Помогите пожалуйста!
Есть нужда использовать метод Find ADOшного Recordsetа со строкой, содержащей условие для поиска, примерно следующего вида:
(([ДатаВремя]>=#14.10.2004 12:00:00#)AND([ДатаВремя]<#14.10.2004 13:00:00#))
При выполнении возникает исключение, описание такое:
Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом
Я проделал огромное количество попыток, менял формат даты, пробовал с другим полем, типа int, менял формат строки, убирая/добавляя скобки и пробелы, НИЧЕГО НЕ ПОМОГАЕТ.
По отдельности половинки условия работают нормально, но как только в строку вставляю AND..., сразу ошибка.
Пробовал проделать то же самое при помощи свойства Filter (хотя в моем случае это и не помогает решению задачи), в описании которого явным образом указано, что можно объединять части условия операторами AND и OR, так результат был такой же.
Пробовал так же указывать в строке не существующие в таблице поля, а так же в половинчатом условии указывать не существующую дату, диагностика та же.
Заранее благодарен всем откликнувшимся.
...
Рейтинг: 0 / 0
14.10.2004, 15:11
    #32738645
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Ну а субд какая ?!
...
Рейтинг: 0 / 0
14.10.2004, 15:20
    #32738671
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Это известный BUG...
PRB: ADO Find Method Only Supports One Criteria (see Q195222)
...
Рейтинг: 0 / 0
14.10.2004, 15:48
    #32738775
poland
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Я использую для поиска и удаления SQL (TADOQuery) с условиями вида

WHERE evdate >= {ts 'yyyy-mm-dd hh:nn:ss'} AND evdate =< {ts 'yyyy-mm-dd hh:nn:ss'}

все работает и для VFP и для MSSQL
...
Рейтинг: 0 / 0
14.10.2004, 16:19
    #32738845
Pril
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
JibSkeartНу а субд какая ?!
Пробовал с MS Access и MS SQL Server

buserЭто известный BUG...
PRB: ADO Find Method Only Supports One Criteria (see Q195222)
Спасибо, посмотрел, действительно очень похоже, но специалисты от Microsoft рекомендуют использовать свойство Filter, в котором де multiple criteria работает, а у меня использование этого свойства вызывает ту же самую ошибку!
...
Рейтинг: 0 / 0
14.10.2004, 16:23
    #32738852
Pril
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
polandЯ использую для поиска и удаления SQL (TADOQuery) с условиями вида

WHERE evdate >= {ts 'yyyy-mm-dd hh:nn:ss'} AND evdate =< {ts 'yyyy-mm-dd hh:nn:ss'}

все работает и для VFP и для MSSQL
К сожалению этот способ мне не подходит, так как речь идет о циклическом добавлении(редактировании) большого количества строк, и если после каждой строки выполнять Update и заново открывать Recordset, будет очень долго.
...
Рейтинг: 0 / 0
14.10.2004, 16:33
    #32738874
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
дело скорее всего в формате даты... попробуйте yyyy-mm-dd Thh:mm:ss:mmm или mon dd yyyy hh:miAM (or PM)
...
Рейтинг: 0 / 0
15.10.2004, 14:41
    #32740563
Pril
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
buserдело скорее всего в формате даты... попробуйте yyyy-mm-dd Thh:mm:ss:mmm или mon dd yyyy hh:miAM (or PM)
Похоже что в моем случае дело вовсе не в формате даты. Попробовал следующую строку для фильтра:
"(([ДатаВремя]>=#2004-10-01 00:00:00)AND([ДатаВремя]<#2004-10-15 00:00:00))"
Не помогло.
Просто для проверки отказался от поля с датой и временем и попробовал такую строку:
"(([Vplus]>=0)AND([Vminus]>=0))"
Поля Vplus и Vminus существуют и имеют числовые значения, но все равно, та же ошибка.
А вот с такой строкой:
"([Vplus]>=0)"
все проходит без ошибок.
Повторюсь, сейчас речь идет уже о применении фильтра, про метод Find я уже все понял.
...
Рейтинг: 0 / 0
15.10.2004, 15:33
    #32740708
Метод Find ADOшного Recordsetа???
К меня на Filtred прокатывало все прекрасно следующее

Цитирую :

Код: plaintext
1.
2.
ADODataSet->Filter = "(Дата = 01.06.2004) OR (Дата = NULL)";
ADODataSet->Filtred = true;

С блеском работает как часы и без проблем ...
...
Рейтинг: 0 / 0
15.10.2004, 15:37
    #32740721
TParser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Тока щас проверил - с этим фильтром все ОК :


"(Дата = 13.09.2004) OR (Дата = NULL)"
...
Рейтинг: 0 / 0
15.10.2004, 15:42
    #32740736
TParser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Я извиняюсь , но еще загляните в вопросик под названием TParser !
...
Рейтинг: 0 / 0
15.10.2004, 15:57
    #32740776
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
Агоры все выше... а горы все круче:
Q235892 PRB: 800a0bb9 Error Message When Applying a Filter to an ADO Recordset
Q280811:PRB: Mixing "And" and "Or" Criteria in the Same Filter Returns a 3001 Error Message

И там еще мнооого

Попробуйте без скобков :)
...
Рейтинг: 0 / 0
21.10.2004, 17:50
    #32749063
Pril
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод Find ADOшного Recordsetа???
buserАгоры все выше... а горы все круче:
Q235892 PRB: 800a0bb9 Error Message When Applying a Filter to an ADO Recordset
Q280811:PRB: Mixing "And" and "Or" Criteria in the Same Filter Returns a 3001 Error Message

И там еще мнооого

Попробуйте без скобков :)
Был вынужден отвлечься от темы, вот вернулся и хочу сказать следующее:
Действительно скобки!!!
Убирать скобки я пробовал еще в самом начале, когда шла речь об использовании метода Find, а вот с фильтром как-то забыл проверить.
Итак:
1 - Find не поддерживает несколько условий, пусть они даже и применяются к одной колонке.
2 - Решение - Filter, однако надо быть аккуратным, лишние скобки приводят к ошибке, а так же есть масса малопонятных указаний как не следует делать, в случае совместного использования AND и OR (в моем случае к счастью этого нет).
Всем участникам спасибо.
buser персональное спасибо.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Метод Find ADOшного Recordsetа??? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]