Не удается изменить текст TextBox в Report_Open - PullRequest
3 голосов
/ 23 декабря 2011

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

Этот код выдает ошибку времени выполнения 2478 в SetFocus:

Me.tFilial.SetFocus
Me.tFilial.Text = filialen

Без SetFocus я получаю ошибку во время выполнения, в которой говорится, что текст нельзя изменить, не переключив элемент управления на соответствующий элемент.

Кажется, что разрешено, когда в Access всегда идет речь. Как мне это решить? Могу ли я установить значение для нажатия кнопки в другой форме с помощью

Reports![rptPressSchema]![tFilial].text="Hello"?

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

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Из справки Access:

Пока элемент управления имеет фокус, свойство Text содержит текстовые данные, которые в данный момент находятся в элементе управления; свойство Value содержит последние сохраненные данные для элемента управления. Когда вы перемещаете фокус на другой элемент управления, данные элемента управления обновляются, и для свойства Value устанавливается это новое значение. Настройка свойства «Текст» будет недоступна до тех пор, пока элемент управления снова не получит фокус. Если вы используете команду «Сохранить запись» в меню «Записи», чтобы сохранить данные в элементе управления без перемещения фокуса, свойство «Текст» и свойство «Значение» настройки будут такими же.

По сути, свойство .Text не имеет смысла в отчете, поскольку отдельные элементы управления не могут получить фокус. Однако, как @Remou заявил в своем комментарии, вы можете просто заменить .Text на .Value, и ваш код должен работать нормально (не нужно устанавливать фокус при обновлении значения).

1 голос
/ 31 августа 2017

потратил много времени на поиск и попытку. Наконец-то разберись ... Для динамической установки содержимого TextBox удобно использовать tbTest.Value = "привет"

но уловка в том, что если вы используете это On Open, это будет в беде ...

Run-time error '2448' You can't assign a value to this object.

Так что вам нужно установить значение On Load

Private Sub Report_Load()
Me.tbTest.Value = "hello"
End Sub

Private Sub Report_Open(Cancel As Integer)
'Me.tbTest.Value = "hello"
End Sub

Я не вижу никакого объяснения этому, я предполагаю, что для события Open объект еще не инициирован ( документ для объяснения события Load и Open) ...

...