2013-08-02 5 views
0

Я просто не знаю, как это сделать.Как получить месяц в пределах диапазона vb2010

Я разработал программу, которая использует MS Access в качестве своей базы данных. У меня есть поле месяца и года (полевой тип данных - текст), где пользователь может регистрировать данные. Программа зарегистрирует месяц и год, выбранные пользователем, например, месяц = ​​сентябрь, год = 2011.

Моя проблема заключается в том, как выбрать диапазон данных для просмотра пользователем с использованием месяца и года в качестве критерия, например, Пользователь может захотеть просмотреть диапазон данных (с сентября 2011 года по июль 2013 года).

Я не мог понять, как это сделать. Помощь будет высоко оценена.

+1

использование там, где условия для обоих, как Год и месяц. –

+0

Посмотрите http://office.microsoft.com/en-us/access-help/use-a-parameter-to-make-a-query-ask-for-input-HA010341833.aspx –

ответ

1

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

Затем можно построить DateTime объект из них, к примеру сентября будет 9, и вы можете использовать код, подобный следующему:

var startDate = new DateTime(year, month, 1); // get year and month as integers from database, uses the first as the date 
var endDate = new DateTime(year, month, 10); // change the date but keeps the month and year the same 
var endDate2 = startDate.AddMonths(1); // adds 1 month to the date 

В качестве альтернативы, вы можете попробовать использовать календарь управления, чтобы позволить пользователю выберите две даты вместо того, чтобы строить их из нескольких полей. В зависимости от того, что вы используете, это может быть достигнуто несколькими способами, например, в ASP.Net или WPF вы можете использовать два элемента управления календарем и просто использовать свои свойства SelectedDate как свой диапазон.

1

Диапазон от начальной точки до конечной точки. Для начальной точки вы можете автоматически добавить первый месяц. Для конечной точки это сложнее, потому что конечной точки нет. Что вы можете сделать следующее:

  1. Запишите массив, содержащий данные за каждый месяц (например, 30 или 31). За исключением февраля, есть шаблон исправления.
  2. для Февраля использовать выбранный год для проверки год високосного года или нет. Если не добавить 28, добавьте 29.
  3. После этого создайте строку даты для вашего SQL: Начальная дата 1.9.2011. Сделайте для этого то же самое.
  4. После этого, я думаю, вы можете использовать ключевое слово between в своем SQL-запросе.
1

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

select * from [tablename] where DateSerial([colYear], [colMonth], 1) between DateSerial([fromYear], [fromMonth], 1) and DateSerial([toYear], [toMonth], 1) 
+0

Будет ли он работать с моим структура таблицы в базе данных? – Diamond

+0

Я не знаю вашу структуру таблицы, но если вы измените строку в скобке с правой переменной, она должна работать. –

0

В этом вопросе есть несколько способов сделать это:

Первое. Фильтр дат в диапазоне при условии, что вы используете дату как '07-12-2012'

т.е. сентября 2011 по июль 2013 года

Where DateColumn > '09-01-2011' and DateColumn < '07-31-2013' 

ИЛИ

Укажите дату и год

Where month(DateColumn)='1' and year(DateColumn)='2016' 

Примечание: Есть много способов сделать это.

Вы можете манипулировать своим заявлением в зависимости от желаемого результата.

Смежные вопросы