Vediamo queste domande qui ogni giorno. Nascono dallo stesso problema.
NON UTILIZZARE MAI LA CONCATENAZIONE DI STRINGE PER COSTRUIRE QUERY SQL.
È un grosso problema. Ovviamente hai già incontrato il primo effetto. Come convertire le stringhe in modo accettabile nel tipo di dati effettivo? È necessario risolvere i problemi di analisi con le virgolette incorporate, la corretta rappresentazione di date e numeri decimali per il sistema di database sottostante. Ma il secondo e più sottile effetto collaterale della concatenazione di stringhe è SQL Injection (Questo è solo un collegamento istruttivo perché SQL Injection è un argomento molto ampio)
Per risolvere questo tipo di problemi l'unico modo accettato è usare PARAMETERS.
Ciò significa che è il motore di database che risolve in modo efficiente la domanda, è necessaria una stringa con i segnaposto dei parametri (il @qualcosa) e un raccolta di parametri con il tipo di dati esatto per il valore del parametro.
Quindi il tuo codice dovrebbe cambiare in questo modo
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