首页 > 解决方案 > 如何从访问数据库中获取具有数量的畅销产品并显示在标签上

问题描述

我正在做一个POS系统。在那,我必须在仪表板上包含前 3 种销量最高的产品,但我不知道该怎么做。请帮我进行编码,数据应该检索表单访问数据库。

这就是我为获得销量最高的 1 项所做的工作。我还需要获得前 2 项和第 3 项。任何帮助

结果预期的图像 结果预期的形象

con = New OleDbConnection(cs)
        con.Open()
        Dim ct As String = "SELECT TOP 3 ProductName, Sum(Quantity) as Quantity FROM ProductSoldDB group by ProductName order by SUM(Quantity)"
        cmd = New OleDbCommand(ct, con)

        rdr = cmd.ExecuteReader()
        While rdr.Read
            lblProduct1Name.Text = rdr("ProductName")
            lblQTYProduct1.Text = rdr("Quantity")
        End While
        If Not rdr Is Nothing Then
            rdr.Close()
        End If

        con.Close()

标签: vb.netms-access

解决方案


假设您有 3 个面板来显示排名前 3 的销售产品,并且每个面板都有这样的级别:面板 1 - 标签产品名称 - lblProduct1Name ,标签数量名称 -lblQTYProduct1

面板 2 - 标签产品名称 - lblProduct2Name ,标签数量名称 -lblQTYProduct2

面板 3 - 标签产品名称 - lblProduct3Name ,标签数量名称 -lblQTYProduct3

我们将在每次迭代中获得 lblProductName 和 lblQTYProduct 并为它们设置值。

最终代码如下:

    con = New OleDbConnection(cs)
    con.Open()
    Dim ct As String = "SELECT TOP 3 ProductName, Sum(Quantity) as Quantity FROM ProductSoldDB group by ProductName order by SUM(Quantity) Desc"
    cmd = New OleDbCommand(ct, con)

    rdr = cmd.ExecuteReader()
    Dim index As Integer = 1
    While rdr.Read

        Dim ctrlProduct As Control = Me.Controls.Find("lblProduct" + index.ToString() + "Name", True).FirstOrDefault()

        ctrlProduct.Text = rdr("ProductName")

        Dim ctrlQuantity As Control = Me.Controls.Find("lblQTYProduct" + index.ToString(), True).FirstOrDefault()

        ctrlQuantity.Text = rdr("Quantity").ToString()
        index = index + 1

    End While
    If Not rdr Is Nothing Then
        rdr.Close()
    End If

    con.Close()

在这里输出 - 根据您的要求更改外观: 在此处输入图像描述


推荐阅读