2015-10-20 3 views
0

Я хотел бы создать и открыть запрос выбора на основе существующих фильтров формы. Я могу сделать это в VBA, проанализировав строку Me.Filter формы, извлекая нужные мне биты и создавая инструкцию WHERE. Однако, вводя во все требуемую логику, пунктуация и синтаксис будут больно.Access 2007 VBA: используйте Form.Filter в параметрах запроса

Так что мой вопрос, прежде чем я сделаю все, что есть: есть ли какая-либо существующая функция для этого?

Спасибо.

+1

Это не должно быть больно, если вы используете источник записей формы как базу запроса выбора. – Andre

+0

Спасибо, но источник не проблема, и я не вижу никакого способа получить строку SQL WHERE из свойства recordsource. – Absinthe

ответ

2

Возможно, мой комментарий был немного загадочным.

Скажем, источник данных вашей формы: myQuery.

Форма фильтруется, Me.Filter = myQuery.field1 LIKE 'asdf*' AND myQuery.field2 = 42

Таким образом, ваш выбор запроса, например,

SELECT field1, field3 
FROM myQuery 
WHERE myQuery.field1 LIKE 'asdf*' AND myQuery.field2 = 42 

или

myQuerydef.SQL = "SELECT field1, field3 FROM " & Me.Recordsource & _ 
    " WHERE " & Me.Filter 

Так что я не совсем понимаю, где проблема.

Ответ на ваш вопрос: нет, функции нет, но вам не нужно ничего, кроме Me.Filter.

Редактировать как это было предложено HansUp:

Если RecordSource вашей формы в настоящее время нет ни одного запроса, но ЗЕЬЕСТ, создать именованный запрос из этой ЗЕЬЕСТ, и использовать этот запрос в качестве RecordSource ,

+0

Правда, но для этого варианта использования решение * есть *, чтобы иметь один запрос как RecordSource - если он в настоящее время не является, тогда создайте именованный запрос из текущего RecordSource. @HansUp – Andre

+0

Не понял, что вы можете использовать Me.Filter непосредственно как WHERE (myQuerydef.SQL = "SELECT field1, field3 FROM" & Me.Recordsource & "WHERE" & Me.Filter). Спасибо, новый для инструментария. – Absinthe

Смежные вопросы