Программные изменения в форме не сохранят
-
21-12-2019 - |
Вопрос
У кого-нибудь есть идея, что может помешать любую из этих команд фактически сохранять форму?Есть ли настройка, мне не хватает, что может сделать форму «только чтение»?Я переключаю свойство Control.enabled в форме на нагрузке, но я не вижу, чтобы заставить его придерживаться, когда я закрыл форму.
DoCmd.Close acForm, Me.Name, acSaveYes
DoCmd.Save acForm, Me.Name
.
Редактировать: Какой-то код psuedo для уточнения. Эта функция работает на нагрузке на форму, чтобы включить / отключить определенные элементы управления и работает на 100%, как и ожидалось.
Private Sub Form_Load()
If IsNull(TempVars.Item(Me.Name)) Then
TempVars.Add Me.Name,1
If somecondition = true then
Me.Controls.Item("somecontrol").enabled = True
Else
Me.Controls.Item("somecontrol").enabled = False
End If
End If
End Sub
.
Это событие кликов закрывает форму и открывает другую форму.Проблема в том, что настройки Control.nabled я устанавливаю на нагрузку на форму, не сохраняйте.
Private Sub button_OnClick()
DoCmd.OpenForm "someotherform", acnormal
DoCmd.Close acForm, Me.Name, acSaveYes
End Sub
.
В следующий раз, когда я открываю первую форму, свойства управления не будут установлены, и мне нужно снова установить свойство CONROL.
Решение
Я не смог найти какую-либо документацию, но кажется, что вы не можете сохранять изменения дизайна, которые сделаны в обычном режиме.Я закончил объявить переменную типа глобальной коллекции.Я сохранил объединенные строки в этой коллекции переменной Конвенции «Form.name & Control.name».Если форма никогда не была открыта, я запустил длинную проверку, на которой должны быть включены элементы управления, и сохраняют их в этой коллекции Global.Если форма была открыта хотя бы один раз, я запланировал контроль над проверкой формы, чтобы увидеть, были ли они в моей глобальной коллекции «уполномоченного» контроля.Это чувствует себя действительно взлома, но это работает довольно хорошо.
Другие советы
Код, который у вас есть (закрыть, то сохранить), не удается в моем тестировании, потому что me.name пуст после выполнения близкого.Хотя я не знаю, какой другой код у вас может быть, я смог получить форму закрыть, как только я переключил заказ.
Я предлагаю вам разместить код в событии «Открыть» следующим образом:
Private Sub Form_Open(Cancel As Integer)
DoCmd.Save acForm, Me.Name
DoCmd.Close acForm, Me.Name, acSaveYes
End Sub
. Вы хотите изменить свойство включенного в состоянии?Если вам просто нужно, чтобы этот контроль отключен, если запись ... Тогда вы захотите переместить включение текущего события формы, которое зажигает на каждой навигации по записи.Нагрузка и открытие слишком рано и не повторяются при навигации.
Private Sub Form_Current()
If Me!X = True Then
Me.Controls("somecontrol").Enabled = False
Else
Me.Controls("somecontrol").Enabled = True
End If
End Sub
.