2013-02-15 89 views
0

我有這樣的論文項目,我應該組我的數據庫,以年,月每年,每月分組的Visual Basic

這裏是一個域和數據樣本

表名是:tblsell

Date_Saved | Total Price 

2-5-2013  5 
2-5-2013  10 
2-5-2013  5 
2-6-2013  6 
2-7-2013  3 
2-8-2013  2 
3-1-2013  6 
3-2-2013  11 
3-3-2013  2 
3-5-2014  5 
3-6-2014  4 
現在

,我打算創建2個按鈕,這樣,當我在每月的點擊按鈕,這將顯示在datagridview的

Date_saved | Total_Earnings 

2-2013 or february 2013  31 
3-2013 or march 2013   19 
3-2014 or march 2014   9 

然後,如果我按一下按鈕,每年這應該datagridview的

Date_saved | Total_earnings 

2013  50 
2014  9 

表明我不知道如果我指出了正確的輸出,但至少接近該輸出應該這樣做。

date_saved的數據類型是文本,total_earnings是訪問數字。我使用datestring獲取date_saved。像.add... = datestring。我不知道它是否正確,所以我可以得到日期。

我在報告查看器上嘗試它們,但我不知道如何處理reportviewer,因此我放棄了,只是認爲它更容易在datagridview和按鈕上。

+0

等待,你在Access或VB.NET? – Brad 2013-02-15 01:00:39

+0

我使用訪問作爲我的VB項目的數據庫。 – 2013-02-15 01:54:59

回答

2

如果你想這是一個DataGrid那麼這些都是你的兩個查詢選項

設置好喜歡你的基地臺Table1

enter image description here

您可以創建一個新的查詢像這樣 enter image description here

它生成此代碼。

SELECT MonthName(Month([Date_Saved])) & ' ' & Year([Date_Saved]) AS [Year], Sum(Table1.[Total Price]) AS [SumOfTotal Price] 
FROM Table1 
GROUP BY MonthName(Month([Date_Saved])) & ' ' & Year([Date_Saved]); 

併產生這些結果。

enter image description here

分組是這裏的關鍵。有幾種方式來組織和他們的方式我這樣做是有讓您的數據網格的樣子「格式化」,但比的方法,如

SELECT DATEADD('m', DATEDIFF('m',0,date_saved), 0) as [Month], sum([total price]) as [Month's Total Price] 
FROM Table1 
group by DATEADD('m', DATEDIFF('m',0,date_saved), 0) 

這是功能相當的慢,而是因爲它沒有做任何數據類型轉換運行更快。此外,它還有一個額外的好處,即現在您可以在報告的文本框中格式化日期,但是您感覺並且不決定查詢時間。缺點是與使用monthmonthname,year函數相比,dateadd/datediff方法有一點鈍。

+0

謝謝你回答,甚至與圖像,所以我可以很容易地理解它:D現在工作正常。 – 2013-02-15 01:53:22

+0

優秀,你非常歡迎:) – Brad 2013-02-15 02:47:55