這是爲我所在的課程進行的預先分配。假設它非常簡單並充當熱身活動,但我無法使其工作。基本上,代碼引入了測試數據庫並執行計算。在這種情況下,我試圖找到一組棒球運動員中最高的平均擊球平均數。VB.Net中的SQL計算不起作用
所以我的最終結果應該是擊球平均得分最高的球員的名字,或者如果他們平均得分最高,那麼他們的名字應該是少數。
下面是代碼:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As DataTable = New DataTable()
Dim connStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Baseball.accdb"
Dim sqlStr As String = "SELECT * FROM Players"
Dim dataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sqlStr, connStr)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
Dim average, pastAverage, highestAverage As Double
For i As Integer = 0 To dt.Rows.Count - 1
average = CDbl(dt.Rows(i)("hits/atBats"))
If average > pastAverage Then
highestAverage = average
End If
pastAverage = average
Next
For i As Integer = 0 To dt.Rows.Count - 1
If dt.Rows(i)("hits/atBats") = highestAverage Then
lstBoxHighest.Items.Add(dt.Rows(i)("name"))
End If
Next
End Sub
End Class
調試將不會晃過的 「平均= Cdbl(dt.Rows(ⅰ)(」 命中/ atBats 「))」 中的第一個for循環線。我不能在循環中進行這樣的計算嗎?我相信列標題(命中和atBats是正確的)
數據庫看起來像這樣的情況下,你想知道:
name Team atBats hits Derek Jeter New York Yankees 511 158 Joe Mauer Minnesota Twins 545 174 etc...
謝謝!
命中是列名,atBats是列名。我試圖通過atBats除以命中來找到擊球平均數。所以它應該是一個計算。我應該嘗試通過寫入SELECT名創建一個新的列,命中/ atBats作爲擊球平均來自玩家? – user3029567
我加了什麼數據庫看起來像所以你可以看到atBats和命中列 – user3029567