Access 2007 forma Split VBA: acNewRec sulla impedisce aperte tabulazione attraverso la forma - si comporta come il primo campo non e 'selezionato'
-
27-09-2019 - |
Domanda
Spero che qualcuno mi può dare una mano, o per lo meno aiutare a capire una soluzione.
Sto usando la caratteristica maschera divisa Access 2007 di, e hanno il codice qui sotto corsa sull'evento Form_Open, così come dopo due eventi Button_Click. Il codice funziona bene quando viene eseguito dopo gli eventi Button_Click, ma quando si gira su l'evento Form_Open, causa problemi.
Se la forma viene aperta e utente immette il testo nel primo campo, lui / lei non può usare Tab o il mouse per selezionare il campo modulo successivo. L'utente è bloccato sul primo campo modulo fino a quando premendo Esc per annullare l'immissione dei dati. Per entrare con successo i dati del primo campo di modulo quando il modulo viene aperto, l'utente deve prima selezionare un altro campo modulo, poi ri-selezionare il primo campo di modulo, quindi immettere testo in primo campo modulo. Dopo questa assurdità, l'utente può selezionare il prossimo campo di modulo con Tab o il mouse. Questo deve essere eseguita una volta ogni volta che viene lanciato il modulo. Lo stesso codice VBA sugli eventi Button_Click funziona bene.
Degno di nota: quando il modulo viene prima aperto, nessuno dei campi del modulo nella sezione scheda tecnica del modulo di apparire 'Selected'. Quando un utente inizia a immettere dati nel primo campo modulo, il marcatore 'nuovo record' (*) si sposta alla seconda fila come dovrebbe, ma la prima riga non mostra i dati in ingresso. Questo comportamento è dispari.
Dopo aver eseguito il campo libero, fare clic su un altro campo, fare clic su Indietro per prima soluzione campo sopra descritto, gli spettacoli datasheet campi e dei dati selezionati correttamente in quanto è in ingresso.
Tutte le idee? è un insetto? C'è una soluzione semplice, come ad esempio eseguire la soluzione campo di selezione via VBA in forma aperta?
Ogni aiuto è molto apprezzato.
Codice:
DoCmd.ApplyFilter , "([Contractor].[CheckOutStamp] Is Null)"
DoCmd.GoToRecord , "", acNewRec
Soluzione
Alcuni pensieri:
Prova a spostare da OnOpen a OnLoad. Gli eventi in SuApertura possono accadere prima che i dati sono effettivamente caricata, dove come OnLoad accade dopo che è già stato fatto.
Inoltre, si potrebbe desiderare di solo impostare la proprietà Filter della maschera [Contractor].[CheckOutStamp] Is Null
e impostare la FilterOn Sì, e impostare il modulo per DataEntry, il che significa il valore predefinito è un nuovo record su aperta, e non caricare qualsiasi della record anziani. Una volta che è aperto, è possibile cambiare la modalità di modifica / aggiunta del modulo per quello che vuoi.