Pregunta

¿Alguien tiene una idea de lo que podría evitar cualquiera de estos comandos para ahorrar un formulario?¿Hay un escenario que desaparezca que podría hacer el formulario "solo lectura"?Estoy alternando el control. Propiedad electrónica en el formulario de carga, pero no puedo verlo para que se pegue una vez que haya cerrado el formulario.

DoCmd.Close acForm, Me.Name, acSaveYes
DoCmd.Save acForm, Me.Name

Editar: Algunos código psuedo para aclarar. Esta función se ejecuta en la carga del formulario para habilitar / deshabilitar ciertos controles y funciona al 100% como se esperaba.

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

Este evento de clic cierra el formulario y se abre otro formulario.El problema es que la configuración control. Configure en la carga de formulario no guardar.

Private Sub button_OnClick()
    DoCmd.OpenForm "someotherform", acnormal
    DoCmd.Close acForm, Me.Name, acSaveYes
End Sub

La próxima vez que abra la primera forma, las propiedades de control no se establecerán, y necesito configurar la propiedad conrol.enabled nuevamente.

¿Fue útil?

Solución

No he podido encontrar ninguna documentación, pero parece que no puede guardar los cambios de diseño que se realizan en el modo normal.Terminé declarando una variable de tipo de colección global.Almacené cadenas concatenadas en esta colección variable de la Convención "Form.NAME & CONTROL.NAME".Si el formulario nunca se había abierto, corrí la verificación prolongada en qué controles deberían habilitarse y almacenarlos en esta colección global.Si el formulario se había abierto al menos una vez, subí a través de los controles en la comprobación del formulario para ver si estaban en mi colección global de controles "autorizados".Se siente realmente hackeish, pero funciona bastante bien.

Otros consejos

El código que tiene (cerrar, luego guardar) falla en mis pruebas porque el ME.NAME está vacío después de ejecutar el cierre.Aunque no sé qué otro código puede tener, pude obtener el formulario para cerrar una vez que cambié el pedido.

Le sugiero que coloque el código en el evento 'Abrir' de la siguiente manera:

Private Sub Form_Open(Cancel As Integer)
    DoCmd.Save acForm, Me.Name
    DoCmd.Close acForm, Me.Name, acSaveYes
End Sub

¿Desea cambiar la propiedad habilitada en una condición?Si solo necesita ese control deshabilitado si el registro ..., entonces querrá mover la habilitación del evento actual del formulario, que se dispara en cada navegación registrada.La carga y la abierta son demasiado tempranos y no se repiten en la navegación.

Private Sub Form_Current()
  If Me!X = True Then
    Me.Controls("somecontrol").Enabled = False
  Else
    Me.Controls("somecontrol").Enabled = True
  End If
End Sub

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top