Фильтр в подзадаче - PullRequest
       3

Фильтр в подзадаче

0 голосов
/ 09 декабря 2011

В Access 2003 у меня есть форма с таблицей данных и встроенной таблицей данных.Я хотел бы применить фильтры к основным и вспомогательным таблицам.Сначала я строю строку фильтра для основной таблицы данных strWhere, а для вспомогательной таблицы данных sdsWhere.Затем, из объекта From основного списка данных, я установил .filter=strWhere.Затем я установил фильтр в объекте формы под-таблицы.В основном:

With Me.Controls(dataSheetName).Form
                .Filter = strWhere
                .FilterOn = True
     With .Controls(subsheetname).Form
                .Filter = sdsWhere
                .FilterOn = True
     End with
End with

Проблема заключается в том, что вложенная таблица фильтруется только для первой записи основной таблицы.Если посмотреть на RecordSet вложенной таблицы данных, он содержит только дочерние записи первой записи в основной таблице данных.Я не могу найти другие записи нигде.

Я знаю, что должна быть возможность отфильтровать все записи вложенных таблиц, потому что в интерфейсе Access установка курсора на нужное значение и выбор записей >> Фильтр по выбору дает желаемый эффект.(За исключением того, что записи в основной форме с пустыми вложенными таблицами показаны, и я бы хотел, чтобы они не отображались)

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Я идиот - разобрался, конечно, просто переместил позицию Recodset под-таблицы, а затем применил фильтр до eof. Но нам нужно перейти к первой записи, во-первых, она пропустит записи до записи, в которой находится пользователь. И убедитесь, что subdatasheetexpanded истинно.

Dim mainDS As Form, subDS As Form
Set mainDS = Me.Controls(dataSheetName).Form

If mainDS.SubdatasheetExpanded = False Then
    mainDS.SubdatasheetExpanded = True
End If

mainDS.Recordset.MoveFirst
Do While Not mainDS.Recordset.EOF
    Set subDS = mainDS.Controls(sdsheet).Form
    subDS.Filter = sdsWhere
    subDS.FilterOn = True
    mainDS.Recordset.MoveNext
Loop
0 голосов
/ 10 декабря 2011

Используйте запрос. Сделайте запрос, объединяющий наборы данных Main и Sub. Фильтр по запросу. Я действительно не вижу другого эффективного способа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...