2016-07-22 59 views
-1

一直在使用SQLDataAdapter和Fill命令來處理數據獲取查詢以及用於執行插入,更新和刪除操作。SqlCommand和SqlDataAtapter的參數

我有一個問題,可以{噸弄清楚我做錯了什麼。 我有一個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)[email protected] AND 
        YEAR(Enc_Recibo.dFechaFact)[email protected] 
        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 

I {m到處無論是沒有爲@Mes定義標量錯誤,或者第二個錯誤沒有針對sda.Fill行。

我是一個新手,經過幾小時的研究,我只是無法弄清楚我做錯了什麼。

任何幫助將apreciated

+2

嘗試'昏暗SDA作爲新的SqlDataAdapter(CMD)' – LarsTech

+1

你缺少的和/或可能運算符在YEAR條件之後和Producto條件之前。使用verbatim @字符串可以使問題清楚。 – Steve

+0

謝謝史蒂夫會在我的桌面上檢查出這個問題 – TikalDog

回答

0

這是因爲缺少connection.Open()

Using conection As New SqlConnection(constr) 
conection.open() 
<REST OF YOUR CODE> 
+4

SqlDataAdapter在關閉時打開連接。 – Steve

+0

史蒂夫感謝......很高興知道。 @LarsTech有更好的答案。 – objectNotFound