2013-08-02 68 views
0

我只是不知道如何去做這件事。如何獲得一個範圍內的月份vb2010

我設計的,使用MS Access作爲其數據庫的程序。我有一個月份和年份的字段(字段數據類型是文本),用戶可以在其中註冊詳細信息。該程序將記錄用戶選擇的月份和年份,例如月份= 9月份,年份= 2011。現在

我的問題是,如何選擇範圍的數據通過月份和年份爲標準用戶查看e.g用戶可能希望查看的數據範圍從(2011年9月至7月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月份外,還有一個修復模式。
  2. 2月份使用選定年份檢查是否爲閏年。如果不加28,否則加29
  3. 之後,創建您的SQL日期字符串: 開始日期1.9.2011。爲entdate做同樣的事情。
  4. 之後,我認爲你可以在你的SQL查詢中使用關鍵字between
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年9月至7月2013

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

OR

指定日期和一年

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

注: 有很多方法可以做到這一點。

你可以根據你想要的輸出來操縱你的語句。

相關問題