Сортировка по месяцам в MS Access - PullRequest
1 голос
/ 07 апреля 2009

Я использую базу данных MS Access для отслеживания некоторых задач в течение года. Каждое задание имеет срок Месяц . Я не хочу использовать точные даты, так как в моей команде принято называть месяц. Я не хочу хранить даты в формате даты, так как члены команды будут вводить соответствующий месяц вручную.

Можно ли отсортировать мои поля в порядке дат, если дата хранится в виде текстовой строки month? (например, январь, февраль, а не 31.01.2009, 28.02.2009).

Если это так, как будет выглядеть такой запрос?

Заранее спасибо.

Ответы [ 6 ]

2 голосов
/ 07 апреля 2009

Если вы сохраняете только название месяца, сначала вам нужно будет преобразовать в дату, чтобы получить номер месяца, использовать таблицу поиска (MonthNo, MonthName) или использовать функцию переключения. Вот пример преобразования в дату:

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

Однако, вероятно, есть хороший аргумент для сохранения даты на основе введенного названия месяца, это предотвратит путаницу с годами.

0 голосов
/ 26 июня 2014

Я понимаю, что это мертво, но Google привел меня сюда, когда я искал, поэтому думал, что я добавлю к этому:

Я сам столкнулся с этой проблемой (Access 2010) и нашел здесь достойный ответ: http://www.vbforums.com/showthread.php?503841-How-to-Convert-MonthName-to-Value(Microsoft-access-2003)

Итак, у меня был Запрос, который вытащил ДЕСЯТЬ месяцев из моего стола. Затем в режиме конструктора я добавил еще один столбец с MonthNo: Month(CDate("1 " & [Month])) и отсортировал запрос по этому столбцу

надеюсь, что это поможет кому-то, если не ОП.

0 голосов
/ 14 мая 2009

Спасибо всем за ваши ответы. Извините за задержку с ответом - я снова работаю над этим вопросом.

Для ясности, БД должна использоваться для отслеживания расписания событий в течение 12-месячного периода. Сохранять год не нужно, поскольку все в БД относится к одному и тому же году. Новая копия БД будет сделана в начале 2010 года.

Я действительно хочу хранить месяц как слово, а не любое поле значений или даты, так как при массовом добавлении задач я, скорее всего, буду редактировать таблицу напрямую, а не использовать форму.

0 голосов
/ 08 апреля 2009

Я бы сделал поле даты.

Я бы сохранил 01.01.2009 за январь 2009 г., 01.02.2009 за февраль 2009 г. и т. Д. В целях отображения я отформатировал бы его так, чтобы он отображал только месяц (или Месяц + Год - не представляю, как вам не нужен год).

Это позволяет использовать преимущества операций с датами на поле без беспорядочного преобразования текста в форматы даты.

0 голосов
/ 07 апреля 2009

Я бы сохранил месяц как целое число 1-12, тогда вы можете легко отсортировать их.

0 голосов
/ 07 апреля 2009

Это должно работать

ВЫБРАТЬ * FROM TableName OrderBy Месяц (поле даты)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...