【发布时间】:2017-01-04 21:02:46
【问题描述】:
我在 Access 数据库中有一个表,其中包含如下信息:
日期序列结果
2016 年 1 月 5 日 5299 次通过
2016 年 1 月 5 日 5371 通行证
2016 年 1 月 6 日 5280 次通过
2016 年 1 月 6 日 3962 失败
2016 年 1 月 7 日 1325 次通过
我正在尝试运行查询以显示结果为“PASS”的 SERIAL 的计数,并为每一天绘制它们。我设法得到的最接近的是以下内容:
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"
- 如果我使用表单上的 DateTimePickers(dtpFrom 和 dtpTo)为开始日期和结束日期选择 2016 年 1 月 5 日,我的图表会显示 2016 年 1 月 5 日的 2 个连续剧。同样,如果我选择 2015 年 1 月 6 日的开始和结束日期,它会显示 1 个序列号。 (耶)
- 如果选择开始日期为 2016 年 1 月 5 日,结束日期为 2016 年 1 月 7 日,则这 3 天中的每一天都会显示 4 个连续剧。 (嘘)
我怎样才能让它不累积,而是显示每天通过的连续剧的数量?
【问题讨论】: