Microsoft Calendar Control 10.0 und höhere Versionen verwenden einen falschen Wert für die FirstDay-Eigenschaft

Ursprüngliche KB-Nummer: 826761

Hinweis

Dieser Artikel bezieht sich auf eine Microsoft Access-Datenbankdatei (.MDB) oder eine Microsoft Access-Datenbankdatei (.ACCDB). Erfordert grundlegende Makro-, Codierungs- und Interoperabilitätskenntnisse.

Problembeschreibung

In Microsoft Access wird ein falscher Tag für den ersten Tag des Kalendersteuerelements angezeigt. Dieses Problem tritt auf, wenn Sie ein Microsoft-Kalendersteuerelement 10.0 oder eine höhere Version in ein Formular oder in einen Bericht einfügen und dann die FirstDay Eigenschaft des Kalendersteuerelements mithilfe von microsoft Visual Basic for Applications (VBA) systeminternen Konstanten festlegen.

Beispielsweise legen Sie die FirstDay -Eigenschaft des Kalendersteuerelements auf vbMonday oder vbTuesday fest. Wenn Sie die FirstDay -Eigenschaft des Kalendersteuerelements auf vbTuesday festlegen, verwendet der Kalender Mittwoch als ersten Tag der Woche.

Hinweis

Wenn Sie die früheren Versionen des Kalendersteuerelements verwenden, können Sie die FirstDay Eigenschaft richtig festlegen.

Ursache

Dieses Problem tritt auf, weil die systeminternen Konstanten für die in Microsoft Visual Basic definierten Tage, z. B. vbSunday und vbMonday, nicht dem richtigen Tagwert zugeordnet sind.

Problemumgehung

Gehen Sie folgendermaßen vor, um dieses Problem zu umgehen:

  1. Bestimmen Sie die Zuordnung zwischen den Tagen, den intrinsischen VBA-Konstanten und den numerischen Werten, die den richtigen Tageswerten und systeminternen VBA-Konstanten zugeordnet sind. Gehen Sie dazu wie folgt vor:

    1. Starten Sie Den Zugriff.

    2. Öffnen Sie die Beispieldatenbank Northwind.

    3. Klicken Sie im Fenster Datenbank unter Objekte auf Formulare.

      Hinweis

      Klicken Sie in Access 2007 auf die Registerkarte Erstellen, und klicken Sie dann in der Gruppe Formulare auf Formularentwurf.

    4. Doppelklicken Sie im rechten Bereich in der Entwurfsansicht auf Formular erstellen.

      Hinweis

      Überspringen Sie in Access 2007 diesen Schritt.

    5. Klicken Sie im Menü Einfügen auf ActiveX-Steuerelement.

    Hinweis

    Klicken Sie in Access 2007 auf die Registerkarte Entwurf, und klicken Sie dann in der Gruppe Steuerelemente auf ActiveX-Steuerelement einfügen.

    1. Klicken Sie im Dialogfeld ActiveX-Steuerelement einfügen im Listenfeld ActiveX-Steuerelement auswählen auf Kalendersteuerelement 10.0 oder eine höhere Version, und klicken Sie dann auf OK.

    2. Fügen Sie dem Formular, in dem die Eigenschaften wie folgt festgelegt sind, eine Befehlsschaltfläche hinzu:

      Eigenschaft Wert
      Name testFD
      Caption Erster Tag ändern
    3. Klicken Sie im Menü Datei auf Speichern .

      Hinweis

      Klicken Sie in Access 2007 auf die Microsoft Office-Schaltfläche, und klicken Sie dann auf Speichern.

    4. Geben Sie im Dialogfeld Speichern unter im Feld Formularname den Namen Form1 ein, und klicken Sie dann auf OK , um das Formular Form1 zu speichern.

    5. Klicken Sie im Menü Ansicht auf Code.

      Hinweis

      Klicken Sie in Access 2007 auf die Registerkarte Entwurf, und klicken Sie dann in der Gruppe Tools auf Code anzeigen.

    6. Geben Sie im Visual Basic-Editor den folgenden Code ein, oder fügen Sie ihn ein:

      Option Compare Database
      
      Private Sub testFD_Click()
          Calendar0.FirstDay = vbTuesday
      End Sub
      
    7. Öffnen Sie Form1 in der Formularansicht.

    8. Klicken Sie auf die Schaltfläche Erster Tag ändern .

      Hinweis

      Wenn die erste Spalte des Kalendersteuerelements nicht auf Dienstag festgelegt ist, notieren Sie sich den Tag in der ersten Spalte.

    9. Klicken Sie im Visual Basic-Editor im Menü Ansicht auf Direktfenster.

    10. Geben Sie im Direktfenster ?vbTuesday ein, und drücken Sie dann die EINGABETASTE.

      Beachten Sie den numerischen Wert.

    11. Wiederholen Sie schritt j bis schritt o, indem Sie vbTuesday durch andere systeminterne VBA-Konstanten wie vbMondayund vbWednesday ersetzen.

      Beachten Sie, dass die folgende Tabelle die Zuordnung zwischen den Tagen, den intrinsischen VBA-Konstanten und den numerischen Werten enthält, die den richtigen Tageswerten und intrinsischen VBA-Konstanten zugeordnet sind.

      Wochentag Intrinsische VBA-Konstante Zugeordneter numerischer Wert
      Montag vbSunday 1
      Dienstag vbMonday 2
      Mittwoch vbTuesday 3
      Donnerstag vbWednesday 4
      Freitag vbThursday 5
      Samstag vbFriday 6
      Sonntag vbSaturday 7
  2. Erstellen Sie eine globale benutzerdefinierte Enumeration, die den Wochentagen ordnungsgemäß zugeordnet ist. Gehen Sie dazu wie folgt vor:

    1. Klicken Sie im Fenster Datenbank unter Objekte auf Modul.

      Hinweis

      Klicken Sie in Access 2007 auf die Registerkarte Erstellen, klicken Sie in der Gruppe Andere auf den Pfeil unter Makro, und klicken Sie dann auf Modul.

    2. Klicken Sie im Menü Einfügen auf Modul.

      Hinweis

      Überspringen Sie in Access 2007 diesen Schritt.

    3. Geben Sie den folgenden Code in die Visual Basic-Editor ein, oder fügen Sie ihn ein:

      Option Explicit
      
      Public Enum nwFirstDay
         nwMonday = 1
         nwTuesday = 2
         nwWednesday = 3
         nwThursday = 4
         nwFriday = 5
         nwSaturday = 6
         nwSunday = 7
      End Enum
      

      Hinweis

      Erstellen Sie die Enumeration wie in der Spalte "Wochentag" und in der entsprechenden Spalte "Zugeordneter numerischer Wert" der Tabelle in Schritt 1r beschrieben.

    4. Benennen Sie das Modul Day_Association, und speichern Sie es.

    5. Schließen Sie den Visual Basic-Editor.

  3. Ersetzen Sie die systeminternen VBA-Konstanten in Ihrer Anwendung durch die Konstanten in der benutzerdefinierten Enumeration, die in Schritt 2 beschrieben wird.

    Wenn Ihr ursprünglicher Code z. B.

    Calendar0.FirstDay = vbTuesday
    

    Ändern Sie Ihren Code so, dass die benutzerdefinierte Enumeration wie folgt verwendet wird:

    Calendar0.FirstDay = nwTuesday
    
  4. Führen Sie die Anwendung aus.

