2017-02-20 2 views
0

В MS Access 2016 у меня есть кнопка со свойством «не видно».Как активировать кнопку, если значение меньше нуля?

Я хочу, чтобы эта кнопка оставалась видимой, если значение в другом поле ([Баланс]) меньше, чем «0» (ноль).

например. Баланс составляет -5,00, кнопка (btOpenReport) станет видимой. Баланса 1,00, кнопка (btOpenReport) не видна

Этот код не работает, кнопка остается видимой во всех записях, даже значение больше 0.

Private Sub Form_Current() 
'button invisible, ok 
Me.btOpenReport.Visible = False 
'must evaluate if Balance is less than 0 and put button visible,...not working 
If Me.Balance < 0 Then Me.btOpenReport.Visible = True 
End Sub 

Что такое неправильно?

Here is a db example (Ms Access 2016 Database1)

ответ

1

Вы не можете установить видимость кнопки для разных записей в непрерывной форме. Это просто невозможно.

Только способы достижения чего-либо подобного - либо использовать текстовое поле и какое-то умное условное форматирование, чтобы создать впечатление от кнопки, которую можно нажать или нет, или лучше ИМХО поставить кнопку в виде верхнего или нижнего колонтитула и включить/отключить его через событие On_current.

+0

Привет. Могу ли я использовать это текстовое поле с видимым заголовком «Открыть отчет», только если баланс был меньше нуля? Поэтому я мог щелкнуть по этому текстовому полю, как если бы это была кнопка «Открыть отчет». Правильно? Прямо сейчас я добавил пример базы данных к своему первому сообщению/вопросу. –

+1

Если вы добавили вычисленное поле в запрос, лежащий в основе формы, назовите его {txtReport: IIf (Balance <0, "Open Report", "")}. Затем вы можете заполнить это в своей форме. В свойствах щелчка текстового поля просто проверьте значение «не» перед выполнением кода, который вы хотите запустить, на случай, если кто-то решит нажать его, даже если он не будет «отображаться» в активном состоянии. – Minty

+0

Это работает. Чтобы объяснить простым способом: 1- В запросе (сгруппированном) я создал рассчитанное поле «txtRep»; -Если «Баланс» меньше нуля; «Открытый отчет»; ""; -Всего выражения. 2 - в форме, в случае нового «txtRep»; - в макросе, чтобы открыть отчет, я добавил в начале: Если «txtRep» имеет значение null Cancel; Кроме того, макрос открытого отчета продолжается. –

1

Вы выбрали неправильный случай. Form_Current не срабатывает при изменении значения в текстовом поле. См. Документацию: https://msdn.microsoft.com/en-us/library/office/ff193159.aspx

+1

Почему не 'Me.btOpenReport.Visible = Me.Balance <0' – Fionnuala

+0

@Fionnuala, спасибо. Это не работает. Кнопка видна во всех записях. –

+0

@EliteRaceElephant Это непрерывная форма, основанная на запросе группировки. Для заполнения или изменения текстового поля нет. Поле «Баланс» представляет собой сумму. –

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