2010-12-06 32 views
1

Voici mon code:Erreur: doit déclarer le Scalar variable

Public Function selectReturnsByUserId(limit As Integer, userid As String) As DataSet 



    Dim sql As String = " SELECT TOP " & limit & " pr.ProductId, p.Title, p.Barcode, pr.ScanDate, pr.UserId, pr.ReturnStatus" & _ 
         " FROM " & tablename & " pr " & _ 
         " INNER JOIN " & StaticValues.TABLENAME_PRODUCT & " p ON pr.ProductId = p.ProductId" & _ 
         " WHERE pr.UserId = @UserId" 

    Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(sql) 

    cmd.Parameters.AddWithValue("@UserId", userid) 

    Return _select(cmd) 

End Function 

Quels sont les appels:

Protected Function _select(ByVal cmd As SqlClient.SqlCommand) As DataSet 

    Dim ds As New DataSet 
    Dim myAdapter As New System.Data.SqlClient.SqlDataAdapter(cmd.CommandText, DBConnection.getInstance().getConnection().ConnectionString) 
    myAdapter.Fill(ds, tablename) 

    Return ds 

End Function 

Et quand je tente de l'exécuter, je reçois cette erreur:

Must déclarer la variable scalaire "@UserId"

Sur cette ligne:

myAdapter.Fill(ds, tablename) 

Comment réparer cette ligne?

Merci

+0

Votre capitalisation est très mauvaise. http://msdn.microsoft.com/en-us/library/ms229043.aspx – SLaks

Répondre

2

Vous n'avez jamais transmis le paramètre à SqlDataAdapter.

Vous devez modifier la méthode _select pour utiliser l'original SqlCommand ou pour copier ses paramètres.

+0

Je suis désolé, je ne comprends pas trop ce que vous voulez dire. Pouvez vous donner un exemple? – CrazyPenguin

+0

@Matthew: Que pensez-vous qu'il arrive à votre SqlParameter? – SLaks

+1

'Dim myAdapter comme nouveau SqlClient.SqlDataAdapter (cmd)' – SLaks