Não use concatenação de strings para construir suas consultas sql, NUNCA!
Você está aberto para injeção de sql, não há desculpa para isso. Em vez disso, use parâmetros 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)
Agora saia deste método com uma mensagem significativa se o usuário não fornecer datas válidas. Você pode verificar
validFromDate
e validToDate
que são booleanos. O resto do código é executado 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
Acabei de ver você usar
varchar
para armazenar datetimes
. Por quê? Corrija-o no banco de dados.