Te pytania widzimy tutaj każdego dnia. Wynikają z tego samego problemu.
NIGDY NIE UŻYWAJ ŁĄCZENIA ŁAŃCUCHÓW DO BUDOWANIA ZAPYTAŃ SQL.
To duży problem. Oczywiście spotkałeś się już z pierwszym efektem. Jak przekonwertować ciągi w akceptowalny sposób na efektywny typ danych? Musisz rozwiązać problemy parsowania z osadzonymi cudzysłowami, poprawną reprezentacją dat i liczb dziesiętnych dla bazowego systemu bazy danych. Ale drugim i bardziej subtelnym efektem ubocznym łączenia ciągów jest wstrzyknięcie SQL (To tylko pouczający link, ponieważ SQL Injection to bardzo obszerny temat)
Aby rozwiązać tego rodzaju problemy, jedynym akceptowanym sposobem jest użycie PARAMETRÓW.
Oznacza to, że to silnik bazy danych rozwiązuje pytanie w efektywny sposób, potrzebujesz ciągu znaków z symbolami zastępczymi parametrów (@coś) i zbiór parametrów z dokładnym typem danych dla wartości parametru.
Więc twój kod powinien się zmienić w ten sposób
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