Microsoft Calendar Control 10.0 och senare versioner använder ett felaktigt värde för egenskapen FirstDay
Anteckning
Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.
Ursprungligt KB-nummer: 826761
Anteckning
Den här artikeln gäller en Microsoft Access-databasfil (.mdb) eller en Microsoft Access-databasfil (.accdb). Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter.
Symptom
I Microsoft Access visas en felaktig dag den första dagen i kalenderkontrollen. Det här problemet inträffar när du infogar en Microsoft Calendar Control 10.0 eller en senare version i ett formulär eller i en rapport, och sedan anger egenskapen för Kalenderkontroll med hjälp av FirstDay Microsoft Visual Basic for Applications (VBA) inbyggda konstanter.
Du kan till exempel ange FirstDay egenskapen för kalenderkontrollen till vbMonday eller vbTuesday. När du anger FirstDay egenskapen för kalenderkontrollen till vbTuesday används Onsdag som den första dagen i veckan i kalendern.
Anteckning
När du använder tidigare versioner av Kalenderkontroll kan du ställa in FirstDay egenskapen korrekt.
Orsak
Det här problemet uppstår eftersom inbyggda konstanter för de dagar som definieras i Microsoft Visual Basic, till exempel vbSunday och vbMonday, inte är kopplade till rätt dagvärde.
Lösning
Följ de här anvisningarna för att komma runt det här problemet:
Fastställa kopplingen mellan dagarna, VBA-inbyggda konstanter och de numeriska värdena som är kopplade till korrekta dagvärden och VBA-inbyggda konstanter. Gör så här:
Starta Access.
Öppna Northwind-exempeldatabasen.
I fönstret Databas klickar du på Formulär under Objekt.
Anteckning
I Access 2007 klickar du på fliken Skapa och sedan på Formulärdesign i gruppen Formulär.
Dubbelklicka på Skapa formulär i designvyn i det högra fönstret.
Anteckning
Hoppa över det här steget i Access 2007.
Klicka på Kontroll ActiveX på Infoga-menyn.
Anteckning
I Access 2007 klickar du på fliken Design och sedan på ActiveX Infoga kontroll i gruppen Kontroller.
I dialogrutan Infoga ActiveX klickar du på för att välja Kalenderkontroll 10.0 eller en senare version i listrutan Välj ActiveX kontroll och klickar sedan på OK.
Lägg till en kommandoknapp i formuläret som har följande egenskaper:
Egenskap Värde NametestFD CaptionÄndra första dagen Klicka på Spara på Arkiv-menyn.
Anteckning
I Access 2007 klickar du på Microsoft Office och sedan på Spara.
Skriv Formulär1 i rutan Formulärnamn i dialogrutan Spara som och klicka sedan på OK för att spara formuläret Formulär1.
Klicka på Kod på Visa-menyn.
Anteckning
I Access 2007 klickar du på fliken Design och sedan på Visa kod i gruppen Verktyg.
I Visual Basic Editor skriver eller klistrar du in följande kod:
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End SubÖppna Formulär1 i formulärvyn.
Klicka på Ändra första dagen.
Anteckning
Om den första kolumnen i kalenderkontrollen inte är inställd på tisdag noterar du dagen i den första kolumnen.
I Visual Basic Klickar du på Direktfönster på menyn Visa.
I direktfönstret skriver du ?vbTuesday och trycker sedan på RETUR.
Observera det numeriska värdet.
Upprepa steg j till steg o genom att ersätta vbTuesday med andra VBA-inbyggda konstanter, till exempel vbMonday och vbWednesday.
Observera att du kommer att ha följande tabell för att visa kopplingen mellan dagarna, VBA-inbyggd konstant, och de numeriska värden som är kopplade till korrekta dagvärden och VBA-inbyggda konstanter.
Veckodag VBA-inbyggd konstant Numeriskt värde associerat Måndag vbSunday 1 Tisdag vbMonday 2 Onsdag vbTuesday 3 Torsdag vbWednesday 4 Fredag vbThursday 5 Lördag vbFriday 6 söndag vbSaturday 7
Skapa en global anpassad uppräkning som är korrekt mappad till veckans dagar. Gör så här:
I databasfönstret klickar du på Modul under Objekt.
Anteckning
I Access 2007 klickar du på fliken Skapa, klickar på pilen under Makro i gruppen Övrigt och klickar sedan på Modul.
Klicka på Modul på Infoga-menyn.
Anteckning
Hoppa över det här steget i Access 2007.
Skriv eller klistra in följande kod i Visual Basic Editor:
Option Explicit Public Enum nwFirstDay nwMonday = 1 nwTuesday = 2 nwWednesday = 3 nwThursday = 4 nwFriday = 5 nwSaturday = 6 nwSunday = 7 End EnumAnteckning
Skapa uppräkning enligt beskrivningen i kolumnen "Vecka dag" och i motsvarande "Numeriskt värde associerad" kolumn i tabellen som är i steg 1r.
Namnge modulens namn Day_Association och spara den.
Stäng Visual Basic Editor.
Ersätt VBA-inbyggda konstanter i programmet med konstanterna som finns i den anpassade uppräkning som beskrivs i steg 2.
Om den ursprungliga koden till exempel är
Calendar0.FirstDay = vbTuesdayändra din kod för att använda anpassad uppräkning på följande sätt:
Calendar0.FirstDay = nwTuesdayKör programmet.
Mer information
VBA-inbyggda konstanter är inte beroende av den lokala systeminformationen. På en dator med det lokaliserade operativsystemet på tyska är första dagen i veckan till exempel måndag. Det numeriska värdet som associeras med måndag på datorn är alltid 0.
Eftersom Calendar Control 10.0 eller senare är en global Microsoft ActiveX-kontroll kan du inte styra de numeriska värden som associeras med VBA-inbyggd konstanter baserat på dina datorspecifikationer. Därför uppstår problemet som nämns i avsnittet "Symptom" i den här artikeln.
Steg för att återskapa problemet
Starta Access.
Öppna Northwind-exempeldatabasen.
I fönstret Databas klickar du på Formulär under Objekt.
Anteckning
I Access 2007 klickar du på fliken Skapa och sedan på Formulärdesign i gruppen Formulär.
Dubbelklicka på Skapa formulär i designvyn i det högra fönstret.
Anteckning
Hoppa över det här steget i Access 2007.
Klicka på Kontroll ActiveX på Infoga-menyn.
Anteckning
I Access 2007 klickar du på fliken Design och sedan på ActiveX Infoga kontroll i gruppen Kontroller.
I dialogrutan Infoga ActiveX klickar du på för att välja Kalenderkontroll 10.0 eller en senare version i listrutan Välj ActiveX kontroll och klickar sedan på OK.
Lägg till en kommandoknapp i formuläret som har följande egenskaper:
Egenskap Värde NametestFD CaptionÄndra första dagen Klicka på Kod på Visa-menyn.
Anteckning
I Access 2007 klickar du på fliken Design och sedan på Visa kod i gruppen Verktyg.
I Visual Basic Editor skriver eller klistrar du in följande kod:
Option Compare Database Private Sub testFD_Click() Calendar0.FirstDay = vbTuesday End SubKlicka på Spara på Arkiv-menyn.
Anteckning
I Access 2007 klickar du på Microsoft Office och sedan på Spara som.
I dialogrutan Spara som skriver du Formulär1i rutan Formulärnamn och klickar sedan på OK för att spara formuläret Formulär1.
Öppna Formulär1 i formulärvyn.
Klicka på Ändra första dagen.
Även om du ställer in egenskapen för kalenderkontrollen på
FirstDayvbTuesday så väljer kalendern Onsdag som den första dagen i veckan.
Referenser
Om du vill ha mer information om egenskaperna Kalenderkontroll och Kalenderkontroll öppnar du Mscal.hlp och söker efter rätt avsnitt. Mscal.hlp finns i följande mappar:
Microsoft Access 2002
Installationsenhet:\Program Files\Microsoft Office\Office10
Microsoft Office Access 2003
Installationsenhet:\Program Files\Microsoft Office\Office11
Anteckning
Installationsenhet är en platshållare för namnet på installationsenhet.