2016-07-22 24 views
-1

Haben immer mit SQLDataAdapter und Fill-Befehl für Daten abgerufen Abfragen und mit executenonquery zum Einfügen, Aktualisieren, Löschen von Einsen.Parameter zu SqlCommand und SqlDataAtapter

Ich habe ein Problem und kann nicht herausfinden, was ich falsch mache. Ich habe eine DataTable Bindung an ein RadGrid. Die DataTable erhält die Daten für einen bestimmten Monat der Quittungen eines Unternehmens und generiert eine zusätzliche Spalte mit Informationen, die wir benötigen.

ich einen Monat fron einer RadControl und senden Sie die Daten nach Drücken einer Taste:

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 

Dies ist die Funktion im aufgerufenen Objekt:

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 entweder ein immer Nicht definierter Skalarfehler für @Mes oder ein zweiter Fehler, der nicht spezifisch für die Zeile sda.Fill ist.

Ich bin ein Neuling und nach Stunden der Forschung kann ich einfach nicht herausfinden, was ich falsch mache.

Jede Hilfe wäre

+2

Versuchen 'Dim sda As New SqlDataAdapter (cmd)' – LarsTech

+1

Sie vermissen die UND/ODER apreciated Betreiber nach der JAHR-Bedingung und vor dem Produkt-Zustand. Die Verwendung des Verbatim @ string macht das Problem klar. – Steve

+0

Danke Steve wird das überprüfen, wenn wieder auf meinem Desktop – TikalDog

Antwort

0

Es ist wahrscheinlich wegen der fehlenden connection.Open()

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

SqlDataAdapter öffnet die Verbindung, wenn es geschlossen ist. – Steve

+0

Steve danke ... gut zu wissen. @LarsTech hat eine bessere Antwort. – objectNotFound