Använd inte strängsammansättning för att bygga dina sql-frågor, ALDRIG!
Du är öppen för sql-injektion, det finns ingen ursäkt för det. Använd istället sql-parametrar:
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)
Avsluta nu den här metoden med ett meningsfullt meddelande om användaren inte angav giltiga datum. Du kan kontrollera validFromDate
och validToDate
som är booleaner. Resten av koden exekveras 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
Jag såg precis att du använder varchar
för att lagra datetimes
. Varför? Fixa det i databasen.