Cú pháp chính xác để thêm bản ghi MỚI vào bảng của bạn phải là
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
Và tất nhiên, mọi lệnh phải được thực thi nếu không nó chỉ là một dòng mã tiếng Mỹ.
Bạn thiếu dòng này sau khi tạo các tham số.
SQLcmd.ExecuteNonQuery()
Không thể chắc chắn từ hình ảnh của bạn, nhưng nếu idpresence là trường AUTOINCREMENT, thì bạn không nên cố gắng đặt giá trị của nó bằng lệnh và tham số của mình mà hãy để cơ sở dữ liệu làm việc đó cho bạn. (Các vấn đề về khóa trùng lặp có thể phát sinh nếu nhiều người dùng chèn các bản ghi cùng một lúc)
Cuối cùng, loại tham số của bạn không được chỉ định nên chúng không khớp với lược đồ cơ sở dữ liệu. Bạn có thể sử dụng AddWithValue và chuyển đổi các giá trị hộp văn bản đầu vào thành loại cơ sở dữ liệu chính xác
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))