检索组合框上所选项目的销售情况

时间:2018-02-05 03:41:37

标签: sql-server vb.net datagridview

我正在制作销售报告(POS)。我有组合框,其中的项目是整体,每日,每月,每年。因此,如果用户选择覆盖(组合框),例如他选择每月,则每月的销售报告将显示在数据网格视图上。现在,我的问题是如何解决这个错误:'错误:参数化查询'(@ Month nvarchar(4000))SELECT * FROM tbltransactions INNER JOIN'需要参数' @ Month',这是未提供的。'

TableStructure

检索每月销售额的代码:

Public Sub retrieveMonthlySales()
        Try
            dbConnection()
            search_query = "SELECT * FROM tbltransactions INNER JOIN tbltransaction_logs ON tbltransaction_logs.trans_number = tbltransactions.trans_number WHERE Month = @Month;"
            command = New SqlCommand
        With command
            .Connection = connection
            .CommandText = search_query
            .Parameters.Clear()
            .Parameters.AddWithValue("@Month", salesView.comboMonth.SelectedItem)
            .ExecuteNonQuery()
        End With
        dataTable = New DataTable
        dataAdapter = New SqlDataAdapter
        dataAdapter.SelectCommand = command
        dataAdapter.Fill(dataTable)
        salesView.salesDGV.DataSource = dataTable

        With salesView.salesDGV
            .Columns(1).HeaderText = "Invoice #"
            .Columns(7).HeaderText = "Quantity"
            .Columns(8).HeaderText = "Product Size"
            .Columns(9).HeaderText = "Product Code"
            .Columns(12).HeaderText = "Total Amount"
        End With
    Catch ex As SqlException
        MsgBox("Error: " + ex.Message)
    Finally
        connection.Close()
        command.Dispose()
    End Try
End Sub

组合框代码

Private Sub comboCoverage_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboCoverage.SelectedIndexChanged
    If comboCoverage.SelectedItem = "Monthly" Then
        retrieveMonthlySales()
        MsgBox("Showing monthly sales!")
        comboMonth.Enabled = True
        comboDay.Enabled = False
        comboYear.Enabled = False
        btnSearch.Enabled = True
        comboMonth.SelectedItem = ""
        comboDay.SelectedItem = ""
        comboYear.SelectedItem = ""
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

确保行salesView.comboMonth.SelectedItem

中的.Parameters.AddWithValue("@Month", salesView.comboMonth.SelectedItem)值不为空

您可以使用空字符串初始化它或使用DBNull.Value

请参阅this answer