Серая кнопка строки формы (детали) условно с кодом VBA - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть стандартная форма в MS-Access, которая перечисляет кучу заказов, и каждая строка содержит поля № заказа, клиента и т. Д. + Кнопка для просмотра заметок и вложенных файлов документов.

По запросу нашего клиента мы должны выделить кнопку btnAnm серым цветом (или установить или снять флажок) в зависимости от вычисления двух запросов к двум другим таблицам (ВЫБРАТЬ СЧЕТ ГДЕ и проверку, если текстовое поле пусто). ).

Я пробовал btnAnm_BeforeUpdate(...) и btnAnm_BeforeRender(...) и ставил контрольные точки в сабвуферах, но ни одна из них не сработала. То же самое, если я использую элемент управления Ordernr вместо btnAnm.

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

Что мне делать? Я посмотрел на файл справки и искал здесь.

* Редактировать: Итак, я хочу сделать что-то, "что не так работает"? То есть. события не запускаются в деталях. В качестве альтернативы, можно ли основывать значение флажка в каждой строке на запросе на основе поля 'Ordernr' текущей строки и результата SELECT COUNT из другой таблицы и проверки пустого поля?

Я делаю это в запросе, на котором основан список, или я могу привязать дополнительное поле флажка к запросу?

Описание того, как это сделать (объединить COUNT и WHERE «не пусто» со значением «да / нет»), я думаю, будет вполне приемлемым! :) *

Ответы [ 2 ]

3 голосов
/ 02 сентября 2011

Вы не можете многое сделать с несвязанным элементом управления в непрерывной форме, все, что вы делаете, будет применяться только к текущей записи.Вы можете использовать связанный элемент управления с событием щелчка, чтобы он действовал как кнопка.

Предположительно, связанные документы имеют ссылку на номер заказа, который отображается в вашей форме, что означает, что вы можете создать элемент управления,давайте назовем его CountOrders, с ControlSource следующим образом:

=DCount("OrderID","QueryName","OrderID=" & [OrderID])

Элемент управления может быть скрыт, или вы можете настроить его на возврат true или False для использования с текстовым полем, вы также можете использовать его дляУсловное форматирование, но, к сожалению, не для командных кнопок.

Expression Is [CountOrders]>0

Вы также можете скрыть содержимое и добавить событие щелчка, которое действует вместо командной кнопки.Условное форматирование позволит вам включить или отключить текстовое поле.

2 голосов
/ 02 сентября 2011

Насколько я понимаю ваш вопрос, у вас есть непрерывная форма с кнопкой команды, которая появляется в каждой строке - и вы хотите включить / отключить кнопку условно в зависимости от содержимого строки.

К сожалению, вы не можете этого сделать. Кажется, что вы не можете ссылаться на отдельные кнопки команд отдельно.

Пытаясь сделать что-то подобное в прошлом, я предложил два альтернативных способа настройки моего интерфейса.

  1. Поместите ловушку в код onClick для кнопки. Что неприлично, потому что это противоречит пользователю. Но теперь это дает вам эту функциональность.
  2. Переместите командную кнопку (и редактируемые поля) вверх в заголовок формы и сделайте строки доступными только для чтения. Затем ваши пользователи взаимодействуют с записью только в заголовке и выбирают запись, с которой они хотят работать, в списке ниже. Насколько я помню, это интерфейс Master-Detail.
...