Vemos essas perguntas aqui todos os dias. Eles decorrem do mesmo problema.
NUNCA USE CONCATENAÇÃO DE STRING PARA CONSTRUIR CONSULTAS SQL.
É um grande problema. Claro que você já conheceu o primeiro efeito. Como converter strings de maneira aceitável para o tipo de dados efetivo? Você precisa resolver problemas de análise com aspas incorporadas, representação correta de datas e números decimais para o sistema de banco de dados subjacente. Mas o segundo e mais sutil efeito colateral da concatenação de strings é SQL Injection (Este é apenas um link instrutivo porque SQL Injection é um tópico muito grande)
Para resolver esse tipo de problema a única maneira aceita é usar PARÂMETROS.
Isso significa que é o mecanismo de banco de dados que resolve de maneira eficiente a questão, você precisa de uma string com placeholders de parâmetro (o @something) e um coleção de parâmetros com o tipo de dados exato para o valor do parâmetro.
Portanto, seu código deve mudar dessa maneira
Dim strSQL As String = "SELECT EMP_ID,EMP_NAME,AT_STATUS,AT_REMARK " +
"FROM ATTENDANCE WHERE AT_DATE = @editdate " +
"ORDER BY EMP_NAME ASC"
Using con = new SqlConnection("constring_here")
con.Open()
Using cmd = new SqlCommand(strSQL, con)
cmd.Parameters.AddWithValue("@editdate", DTPEDITAT.Value)
' do whatever you want with the command '
' like ExecuteReader or use a DataAdapter to fill datasets'
End Using
End Using