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.