Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: 2 фильтра в одном
 
 автор: Гоблин   (17.12.2009 в 14:42)   личное сообщение
14 Кб.
 
 

Все привет.
Вот недавно столкнулся с такой проблемой изготавливая примерчик. 2 фильтра в одном. Лукас подсказал как сделать, но не работает Расписал по очереди
как результат работате только один, хотя другой не показывает ошибки.
Запустил фильтр по условию
with me.form
Filter = Format(DMax("Дата", "Таблица1"), SQL_DATE_FORMAT)
FilterOn = True
End With

Все работает

Фильтр по другому условию
with me. form
Filter = "Материал='" & Me.Материал & "'"
FilterOn = True
End With
Работает без замечаний

А теперь одновременно что бы оба фильтра сработали - ни хрена не работает. Расписывал по переменным
strFiltr = "Материал='" & Me.Материал & "'"
strFiltr1 = "Дата=" & Format(DMax("Дата", "Таблица1"), SQL_DATE_FORMAT)

Filter = strFiltr and ... (&) strFiltr1 ...& "Дата=" & Format(DMax("Дата", "Таблица1"), SQL_DATE_FORMAT)...+
FilterOn = True

Да как только ни изгалялся и извращался со знаками +& and все бестолку. Иногда работает но выбирает только один материал иногда выдает сообщение что не хватает данных, иногда пропущен элемент в (и показывает дату), ну и так далее...
А должен показать все материалы с макс датой в каждом! Блин. Сдается что тут надо источник менять на запрос и в нем фильтровать

  Ответить  
 
 автор: snipe   (17.12.2009 в 14:51)   личное сообщение
 
 

Гоблин - я уже вам один раз говорил
в фильтре должно стоять условие такое же как в запросе после слова Where
в VBA его немножко под себя подгоняешь
соответственно сделайте запрос и посмотрите что должно получиться

вполне возможно что "[дата]=#" & Format(DMax("Дата", "Таблица1"), SQL_DATE_FORMAT) & "#"

  Ответить  
 
 автор: kot_k_k   (17.12.2009 в 14:52)   личное сообщение
 
 

а где оператор OR или AND между условиями фильтра

Filter= strFiltr  & " and " &  strFiltr1


т.к. Filter= strFiltr and strFiltr1 - даст результат 0.

  Ответить  
 
 автор: snipe   (17.12.2009 в 15:34)   личное сообщение
17 Кб.
 
 

Правильно сделал или нет

  Ответить  
 
 автор: Lukas   (17.12.2009 в 16:23)   личное сообщение
 
 

Найди отличия в том как я тебе написал, и как ты переделал:

Const SQL_DATE_FORMAT As String="\#mm\/dd\/yy\#"
Dim MaxDate As Date
Dim strFiltr As String
...
MaxDate=DMax("Дата","Таблица")
'Debug.Print MaxDate
strFiltr="Материал='" & Me!Материал & "'"
'Debug.Print strFiltr
strFiltr=strFiltr & " AND [Дата]=" & Format$(MaxDate, SQL_DATE_FORMAT)
'Debug.Print strFiltr
... 

+ Я всегда использую другое значение константы, с годом из 4 цифр:
Const SQL_DATE_FORMAT As String="\#mm\/dd\/yyyy\#"

  Ответить  
 
 автор: Гоблин   (17.12.2009 в 21:04)   личное сообщение
 
 

Да. Всем спасибо за отзыв. Проблема в том, что в конец запутался с этими &" и &' где и когда их заразы совать. В ваших примерах все понятно. Как один на один - начинается бардак.
Но во всех случаях работает как у кота. Отфильтровывает выбранный материал со свеми датами на него и + одну максимальную дату со всей таблицы.
А моя цель была сделать такой фильтр, что бы выбирал всего по максимальной дате.
дерево 12.12.2009
стекло 12.12.2009
железо 10.12.2009
пластик 13.12.2009
Это как групповой запрос с группировкой по материалу и max по дате. Выходит из фильтров не выжать возможность группового запроса.
Еще раз всем спасибо.

  Ответить  
 
 автор: snipe   (17.12.2009 в 21:10)   личное сообщение
 
 

Ну как ход - изменить RecordSource

  Ответить  
 
 автор: Гоблин   (17.12.2009 в 21:33)   личное сообщение
 
 

Вот и я про то же. А хотелось что бы фильтром перевернуться.
Хотя зачем такое изуверство сам не знаю.

  Ответить  
 
 автор: Гоблин   (17.12.2009 в 21:47)   личное сообщение
14 Кб.
 
 

Вот чего хотел получить из фильтров. Лаболатория Гоблина.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList