【问题标题】:Show summed columns in chart? day/month在图表中显示总和列?日/月
【发布时间】:2018-03-30 14:01:39
【问题描述】:

我正在尝试学习如何在图表中显示数据,到目前为止我已经设法显示数据,但是我的 sql 查询有问题,我需要它以某种方式显示数据.

这是我的代码> 我有 1 个用于选择商店名称的组合框和 2 个日期时间选择器。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim Provider As String
    Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
    Dim dataFile As String
    dataFile = "Original.accdb"


    Dim SqlQry1 As String = "SELECT [Delivered], [Datess] FROM [Table1] WHERE [Store] = @1 AND [Datess] BETWEEN @2 AND @3 ORDER BY [Datess] ASC"


    Using myconnection As New OleDbConnection(Provider & dataFile)
        myconnection.Open()

        Dim cmd1 As New OleDbCommand(SqlQry1, myconnection)
        cmd1.Parameters.Add(New OleDbParameter With {.ParameterName = "@1", .OleDbType = OleDbType.Char, .Value = combobox1.SelectedItem})
        cmd1.Parameters.Add(New OleDbParameter With {.ParameterName = "@2", .OleDbType = OleDbType.Date, .Value = fromdatess.Value.Date})
        cmd1.Parameters.Add(New OleDbParameter With {.ParameterName = "@3", .OleDbType = OleDbType.Date, .Value = todatess.Value.Date})


        Dim dr As OleDbDataReader = cmd1.ExecuteReader
        While dr.Read

            Dim asd As String
            asd = dr("Delivered")

            Dim datess As Date
            datess = dr("Datess")

            Chart1.ChartAreas(0).AxisX.Interval = 1
            Chart1.Series("Series1").Points.AddXY(datess.ToShortDateString, asd)


        End While

    End Using


End Sub

我希望能够总结“已交付” 现在我的桌子是这样的>

ID    |   Store    |  Delivered |  Datess
 1        Ace1         200         3/1/2018
 2        Ace1         150         3/1/2018
 3        Bis1          50         3/2/2018
 4        Ace1          50         3/2/2018

我想做的就是这样显示>

Ace1 350  3/1/2018
Bis1  50  3/2/2018
Ace1  50  3/2/2018

如您所见,Ace1 已求和。现在我尝试对它求和,但它会显示所有日子的总和结果,因为我有“BETWEEN Datess and Datess”,所以它在这些日期之间求和。我怎样才能只总结一天,但显示从 2018 年 1 月 3 日到 2018 年 1 月 30 日整个月的数据。任何帮助将不胜感激。

谢谢~

【问题讨论】:

    标签: sql vb.net ms-access


    【解决方案1】:

    我认为你需要使用SUMGROUP BY

    如果您想从SUM([Delivered]) 中读取信息,请给该文件取一个别名。

    SELECT [Store],SUM([Delivered]) AS Delivered, [Datess] 
    FROM [Table1] 
    WHERE [Store] = @1 AND [Datess] BETWEEN @2 AND @3 
    GROUP BY [Store],[Datess] 
    ORDER BY [Datess] ASC
    

    【讨论】:

    • 是的,我以前试过这个,但它给我一个错误 System.IndexOutOfRangeException: 'Delivered' 它指向 dr("Delivered")
    • SUM([Delivered])一个别名怎么样?
    • 我不知道那是什么意思;它足以告诉我该怎么做,我会做的,感谢您的快速回复
    • 你可以试试我的编辑答案:) 别名。可以让dr("Delivered") 获取数据。重点是SUM([Delivered]) AS Delivered
    • 你为我节省了很多时间。非常感谢你。昨天一整天都在尝试自己修复它,但没有成功:S 今天我要看看这个小组是如何工作的,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多