2014-12-03 38 views
0

你好,併爲我的noob問題感到抱歉。我一直在努力尋找幾個小時的答案(包括官方的MSDN微軟指南),沒有積極的結果。VB從Access數據庫中提取平均值

目前我正在致力於VB.Net包裹遞送項目,旨在寫入和檢索訪問數據庫中的數據。在顯示窗體上,它顯示了數據網格視圖中的選定數據,我使用sql查詢來檢索英國的entires。我能夠顯示符合條件的條目數量,但無法弄清楚如何運行另一個查詢,因此它將計算地塊​​的平均成本,以及如何將結果傳遞給變量。有人可以看看這個和幫助嗎?會批准代碼如何改進的建議。請記住我處於非常先進的水平。

Private Sub frmUkInfo_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" 
    dbSource = "Data Source= D:/ProjectDatabase.mdb" 
    connect.ConnectionString = dbProvider & dbSource 

    connect.Open() 
    dataSet.Tables.Add(dataTable) 

    sql = "SELECT * FROM Parcels WHERE ParZone = ""UK""" 
    dataAdapter = New OleDb.OleDbDataAdapter(sql, connect) 
    dataAdapter.Fill(dataTable) 

    dataView.DataSource = dataTable.DefaultView 

    connect.Close() 

    rowsNo = dataView.Rows.Count 
    lblParcelsNoDisplay.Text = rowsNo 

End Sub 

非常感謝您的幫助。

+1

如果你給我們的是什麼錯誤指示這將是有益的。 – Mych 2014-12-03 14:56:24

+0

唯一的想法是我沒有收到任何錯誤,僅僅是因爲我不知道如何處理這個問題,即從數據庫中的成本表中獲得平均值。 – JaE 2014-12-03 15:17:13

回答

0

你可以使用Linq-To-DataTable獲得的平均價格:

Dim parcelPrices = From row In dataTable.AsEnumerable() 
        Select row.Field(Of Double)("Price") 
Dim averageCostOfParcels As Double = parcelPrices.Average() 
+0

我已經嘗試過並將結果分配給標籤: lblAvgCostDisplay.Text = averageCostOfParcels儘管標籤中沒有顯示任何內容。有任何想法嗎? – JaE 2014-12-03 15:14:55

+0

@JaE:熟悉調試器,設置斷點並檢查'averageCostOfParcels'的值。表中是否包含行?什麼包含價格清單:'Dim list = parcelPrices.ToList()'? – 2014-12-03 15:18:10

+0

我曾運行調試器。平均值在任何時候都是0.0。代碼如下所示:'Dim parcelPrices = From row in dataTable.AsEnumerable() Select row.Field(Of Double)(「Cost」) Dim averageCostOfParcels As Double = parcelPrices.Average() lblAvgCostDisplay.Text = averageCostOfParcels'更改爲「成本」,因爲它是表格的名稱。還嘗試更換Double與單,但得到了相同的結果。是的,該表包含行和值(目前英國爲5)。 Access文件中的表格具有貨幣格式。這可能嗎? – JaE 2014-12-03 15:29:49

0

嘗試

sql = "SELECT * FROM Parcels WHERE ParZone = 'UK'"