N'utilisez pas la concaténation de chaînes pour créer vos requêtes sql, JAMAIS !
Vous êtes ouvert à l'injection sql, il n'y a aucune excuse pour cela. Utilisez plutôt les paramètres sql :
Dim dateFrom as Date
Dim dateTo as Date
Dim validFromDate = Date.TryParse(Txtfromyear_reprt.Text.Trim(), dateFrom)
Dim validToDate = Date.TryParse(Txttoyear_reprt.Text.Trim(), dateTo)
Maintenant, quittez cette méthode avec un message significatif si l'utilisateur n'a pas fourni de dates valides. Vous pouvez vérifier validFromDate
et validToDate
qui sont des booléens. Le reste du code est exécuté If validFromDate AndAlso validToDate
:
Dim str As String = "select * from MYTABLE where Year >= @fromyear and Year <= @toyear"
da = New SqlDataAdapter(str, conn)
da.SelectCommand.Parameters.Add("@fromyear", SqlDbType.DateTime).Value = dateFrom
da.SelectCommand.Parameters.Add("@toyear", SqlDbType.DateTime).Value = dateTo
' now you can use da.Fill(ds, "MYTABLE") safely
Je viens de voir que vous utilisez varchar
pour stocker datetimes
. Pourquoi? Corrigez-le dans la base de données.