powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Filter
15 сообщений из 15, страница 1 из 1
Filter
    #35447149
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток Всем, помогите плз отфильтровать данные..

есть набор записей rst

пытаюсь отфильтровать его вот так:

Dim str1 As String
Dim str2 As String
str1 = "ДАТА >= " & ПолеДатаНачало & " AND ДАТА <= " & ПолеДатаКонец
str2 ="ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3"

rst.Filter=str1 & " AND " & str2

Но получается что при этом он не учитывает фильтр по дате, т.е. если просто по дате без rst2 то фильтрует и если просто по rst2 без даты тоже фильтрует а вот вместе не хочет...

Помогите плз кто знает!!!!!
...
Рейтинг: 0 / 0
Filter
    #35447321
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: cherniyK
> Доброго времени суток Всем, помогите плз отфильтровать данные..
>
>
> Но получается что при этом он не учитывает фильтр по дате, т.е. если просто по дате
> без rst2 то фильтрует и если просто по rst2 без даты тоже фильтрует а вот вместе не
> хочет...
>
> Помогите плз кто знает!!!!!

Может попробовать так?
> rst.Filter= "( " & str1 & " ) AND ( " & str2 & " )"


--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Filter
    #35447329
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя смысл получается такой:
дата>дата1 И дата<дата2 И ДОКУМЕНТ=1 — или первое условие
ИЛИ ДОКУМЕНТ=2 — или второе условие
ИЛИ ДОКУМЕНТ=3 — или третье условие

Пользуйся скобками.

str2="(ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3)"
...
Рейтинг: 0 / 0
Filter
    #35447468
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы, но скобки увы не проходят, вообще ошибку выдает "Method 'Filter' of Object '_Recordset' failed"
...
Рейтинг: 0 / 0
Filter
    #35448020
Фотография IguMEN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж скока раз твердили миру, что VB6 - тоже продукт майкрософта.))


Ну как же можно не принять во внимание, что различие формата данных?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private temp_date1 as date
private temp_date2 as date
.
.
.
.
.
.filter= "BETWEEN #" & format$(temp_date1, "MM\/dd\/yyyy") & "# and #" & format$(temp_date2, "MM\/dd\/yyyy") & "#"
.
.

Могу и ошибаться в порядке слэшей и необходимости BETWEEN'а. Но в целом это больше похоже на правду)))))))))))

ЗЫ: это я только про геммор с датами прописал, а вот остальное прикручивай самостоятельно)) Удачи
...
Рейтинг: 0 / 0
Filter
    #35448130
Фотография IguMEN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Понял, где ошибочка:
перед словом "BETWEEN" надо еще вписать [table_name].[field_name], где
field_name - имя поля, содержащего даты. Важно, чтобы формат поля тоже был "Date", а то если там текстовое поле..... конвертить придется.

Короче, в итоге проблема с выборкой по дате будет осуществляться следующей строкой:

Код: plaintext
1.
2.
.filter= "MyTable.MyField BETWEEN #" & format$(temp_date1, "MM\/dd\/yyyy") & "# and #" & format$(temp_date2, "MM\/dd\/yyyy") & "#"

...
Рейтинг: 0 / 0
Filter
    #35448267
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я конечно извиняюсь, но Between вроде бы как используется в SELECT-e а через Filter используется >= AND <=..
...
Рейтинг: 0 / 0
Filter
    #35448270
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз

авторDim str1 As String
Dim str2 As String
str1 = "ДАТА >= " & ПолеДатаНачало & " AND ДАТА <= " & ПолеДатаКонец
str2="ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3"

rst.Filter=str1 ' - Вот так работает
и
rst.Filter=str2 ' - И вот так работает

а вот вместе не хочет, если вместе то выбирает только str2,скобки что то тоже не хотят работать, выбивает ошибку там где OR
...
Рейтинг: 0 / 0
Filter
    #35448836
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: cherniyK
> Еще раз
>
> автор
> Dim str1 As String
> Dim str2 As String
> str1 = "ДАТА >= " & ПолеДатаНачало & " AND ДАТА <= " & ПолеДатаКонец
> str2="ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3"
>
> rst.Filter=str1 ' - Вот так работает
> и
> rst.Filter=str2 ' - И вот так работает
>
>
> а вот вместе не хочет, если вместе то выбирает только str2,скобки что то тоже не
> хотят работать, выбивает ошибку там где OR

Текст ошибки, наверное военная тайна :)
Проверь что в рекордсете есть поля по которым фильтруешь.
Проверь что поля в рекордсете совпадают с написанием названий полей в фильтре
Проверь что типы полей в рекордсете совпадают с даннымипо которым фильтруешь
Попробуй строку фильтра написать в одну строку примерно так:
str1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08#) and (ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR
ДОКУМЕНТ=3)"


--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Filter
    #35448847
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению не могу дать точный ответ на вопрос. Укажу лишь направление поиска:
Фильтр рекордсета не может выполнять сложные выражения. И должен состоять из групп условий AND соединенных условием OR. (а может быть наоборот, вот это и не помню точно). Значит такая запись будет с ошибкой: (A) and (B or C)
Такое условие надо заменить на
(A and B) or (A and C)
...
Рейтинг: 0 / 0
Filter
    #35448932
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так вот
авторstr1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08#) and (ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3)" я изначально делал это работает....

но это не подходит так как второе условие формируется при выборе Check.Value в переменную...

а можно как нить отфильтровать сначала rst по датам а затем клонировать rst2 и добавить второй фильтр??
...
Рейтинг: 0 / 0
Filter
    #35449012
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: cherniyK
> Вот так вот
> автор
> str1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08#) and (ДОКУМЕНТ=1 OR
> ДОКУМЕНТ=2 OR ДОКУМЕНТ=3)"
> я изначально делал это работает....
>
> но это не подходит так как второе условие формируется при выборе Check.Value в
> переменную...

тогда у тебя не правильно формируется строка фильтра.

>
> а можно как нить отфильтровать сначала rst по датам а затем клонировать rst2 и
> добавить второй фильтр??

можно, наверное.

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Filter
    #35449139
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается что вот так без OR работает

авторstr1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08#) and (ДОКУМЕНТ=1)"

а вот если добавлять OR

авторstr1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08#) and (ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3)"

то уже ругается что " Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом "
...
Рейтинг: 0 / 0
Filter
    #35449205
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: cherniyK
> то уже ругается что "Аргументы имеют неверный тип, выходят за пределы допустимого
> диапазона или вступают в конфликт друг с другом"

Тебе Worobjoff тоже дал направление для изучения
переписывай условие так:
str1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08# and ДОКУМЕНТ=1) OR (ДАТА >= #07\01\08#
AND ДАТА <= #07\24\08# and ДОКУМЕНТ=2) OR (ДАТА >= #07\01\08# AND ДАТА <= #07\24\08# and
ДОКУМЕНТ=3)"

З.Ы.
Если не поможет, тогда нужно покрасить в зелёный цвет
Если поможет, жаль! есть ещё много вариантов :(


--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Filter
    #35449335
cherniyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
УРААААА, ВСЕМ ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!!! Терь работает!!!!!!

Еще раз Спасибо за помощь!!!!!!!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Filter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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