Controllo calendario Microsoft 10.0 e versioni successive usano un valore non corretto per la proprietà FirstDay
Numero KB originale: 826761
Nota
Questo articolo si applica a un file di database di Microsoft Access (con estensione .mdb) oppure a un file di database di Microsoft Access (con estensione .accdb). Richiede competenze di base per macro, codifica e interoperabilità.
Sintomi
In Microsoft Access viene visualizzato un giorno non corretto per il primo giorno del controllo calendario. Questo problema si verifica quando si inserisce un controllo calendario Microsoft 10.0 o versione successiva in una maschera o in un report e quindi si imposta la FirstDay
proprietà di Controllo calendario usando costanti intrinseche di Microsoft Visual Basic, Applications Edition (VBA).
Ad esempio, si imposta la FirstDay
proprietà del controllo Calendar su vbMonday o su vbTuesday. Quando si imposta la FirstDay
proprietà del controllo Calendar su vbTuesday, il calendario usa mercoledì come primo giorno della settimana.
Nota
Quando si usano le versioni precedenti di Controllo calendario, è possibile impostare correttamente la FirstDay
proprietà .
Causa
Questo problema si verifica perché le costanti intrinseche per i giorni definiti in Microsoft Visual Basic, ad esempio vbSunday e vbMonday, non sono associate al valore del giorno corretto.
Soluzione alternativa
Per aggirare questo problema, attenersi alla seguente procedura:
Determinare l'associazione tra i giorni, le costanti intrinseche VBA e i valori numerici associati ai valori dei giorni corretti e alle costanti intrinseche VBA. A tal fine, attenersi alla seguente procedura:
Avviare Access.
Aprire il database di esempio Northwind.
Nella finestra Database fare clic su Moduli in Oggetti.
Nota
In Access 2007 fare clic sulla scheda Crea e quindi su Progettazione modulo nel gruppo Moduli .
Nel riquadro destro fare doppio clic su Crea modulo in visualizzazione Struttura.
Nota
In Access 2007 ignorare questo passaggio.
Scegliere Controllo ActiveX dal menu Inserisci.
Nota
In Access 2007 fare clic sulla scheda Progettazione e quindi su Inserisci controllo ActiveX nel gruppo Controlli .
Nella finestra di dialogo Inserisci controllo ActiveX fare clic per selezionare Controllo calendario 10.0 o versione successiva dalla casella di riepilogo Selezionare un controllo ActiveX e quindi fare clic su OK.
Aggiungere un pulsante di comando al modulo con le proprietà impostate come indicato di seguito:
Proprietà Valore Name
testFD Caption
Modifica primo giorno Scegliere Salva dal menu File.
Nota
In Access 2007 fare clic sul pulsante Microsoft Office e quindi su Salva.
Nella finestra di dialogo Salva con nome digitare Form1 nella casella Nome modulo e quindi fare clic su OK per salvare il modulo Form1.
Scegliere Codice dal menu Visualizza.
Nota
In Access 2007 fare clic sulla scheda Progettazione e quindi su Visualizza codice nel gruppo Strumenti .
Nella Editor di Visual Basic digitare o incollare il codice seguente:
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
Aprire Form1 nella visualizzazione Maschera.
Fare clic sul pulsante Cambia primo giorno .
Nota
Se la prima colonna del controllo Calendario non è impostata su Martedì, annotare il giorno nella prima colonna.
Nella Editor di Visual Basic fare clic su Finestra immediata dal menu Visualizza.
Nella finestra Immediata digitare ?vbTuesday e quindi premere INVIO.
Si noti il valore numerico.
Ripetere il passaggio j tramite il passaggio o sostituendo vbTuesday con altre costanti intrinseche VBA, ad esempio vbMondaye vbWednesday.
Si noti che la tabella seguente mostra l'associazione tra i giorni, le costanti intrinseche VBA e i valori numerici associati ai valori dei giorni corretti e alle costanti intrinseche VBA.
Giorno della settimana Costante intrinseca VBA Valore numerico associato Lunedì vbSunday 1 Martedì vbMonday 2 Mercoledì vbTuesday 3 Giovedì vbWednesday 4 Venerdì vbThursday 5 Sabato vbFriday 6 Domenica vbSaturday 7
Creare un'enumerazione personalizzata globale mappata correttamente ai giorni della settimana. A tal fine, attenersi alla seguente procedura:
Nella finestra Database fare clic su Modulo in Oggetti.
Nota
In Access 2007 fare clic sulla scheda Crea , fare clic sulla freccia sotto Macro nel gruppo Altro e quindi fare clic su Modulo.
Nel menu Inserisci, fare clic su Modulo.
Nota
In Access 2007 ignorare questo passaggio.
Digitare o incollare il codice seguente nella Editor di Visual Basic:
Option Explicit Public Enum nwFirstDay nwMonday = 1 nwTuesday = 2 nwWednesday = 3 nwThursday = 4 nwFriday = 5 nwSaturday = 6 nwSunday = 7 End Enum
Nota
Creare l'enumerazione come descritto nella colonna "Week Day" e nella colonna corrispondente "Numeric Value Associated" della tabella nel passaggio 1r.
Assegnare al modulo il nome Day_Association e salvarlo.
Chiudere la Editor di Visual Basic.
Sostituire le costanti intrinseche VBA nell'applicazione con le costanti incluse nell'enumerazione personalizzata descritta nel passaggio 2.
Ad esempio, se il codice originale è
Calendar0.FirstDay = vbTuesday
Modificare il codice per usare l'enumerazione personalizzata come indicato di seguito:
Calendar0.FirstDay = nwTuesday
Eseguire l'applicazione.
Ulteriori informazioni
Le costanti intrinseche VBA non dipendono dalle informazioni locali del sistema. Ad esempio, in un computer con il sistema operativo localizzato in lingua tedesca, il primo giorno della settimana è lunedì. Il valore numerico associato a Lunedì nel computer è sempre 0.
Poiché Controllo calendario 10.0 o versione successiva è un controllo Microsoft ActiveX in tutto il mondo, non è possibile controllare i valori numerici associati alle costanti intrinseche VBA in base alle specifiche del computer. Pertanto, si verifica il problema menzionato nella sezione "Sintomi" di questo articolo.
Procedura per riprodurre il problema
Avviare Access.
Aprire il database di esempio Northwind.
Nella finestra Database fare clic su Moduli in Oggetti.
Nota
In Access 2007 fare clic sulla scheda Crea e quindi su Progettazione modulo nel gruppo Moduli .
Nel riquadro destro fare doppio clic su Crea modulo in visualizzazione Struttura.
Nota
In Access 2007 ignorare questo passaggio.
Scegliere Controllo ActiveX dal menu Inserisci.
Nota
In Access 2007 fare clic sulla scheda Progettazione e quindi su Inserisci controllo ActiveX nel gruppo Controlli .
Nella finestra di dialogo Inserisci controllo ActiveX fare clic per selezionare Controllo calendario 10.0 o versione successiva dalla casella di riepilogo Selezionare un controllo ActiveX e quindi fare clic su OK.
Aggiungere un pulsante di comando al modulo con le proprietà impostate come indicato di seguito:
Proprietà Valore Name
testFD Caption
Modifica primo giorno Scegliere Codice dal menu Visualizza.
Nota
In Access 2007 fare clic sulla scheda Progettazione e quindi su Visualizza codice nel gruppo Strumenti .
Nella Editor di Visual Basic digitare o incollare il codice seguente:
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End Sub
Scegliere Salva dal menu File.
Nota
In Access 2007 fare clic sul pulsante Microsoft Office e quindi su Salva con nome.
Nella finestra di dialogo Salva con nome digitare Form1 nella casella Nome modulo e quindi fare clic su OK per salvare il modulo Form1.
Aprire Form1 nella visualizzazione Maschera.
Fare clic sul pulsante Cambia primo giorno .
Anche se si imposta la
FirstDay
proprietà del controllo Calendario su vbTuesday, il calendario seleziona Mercoledì come primo giorno della settimana.
Riferimenti
Per altre informazioni sulle proprietà Controllo calendario e Controllo calendario, aprire Mscal.hlp e quindi cercare l'argomento appropriato. Mscal.hlp si trova nelle cartelle seguenti:
Microsoft Access 2002
Unità di installazione: \Program Files\Microsoft Office\Office10
Microsoft Office Access 2003
Unità di installazione: \Program Files\Microsoft Office\Office11
Nota
Unità di installazione è un segnaposto per il nome dell'unità di installazione.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per