Bonjour,
J'ai ceci :
dim SQLType as SQLDbType
dim s as string = "01/01/2007"
Dim cmdSQL As SqlCommand = New SqlCommand
cmdSql.CommandText = "Insert into tbl1 (Field1) VALUES (@Param1)"
cmdSQL.Parameters.Add("@Param1", SqlType)
cmdSQL.Parameters("@Param1").Value =s
Cela devrait marcher si @Param1 remplace bien un champ date.
Maintenant j'aurai pu aussi mettre "dim s as String = 5" et ca devrait marcher si @Param1 remplissait un champ Integer.
Malgré tout, cela ne va pas car "s" est un string et qu'on ne peut directement convertir un String en Date ou en Integer.
VOus me direz suffit de faire des CDate ou des CInt, mais dans mon exemple on est pas sensé savoir ce qu'était le type que "s" devait remplacer. S est une variable et j'ai mis 01/01/2007 pour l'exemple ici.
En supposant que j'ai créé une fonction qui va rechercher le type de champ de ma table pour remplir "SQLType".
SQLType=FindType("Field1")
J'aurai SQLType = 4 (type date) ou SQLType = 8 (type integer)
La ligne "cmdSQL.Parameters.Add("@Param1", SqlType)" marchera impec
Mais que dois-je mettre à la place de "cmdSQL.Parameters("@Param1").Value =s" ???
cmdSQL.Parameters("@Param1").Value =ctype(s, SQLType) ne va pas car SQLType n'est pas ... un type.