Программные изменения в форме не сохранят

StackOverflow https://stackoverflow.com//questions/22048648

  •  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
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top