|
|
|
| Здравствуйте, помогите пожалуйста разобраться.
У меня есть два столбца: 1 столбец - месяц (январь, февраль,...), 2 столбец - год (2007,2008,...)
Как мне выбрать из таблицы записи допустим с января 2007 по март 2008?
Я так понял нужно объединить эти столбцы и преобразовать в формат даты, например 01.01.2008 (пусть число всегда будет 1), но какую функцию использовать?
Объясните пожалуйста чайнику. | |
|
| |
|
|
|
| Первый способ - наиболее правильный - выкинуть нафиг эти столбцы и хранить просто даты.
Затем выбирать по условию в запросе between.
Второй способ - корявый. С помощью split разбивать дату ( 01.01.2008 ) на составляющие. С помощью Enum определить все месяцы и присвоить им ( месяцам ) соответствующие числовые значения. И потом пытаться боком-раком выбирать соответствия из таблицы.
Но это ИМХО изврат. | |
|
| |
|
|
|
| Дело в том что не я создавал это творение, вы может меня не так поняли мне из этих двух полей нужно сделать одно поле, как бы попроще то, вообщем в одно столбце "июнь" допустим, во втором "2008" допустим, объединил я их и получил "июнь,2008", как мне этот "июнь,2008" превратить в "01.06.2008"
Спасибо что откликнулись | |
|
| |
|
|
|
| Третий вариант:
А почему-бы не собрать дату из полей таблицы Cdate-ом?
А далее Format-ом и Between-ом.
?Cdate("01 июня 2008")
01.06.2008
|
| |
|
| |
|
|
|
| Как собрать два поля запросом в одно недавно спрашивала lurix. там есть вариант решения. | |
|
| |
|
|
|
| Вообще я в VB не силен, а можно как то сделать это в конструкторе?
поставил в конструкторе вот это :
Выражение1: CDate([Месяц] & " " & [Год])
Вроде получил то что нужно.
ОГРОМНОЕ СПАСИБО | |
|
| |
|
|
|
| Делаю запрос с параметрами по полученному столбцу:
>=[Начало периода] And <=[Конец периода] выдает непонятно что, например если я запрашиваю с 01.01.2007 по 01.01.2008, выдает только все записи с 01.01.2007 и все записи с 01.01.2008, а промежуточных нет (хотя по идее они есть), решил проверить - стал выбирать записи >01.01.2008 - он мне показываети 2007 год - не пойму в чем дело, может формат столбца получился не такой какой тогда? (все данные в полученном столбце имеют вид dd.mm.yyyy | |
|
| |
|
|
|
|
автор: Lukas (29.12.2009 в 11:57)
...
А далее Format-ом и Between-ом.
|
Я не зря упомянул эти функцию и оператор.
Поищите на форуме как правильно форматировать значения даты для передачи в запросы и
пользуйте оператор Between для проверки вхождения значения в диапазон. | |
|
| |
|
|
|
| Значит это не прокатит :Выражение1: CDate([Месяц] & " " & [Год]), получилось то вроде то что нужно - специально записи смотрел, нужный формат: dd.mm.yyyy, не пойму только почему неправильно выбирает, раньше когда в таблице сам задавал формат даты - в таблице правильно все выбиралось, что же щас делать, можно ли как то отформатировать полученную дату пользуясь конструктором? | |
|
| |
|
|
|
|
SELECT t1.*
FROM t1
WHERE CDate("01 " & t1.ItMonth & " " & t1.ItYear) Between #1/1/2010# And #03/31/2010#;
|
Здесь даты начала и окончания интервала приведены в формате, понятном запросу. | |
|
| |
|
|
|
| Извините полного чайника, но куда это привентить, я все делаю в конструкторе, я понимаю что t1 - таблица ItMonth и ItYear - это имена полей, но куда это
SELECT t1.*
FROM t1
WHERE CDate("01 " & t1.ItMonth & " " & t1.ItYear) Between #1/1/2010# And #03/31/2010#;
вставить, это я так понимаю надо где то макрос открывать...
Мне даже редактор VB не удается открыть - пишет Project is unviewable (программа делалась не мной - а выборку сделать надо...) | |
|
| |
|
17 Кб. |
|
| Переключить вид запроса в режим SQL.
Но можно и в режиме конструктора: | |
|
| |
|
|
|
| А как в режиме конструктора?
А t1 у Вас это новое поле ( в котором будет искомая дата)?
Пишет обнаружены символы за пределами инструкции SQL | |
|
| |
|
|
|
| Да как на рисунке в прицепе предыдущего сообщения.
t1- это имя таблицы, где данные живут. | |
|
| |
|
|
|
| В запросе сделал вот так:
Between CDate([Начало периода]) And CDate([Конец периода])
Все работает, СПАСИБО | |
|
| |
|
20 Кб. |
|
| Если сложно для понимания, можете так сделать выборку: см. прицеп.
При условии, что тип поля года - числовой | |
|
| |