Có mấy điểm trong thiết kế form nhập liệu, em chú ý:
- Nếu sử dụng Unbound form để cập nhật dữ liệu thì tất cả là Unbound textbox.
- Nên khai báo DAO.Database, và DAO.Recorset để sau này khi split database (chia ra file .mdb lưu dữ liệu riêng, file mdb chương trình chạy riêng) dùng linked table vẫn chạy được.
Chỉnh sửa code chút xíu
Private Sub cmdThem_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("TTBH", dbOpenDynaset)
rs.AddNew
rs(1) = NGAYTIEPNHANTT
rs(2) = SANPHAM
rs(3) = IMEI
rs(4) = LOI
rs(5) = KETQUABH
rs.Update
MsgBox "Cap nhat thanh cong so phieu: " & Me.txtSoPhieuBH, vbInformation, "Thông báo"
End Sub
-----------------------------------------------
Private Sub Form_Current()
'Khi form load sẽ cập nhật số phiếu kế tiếp
Me.txtSoPhieuBH = DMax("SOPHIEUBH", "TTBH") + 1
End Sub
Em đã làm theo hướng dẫn của anh và đã cho kết quả đúng khi cùng 1 thời điểm chỉ có 1 người nhập liệu vào database.
Nếu cùng 1 thời điểm có 2 người trở lên cùng mở form nhập nhiệu thì form sẽ hiển thị cùng 1 số phiếu, khi cập nhật thành công cũng sẽ báo cùng 1 số phiếu.
Thực tế khi mở bảng thì ai bấm cập nhật trước sẽ đúng số phiếu thông báo, ai bấm sau thì số phiếu đúng là số phiếu thông báo +1.
Hướng dẫn của anh là cho hiển thị trước số phiếu kế tiếp của số mới nhất trong bảng.
Em nghĩ mình cần phải lấy dữ liệu số phiếu sau khi đã cập nhật thành công vào bảng để hiển thị thông báo thì mới giải quyết được vấn đề khi có nhiều người nhập dữ liệu cùng 1 thời điểm.
Nhưng lại không biết code như thế nào cho đúng.
Nếu anh có giải pháp nào tối ưu hơn thì tư vấn thêm cho em nhé.
Cám ơn anh đã nhiệt tình giúp đỡ!