|
|
|
Filter
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток Всем, помогите плз отфильтровать данные.. есть набор записей rst пытаюсь отфильтровать его вот так: Dim str1 As String Dim str2 As String str1 = "ДАТА >= " & ПолеДатаНачало & " AND ДАТА <= " & ПолеДатаКонец str2 ="ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3" rst.Filter=str1 & " AND " & str2 Но получается что при этом он не учитывает фильтр по дате, т.е. если просто по дате без rst2 то фильтрует и если просто по rst2 без даты тоже фильтрует а вот вместе не хочет... Помогите плз кто знает!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 14:10 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
> Автор: cherniyK > Доброго времени суток Всем, помогите плз отфильтровать данные.. > > > Но получается что при этом он не учитывает фильтр по дате, т.е. если просто по дате > без rst2 то фильтрует и если просто по rst2 без даты тоже фильтрует а вот вместе не > хочет... > > Помогите плз кто знает!!!!! Может попробовать так? > rst.Filter= "( " & str1 & " ) AND ( " & str2 & " )" -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:01 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
У тебя смысл получается такой: дата>дата1 И дата<дата2 И ДОКУМЕНТ=1 — или первое условие ИЛИ ДОКУМЕНТ=2 — или второе условие ИЛИ ДОКУМЕНТ=3 — или третье условие Пользуйся скобками. str2="(ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:03 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы, но скобки увы не проходят, вообще ошибку выдает "Method 'Filter' of Object '_Recordset' failed" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 15:41 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
Уж скока раз твердили миру, что VB6 - тоже продукт майкрософта.)) Ну как же можно не принять во внимание, что различие формата данных? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Могу и ошибаться в порядке слэшей и необходимости BETWEEN'а. Но в целом это больше похоже на правду))))))))))) ЗЫ: это я только про геммор с датами прописал, а вот остальное прикручивай самостоятельно)) Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 17:59 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
О! Понял, где ошибочка: перед словом "BETWEEN" надо еще вписать [table_name].[field_name], где field_name - имя поля, содержащего даты. Важно, чтобы формат поля тоже был "Date", а то если там текстовое поле..... конвертить придется. Короче, в итоге проблема с выборкой по дате будет осуществляться следующей строкой: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 18:54 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
Я конечно извиняюсь, но Between вроде бы как используется в SELECT-e а через Filter используется >= AND <=.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 21:19 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
Еще раз авторDim str1 As String Dim str2 As String str1 = "ДАТА >= " & ПолеДатаНачало & " AND ДАТА <= " & ПолеДатаКонец str2="ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3" rst.Filter=str1 ' - Вот так работает и rst.Filter=str2 ' - И вот так работает а вот вместе не хочет, если вместе то выбирает только str2,скобки что то тоже не хотят работать, выбивает ошибку там где OR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 21:23 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
> Автор: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:51 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
К сожалению не могу дать точный ответ на вопрос. Укажу лишь направление поиска: Фильтр рекордсета не может выполнять сложные выражения. И должен состоять из групп условий AND соединенных условием OR. (а может быть наоборот, вот это и не помню точно). Значит такая запись будет с ошибкой: (A) and (B or C) Такое условие надо заменить на (A and B) or (A and C) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 10:54 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
Вот так вот авторstr1 = "(ДАТА >= #07\01\08# AND ДАТА <= #07\24\08#) and (ДОКУМЕНТ=1 OR ДОКУМЕНТ=2 OR ДОКУМЕНТ=3)" я изначально делал это работает.... но это не подходит так как второе условие формируется при выборе Check.Value в переменную... а можно как нить отфильтровать сначала rst по датам а затем клонировать rst2 и добавить второй фильтр?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 11:18 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
> Автор: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 11:36 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
Получается что вот так без 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)" то уже ругается что " Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 12:10 |
|
||
|
Filter
|
|||
|---|---|---|---|
|
#18+
> Автор: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 12:27 |
|
||
|
|

start [/forum/search_topic.php?author=FLASHka%2B%2B&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 628ms |
| total: | 917ms |

| 0 / 0 |
