1
日対数量チャートへ:VB.NETデータベースクエリは、私は、次のような情報をAccessデータベースのテーブルを持っている
DATE SERIAL結果を
2016年1月5日5299 PASS
1月5日/ 2016年、私はSERIALのものの数を表示するためのクエリを実行しようとしている5371 PASS
2016年1月6日5280 PASS
2016年1月6日3962 FAIL
2016年1月7日1325 PASS
「合格」の結果を得て、毎日それらをプロットします。私は、次のされ得るために管理している最も近い:私は私のフォーム(dtpFromとdtpTo)にDateTimePickersを使用して、両方の開始日と終了日のために2016年1月5日を選択した場合
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim query As String
Dim FullDatabasePath As String = "C:\db.accdb"
Dim dbProvider As String = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
Dim dbSource As String = " Data Source = " & FullDatabasePath
Dim table As String = "tblQA"
query = "SELECT [DATE], (SELECT COUNT([SERIAL]) FROM " & table & " WHERE [DATE] BETWEEN #" & dtpFrom.Value.ToString("MM/dd/yyyy") & "# And #" & dtpTo.Value.ToString("MM/dd/yyyy") & "# AND RESULT = 'PASS') as RowCount FROM [" & table & "] WHERE DATE BETWEEN #" & dtpFrom.Value.ToString("MM/dd/yyyy") & "# And #" & dtpTo.Value.ToString("MM/dd/yyyy") & "# AND RESULT = 'PASS'"
Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection
con.ConnectionString = dbProvider & dbSource
da = New OleDb.OleDbDataAdapter(query, con)
ds.Clear()
con.Open()
da.Fill(ds, table)
con.Close()
Chart1.Series.Add("PASS")
Chart1.DataSource = ds.Tables(table)
Chart1.Series("PASS").XValueMember = "DATE"
Chart1.Series("PASS").YValueMembers = "RowCount"
- 、私のチャートが私を示してい2016年1月5日の2つのシリアル同様に、2015年1月6日の開始日と終了日を選択すると1つのシリアルが表示されます。 012平成20年1月5日の開始日と2011年1月7日の終了日を選択すると、3日ごとに4つの連番が表示されます。 (ブー)
私はそれを蓄積させないで、代わりに毎日の通し番号の数を表示できますか?
ご意見ありがとうございます。今は完璧に動作しています。後の見解では、パスの結果を数え、日付でグループ化することは理にかなっています。私はシリアルナンバーが何であるか心配する必要はありません。 'query =" SELECT [DATE]、COUNT(RESULT)から "RESULTCOUNT FRUE&RESULT = 'PASS'と[DATE]からRESULTCOUNT ASを返します。このコードを次のコードに翻訳しました。 # "GROUP BY [DATE]" " – fiveighteen
"&dtpFrom.Value.ToString( "MM/dd/yyyy")& "#And#"&dtpTo.Value.ToString( "MM/dd/yyyy")ありがとう。完全性のために、私は答えに日付の書式についての注釈を追加しました。 – peterG