Сводные таблицы в Access

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
AlexCo
Сообщения: 2
Зарегистрирован: 28 фев 2005, 18:30

Подскажите как программно определить какой элемент сводной таблицы в форме Access был выбран до потери фокуса?!
Смысл в том что есть много данных, просмотр удобно делать в сводной таблице со свободными строками и столбцами. А редактировать потом предполагется в отдельной форме данные уже, относящиеся к конкретным категориям. Может есть еще интересные обходные варианты?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Во-превых, не понятно, что Вы подразумеваете под сводной таблицей. Перекрестный запрос? Тогда не понятно, как он используется в формах. Ведь перекрестный запрос возвращает неизвестное количество полей (столбцов), а форма отобразает только определенные.

Во-вторых что значит: "в сводной таблице со свободными строками и столбцами"?

как программно определить какой элемент сводной таблицы в форме Access был выбран до потери фокуса
Screen.PreviousControl

Screen.PreviousControl.SetFocus - перемещает фокус обратно к нему.

Я так понимаю Вы на фору поместили кнопку, чтобы нажимая ее открывать другое окно. А можно еще вместо кномки обработать событие "Двойное нажатие кнопки" на нужном поле. Правда для каждого поля прийдется делать по обработчику, но зато проблема решается сама собой. Например стоим в таблице в поле X на значении 17. Делаем по 17 двойной щелчок, фокус остается на месте, но срабатывает наш обработчик, который открывает форму для редактирования таблицы T, но только для тех записей, где X=17.

DoCmd.OpenForm "Form_T", , , "X=" & Me.X.Value, , acDialog
Может есть еще интересные обходные варианты
Часто, то что вы хотите можно сделать с помощью подчиненных форм. Например, в области данных ленточной формы отображается, агрегированная информация по таблице T, а в примечание формы помещаем подчиненную форму для T. (Тут Access может нас обругать и сказать что на ленточную форму нельзя класть подчиненную - НЕ ВЕРЬТЕ. В заголовок и примечание можно. Надо только выслушав всю ругань вернуть обратно режим "Ленточная".)
В этом случае конечно связывание главной и подчиненной возможно только по одному набору полей, а не по разным в зависиммости от текущей колонки, но, если подумать на смену фокуса можно написать обработчики, которые будут пересвязывать подчиненную форму с главной по разному, в зависимости от того куда прыгнул курсор.

Еще я как-то раз такой браузер (табличку, через которую осуществляется просмотр) запихал в одну подчиненную форму, а таблицу для редактирования - в другую подчиненную. Обе лежали на свободной (не связанной с наборами данных) форме. Это мне дало возможность поместить браузер слева от основного простанства, где редактировались данные. На событие OnNewRecord браузер обращался к главной форме, в которой сидел, затем к другой подчиненной форме и выполнял там фильтрацию. Получилось неплохо.
AlexCo
Сообщения: 2
Зарегистрирован: 28 фев 2005, 18:30

Спасибо - попытаюсь.
В виду имелась именно сводная таблица в access 2003, размещенная в форме.
chav
Сообщения: 5
Зарегистрирован: 23 дек 2005, 11:16

Вот вот, а где вообще определяются события в режиме сводной таблицы. Я тоже хочу сделать подобие ДрилДаун то-есть открывать форму с отбором по тому значению по которому щелкнул дважды в СВОДНОЙ ТАБЛИЦЕ. Дело в том что из перекрестного запроса нельзя вызвать процедуру обработки события, поэтому такую процедуру приходится вызывать из формы. Однако в режииме сводной таблице нет событий для которых можно определить процедуру или макрос.
Ответить