2009-04-07 13 views
1

Ich verwende eine MS Access db, um einige Aufgaben während des Jahres zu verfolgen. Jede Aufgabe hat einen fälligen Monat. Ich möchte keine genauen Daten verwenden, da die Vereinbarung in meinem Team sich auf den Monat bezieht. Ich möchte die Daten nicht in einem Datumsformat speichern, da Teammitglieder den fälligen Monat manuell eingeben.Sortieren nach Monat in MS Access

Ist es möglich, meine Felder in der Datumsreihenfolge zu sortieren, wenn das Datum als Zeichenfolge Monat gespeichert ist? (z. B. Januar, Februar statt 31/01/2009, 28/02/2009).

Wenn ja, wie würde eine solche Abfrage aussehen?

Vielen Dank im Voraus.

Antwort

0

Dies sollte

SELECT * FROM Tablename SortiertNach Monat (DATE_FIELD)

+0

Das OP speichert den Monat - so funktioniert Ihr Code nicht –

0

arbeite ich 1-12, dann können Sie sortieren sie leicht den Monat als Integer speichern würde.

2

Wenn Sie nur den Monatsnamen speichern, müssen Sie zuerst in ein Datum konvertieren, um eine Monatsnummer zu erhalten, eine Nachschlagetabelle (MonthNo, MonthName) verwenden oder die Switch-Funktion verwenden. Hier ist ein Beispiel zu einem Zeitpunkt der Umwandlung:

SELECT Month(CDate(Year(Date()) & "/" & [MonthNameField] & "/1")) AS MonthNo 
FROM Table 

Allerdings gibt es wahrscheinlich ein gutes Argument für ein Datum zu speichern, basierend auf den Monatsnamen eingegeben, würde dies keine Verwirrung über Jahre verhindern.

+0

Nur um zu klären, die Abfrage, wie vom OP erforderlich wäre SELECT ... FROM ... WO ... ORDER BY Monat (CDate (Jahr (Datum()) & "/" & [MonthNameField] & "/ 1")). –

+0

+1 für die Verwendung der Nachschlagetabelle. – Arvo

0

Ich würde ein Datumsfeld machen.

Ich würde 1/1/2009 für Januar 2009, 1. Februar 2009 für Februar 2009 speichern, und so weiter. Zu Anzeigezwecken würde ich es so formatieren, dass es nur den Monat (oder Monat + Jahr) anzeigt - kann mir nicht vorstellen, wie Sie das Jahr nicht wollen würden.

Dies ermöglicht die Nutzung von Datumsoperationen auf dem Feld ohne unordentliche Konvertierungen von Text zu Datumsformaten.

0

Vielen Dank für Ihre Antworten. Entschuldigung für die Verzögerung bei der Antwort - Ich arbeite jetzt wieder an diesem Problem.

Aus Gründen der Übersichtlichkeit wird die DB verwendet, um einen Zeitplan von Ereignissen innerhalb von 12 Monaten zu verfolgen. Das Jahr muss nicht gespeichert werden, da sich alles in der DB auf das gleiche Jahr bezieht. Eine neue Kopie der DB wird Anfang 2010 gemacht werden.

Ich bin wirklich scharf darauf, den Monat als ein Wort eher als irgendeine Art von Wert oder Datumsfeld zu speichern, als wenn das Hinzufügen von Aufgaben, die ich wahrscheinlich bearbeiten werde die Tabelle direkt, anstatt ein Formular zu verwenden.

0

Ich weiß, das tot ist, aber Google hat mich hierher gebracht, während ich so sah dachte ich es hinzufügen würde:

Ich hatte dieses Problem selbst (Access 2010) und fand eine anständige Antwort hier: http://www.vbforums.com/showthread.php?503841-How-to-Convert-MonthName-to-Value(Microsoft-access-2003)

Also was ich getan habe, war eine Abfrage, die die DISTINCT-Monate von meinem Tisch zog. Dann in der Design-Ansicht habe ich eine weitere Spalte mit MonthNo: Month(CDate("1 " & [Month])) und sortiert die Abfrage für diese Spalte

hoffe, das hilft jemand, wenn nicht das OP.