我正在制作销售报告(POS)。我有组合框,其中的项目是整体,每日,每月,每年。因此,如果用户选择覆盖(组合框),例如他选择每月,则每月的销售报告将显示在数据网格视图上。现在,我的问题是如何解决这个错误:'错误:参数化查询'(@ Month nvarchar(4000))SELECT * FROM tbltransactions INNER JOIN'需要参数' @ Month',这是未提供的。'
检索每月销售额的代码:
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
答案 0 :(得分:0)
确保行salesView.comboMonth.SelectedItem
.Parameters.AddWithValue("@Month", salesView.comboMonth.SelectedItem)
值不为空
您可以使用空字符串初始化它或使用DBNull.Value
。
请参阅this answer