De juiste syntaxis voor het toevoegen van een NIEUW record aan uw tabel zou moeten zijn:
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
En natuurlijk moet elke opdracht worden uitgevoerd, anders zijn het gewoon nutteloze regels code.
Je mist deze regel na het maken van de parameters.
SQLcmd.ExecuteNonQuery()
Van uw afbeelding is het niet mogelijk om zeker te zijn, maar als de idpresence een AUTOINCREMENT-veld is, moet u niet proberen de waarde ervan in te stellen met uw opdracht en parameter, maar de database het voor u laten doen. (Er kunnen problemen met dubbele sleutels optreden als meer dan één gebruiker tegelijkertijd records invoegt)
Als laatste ding is het type van uw parameters niet gespecificeerd, zodat ze niet overeenkomen met het onderliggende gegevenstabelschema. U kunt AddWithValue gebruiken en de ingevoerde tekstvakwaarden converteren naar het juiste databasetype
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))