Weitere Informationen

Die systeminternen VBA-Konstanten hängen nicht von den lokalen Systeminformationen ab. Auf einem Computer, der über das lokalisierte Betriebssystem in der deutschen Sprache verfügt, ist der erste Tag der Woche der Montag. Der numerische Wert, der montags auf dem Computer zugeordnet ist, ist immer 0.

Da Calendar Control 10.0 oder eine höhere Version ein weltweites Microsoft ActiveX-Steuerelement ist, können Sie die numerischen Werte, die den systeminternen VBA-Konstanten zugeordnet sind, nicht basierend auf ihren Computerspezifikationen steuern. Daher tritt das Problem auf, das im Abschnitt "Symptome" dieses Artikels erwähnt wird.

Schritte zum Reproduzieren des Problems

  1. Starten Sie Den Zugriff.

  2. Öffnen Sie die Beispieldatenbank Northwind.

  3. Klicken Sie im Fenster Datenbank unter Objekte auf Formulare.

    Hinweis

    Klicken Sie in Access 2007 auf die Registerkarte Erstellen, und klicken Sie dann in der Gruppe Formulare auf Formularentwurf.

  4. Doppelklicken Sie im rechten Bereich in der Entwurfsansicht auf Formular erstellen.

    Hinweis

    Überspringen Sie in Access 2007 diesen Schritt.

  5. Klicken Sie im Menü Einfügen auf ActiveX-Steuerelement.

    Hinweis

    Klicken Sie in Access 2007 auf die Registerkarte Entwurf, und klicken Sie dann in der Gruppe Steuerelemente auf ActiveX-Steuerelement einfügen.

  6. Klicken Sie im Dialogfeld ActiveX-Steuerelement einfügen im Listenfeld ActiveX-Steuerelement auswählen auf Kalendersteuerelement 10.0 oder eine höhere Version, und klicken Sie dann auf OK.

  7. Fügen Sie dem Formular, in dem die Eigenschaften wie folgt festgelegt sind, eine Befehlsschaltfläche hinzu:

    Eigenschaft Wert
    Name testFD
    Caption Erster Tag ändern
  8. Klicken Sie im Menü Ansicht auf Code.

    Hinweis

    Klicken Sie in Access 2007 auf die Registerkarte Entwurf, und klicken Sie dann in der Gruppe Tools auf Code anzeigen.

  9. Geben Sie im Visual Basic-Editor den folgenden Code ein, oder fügen Sie ihn ein:

    Option Compare Database
    
    Private Sub testFD_Click()
     Calendar0.FirstDay = vbTuesday
    End Sub
    
  10. Klicken Sie im Menü Datei auf Speichern .

    Hinweis

    Klicken Sie in Access 2007 auf die Microsoft Office-Schaltfläche und dann auf Speichern unter.

  11. Geben Sie im Dialogfeld Speichern unter im Feld Formularname den Namen Form1 ein, und klicken Sie dann auf OK , um das Formular Form1 zu speichern.

  12. Öffnen Sie Form1 in der Formularansicht.

  13. Klicken Sie auf die Schaltfläche Erster Tag ändern .

    Obwohl Sie die FirstDay Eigenschaft des Kalendersteuerelements auf vbTuesday festlegen, wählt der Kalender Mittwoch als ersten Tag der Woche aus.

References

Weitere Informationen zum Kalendersteuerelement und zu den Eigenschaften des Kalendersteuerelements finden Sie unter Mscal.hlp, und suchen Sie nach dem entsprechenden Thema. Mscal.hlp befindet sich in den folgenden Ordnern:

Microsoft Access 2002

Installationslaufwerk: \Program Files\Microsoft Office\Office10

Microsoft Office Access 2003

Installationslaufwerk: \Program Files\Microsoft Office\Office11

Hinweis

Installationslaufwerk ist ein Platzhalter für den Namen Ihres Installationslaufwerks.