2010-06-04 6 views
1

Je souhaite exécuter une méthode sur VB.Net pour renvoyer une date qui se trouve dans la procédure stockée. J'ai essayé d'utiliser ExecuteScalar mais cela ne marche pas il recule erreurDate de retour de la procédure stockée dans ASP.Net/VB.Net

'La conversion implicite du type de données datetime en int n'est pas autorisée. Utilisez la fonction CONVERT pour exécuter cette requête '

Toute aide serait très appréciée s'il vous plaît?

merci

ci-dessous est le code

Public Function GetHolidaydate(ByVal struserID as String) As DateTime 

     Dim objArgs1 As New clsSQLStoredProcedureParams 

     objArgs1.Add("@userID", Me.Tag) 
     objArgs1.Add("@Date", 0, 0, ParameterDirection.Output) 

     Return (CDate(ExecuteScalar(clsLibrary.MyStoredProcedure.GetHolidayDate, objArgs1))) 

End Function 

Répondre

0

Je pense que votre problème est ici:

objArgs1.Add("@Date", 0, 0, ParameterDirection.Output) 

Vous ajoutez 0 de là où ils devraient être typeof DateTime.

EDIT

Public Function GetHolidayDate(ByVal struserID as String) AS DateTime 
    Dim con As New SqlConnection(yourSQLConnectionString) 
    Dim cmd As New SqlCommand 
    Dim date As DateTime  

    con.Open() 
    cmd.Connection = con 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "yourStoredProcedureName" 
    cmd.Parameters.Add("@userID", Me.Tag) 
    cmd.Parameters("@Date").Direction = ParameterDirection.Output 
    cmd.ExecuteScalar() 
    date = cmd.Parameters("@Date").Value 
    con.Close() 

    Return date 
End Function 
+0

désolé, je suis nouveau à this..so que dois-je mettre à la place du 0 de s'il vous plaît? –

+0

@Mo: Vous utilisez une classe Custom, donc j'ai besoin de connaître les paramètres d'entrée de cette classe. –

+0

@Ardman: ohh ok ... avez-vous une autre solution que je peux obtenir le résultat sans utiliser ma classe personnalisée s'il vous plaît? vous aidez est très apprécié. –

0

On dirait l'erreur que vous obtenez est une erreur SQL pas une erreur VB.Net. Essayez-vous de convertir un datetime en un int quelque part? Vous pouvez essayer d'exécuter la méthode ExecuteNonQuery() pour voir si vous obtenez la même erreur.

Vous pouvez également exécuter SQLProfiler et voir exactement ce que SQL est en cours d'exécution. Vous pouvez ensuite essayer d'exécuter ce SQL est SQL Server Management Studio

0

Vous ajoutez deux paramètres - mais vous avez dit qu'il devrait retourner le plus tard?

Il doit être

date DateTime = cmd.ExecuteScalar() 
REM date = cmd.Parameters("@Date").Value 
con.Close() 
Questions connexes