Question

Quelqu'un a-t-il une idée de ce qui pourrait empêcher l'une de ces commandes de sauver réellement une forme?Y a-t-il un cadre qui me manque, qui pourrait faire le formulaire "en lecture seule"?Je bascule la propriété Control.Enabled sur le formulaire sur chargement, mais je ne peux pas voire que je ne le ferais pas rester une fois que j'ai fermé la forme.

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

EDIT: Un code pseudo à clarifier. Cette fonction fonctionne sur la charge de formulaire pour activer / désactiver certaines commandes et fonctionne à 100% comme prévu.

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

Cet événement de clic ferme le formulaire et ouvre un autre formulaire.Le problème est que les paramètres Control.Enabled que j'ai défini sur la charge de formulaire ne sauvegardent pas.

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

La prochaine fois que j'ouvre le premier formulaire, les propriétés de contrôle ne seront pas définies et je dois à nouveau définir la propriété Conrol.Enabled.

Était-ce utile?

La solution

Je n'ai pas été en mesure de trouver une documentation, mais il semble que vous ne puissiez pas enregistrer les modifications de conception effectuées en mode normal.J'ai fini par déclarer une variable de type de collecte globale.J'ai stocké des chaînes concaténées dans cette variable de collecte de la convention "Form.name & Control.name".Si le formulaire n'avait jamais été ouvert, j'ai couru la longue vérification sur laquelle les commandes doivent être activées et les stockées dans cette collection globale.Si la forme avait été ouverte au moins une fois, je bougeai par les commandes sur la vérification de la forme pour voir s'ils étaient dans ma collection mondiale de contrôles «autorisés».Il se sent vraiment piraté, mais ça marche plutôt bien.

Autres conseils

Le code que vous avez (Fermer, puis sauvegarder) échoue sur mes tests parce que le nom Me.Name est vide après avoir exécuté la fermeture.Bien que je ne sache pas quel autre code que vous avez peut-être, j'ai pu obtenir le formulaire à fermer une fois que j'ai changé la commande.

Je vous suggère de placer le code dans l'événement "ouvert" comme suit:

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

Voulez-vous modifier la propriété activée sur une condition?Si vous avez juste besoin de ce contrôle désactivé si l'enregistrement ... Ensuite, vous voudrez déplacer l'événement actuel du formulaire, qui déclenche à chaque navigation d'enregistrement.La charge et l'ouverture sont trop tôt et ne répétez pas la navigation.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top