Параметры для SqlCommand и SqlDataAtapter
Всегда работали с командами SQLDataAdapter и Fill для запросов на выборку данных, а также с запросами на выполнение для вставки, обновления, удаления.
У меня проблема и я не могу понять, что я делаю неправильно. У меня есть привязка DataTable к RadGrid. DataTable получает данные за один конкретный месяц поступления компании и генерирует дополнительный столбец с необходимой нам информацией.
Я получаю выбранный месяц из RadControl и отправляю данные после нажатия кнопки:
Protected Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
Dim fecha As Date
fecha = RadMonthYearPicker1.DbSelectedDate
miDataTable = objOPRecibo.FacturasEspeciales(fecha.Month, fecha.Year)
RadGrid1.Rebind()
End Sub
Это функция в вызываемом объекте:
Public Function FacturasEspeciales(Mes As Integer, Anio As Integer) As DataTable
Dim FEDataTable As New DataTable
Using conection As New SqlConnection(constr)
Using cmd As New SqlCommand(@"SELECT
SUM(Det_Recibo.dCantidad) Cantidad,
Producto.Nombre,
SUM(Det_Recibo.mTotal) Valor,
SUM((((Det_Recibo.mTotal*100)/95)*1.12)) ESPE
FROM Det_Recibo
INNER JOIN Enc_Recibo
ON Det_Recibo.idRecibo = Enc_Recibo.idRecibo
INNER JOIN Producto
ON Det_Recibo.idProducto = Producto.IdProducto
WHERE MONTH(Enc_Recibo.dFechaFact)=@Mes AND
YEAR(Enc_Recibo.dFechaFact)=@Anio
Producto.idGasto = 1 OR Producto.idGasto = 2
GROUP BY Producto.Nombre")
cmd.Parameters.AddWithValue("@Mes", Mes)
cmd.Parameters.AddWithValue("@Anio", Anio)
Dim sda As New SqlDataAdapter(cmd.CommandText, conection)
sda.Fill(FEDataTable)
End Using
End Using
'Return DataTable
Return FEDataTable
End Function
Я получаю либо неопределенную скалярную ошибку для @Mes, либо вторую ошибку, не относящуюся к строке sda.Fill.
Я новичок, и после нескольких часов исследований я просто не могу понять, что я делаю не так.
Любая помощь будет оценена
1 ответ
Это, вероятно, из-за отсутствия соединения.Open()
Using conection As New SqlConnection(constr)
conection.open()
<REST OF YOUR CODE>