Правилният синтаксис за добавяне на НОВ запис към вашата таблица трябва да бъде
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
И, разбира се, всяка команда трябва да бъде изпълнена, в противен случай това са само безполезни редове код.
Липсва ви този ред след създаването на параметрите.
SQLcmd.ExecuteNonQuery()
От вашето изображение не е възможно да сте сигурни, но ако idpresence е поле AUTOINCREMENT, тогава не трябва да се опитвате да зададете стойността му с вашата команда и параметър, а оставете базата данни да го направи вместо вас. (Могат да възникнат проблеми с дублиращи се ключове, ако повече от един потребител вмъкне записи едновременно)
Като последно нещо, типът на вашите параметри не е посочен, така че те не съответстват на основната схема на таблица с данни. Можете да използвате AddWithValue и да конвертирате стойностите на текстовото поле за въвеждане в правилния тип база данни
SQLcmd.Parameters.AddWithValue("@Id_presence", Convert.ToInt32(TextBox1.Text))
SQLcmd.Parameters.AddWithValue("@Id", Convert.ToInt32(TextBox2.Text))
SQLcmd.Parameters.AddWithValue("@Hours", Convert.ToInt32(TextBox3.Text))
SQLcmd.Parameters.AddWithValue("@Date", Convert.ToDateTime(TextBox4.Text))