-
RE: Tạo bẫy cảnh báo Write Conflict
ongke0711 > 16-09-19, 03:35 PM
(16-09-19, 03:16 PM)Minh Tiên Đã viết: Hiện mình chỉ giám sát thông qua trạng thái Checkbox=true ở cột tương ứng để thông báo đang sửa.
Tuy nhiên cách này vẫn chưa tối ưu vì có thế có Checkbox đang = true những Record Editing không trùng với Record ghi vào Danh sách hàng hóa => Vẫn bị báo đang sửa.
Thân./.
Bởi vậy tôi mới nói là dùng sự kiện On Change (hoặc On GotFocus) ngay trên textbox nhập liệu (áp dụng cho tất cả textbox dùng nhập liệu trên subF) . Khi người dùng click chuột vào hoặc gõ ký tự gì đó vào textbox tức là đã vào chế độ Edit (có hình cây bút chì) thì nó sẽ kích hoạt On Change và gán Locked = True cho mỗi record đó thôi và vẫn nhập liệu bình thường. Cứ mỗi khi con trỏ nhày vào textbox nào và gõ dang dở ký tự sẽ gán trị True cho Locked field. Form thứ 2 mở lên (khi Form 1 chưa thoát trạng thái Edit) sẽ check cái field Locked này và xử lý thôi. -
RE: Tạo bẫy cảnh báo Write Conflict
Minh Tiên > 16-09-19, 04:19 PM
Thanks ongke0711.
On GotFocus, OnClick: Vẫn chưa ổn vì có thể Focus nhưng chưa chuyển sang trạng thái Editing => Vẫn ko xung đột.
OnChange: Chỉ kích hoạt khi có thay đổi, nhưng khi có thay đổi gán True rồi thì làm sao để chuyển lại False khi đã hoàn tất việc sửa. (GostFocus, Enter, AfterUpdate, ... nếu chưa chuyển xuống record khác (Dòng khác) vẫn hiển thị trạng thái Editing)
ongke0711 giúp chỉ rõ hơn.
Thanks ! -
RE: Tạo bẫy cảnh báo Write Conflict
ongke0711 > 17-09-19, 02:44 AM
(16-09-19, 04:19 PM)Minh Tiên Đã viết: On GotFocus, OnClick: Vẫn chưa ổn vì có thể Focus nhưng chưa chuyển sang trạng thái Editing => Vẫn ko xung đột.
OnChange: Chỉ kích hoạt khi có thay đổi, nhưng khi có thay đổi gán True rồi thì làm sao để chuyển lại False khi đã hoàn tất việc sửa. (GostFocus, Enter, AfterUpdate, ... nếu chưa chuyển xuống record khác (Dòng khác) vẫn hiển thị trạng thái Editing)
Sự kiện OnGotFocus sẽ chuyển sang trạng thái Editing nếu bạn viết code gán biến với trị gì đó trong sự kiện này là tự động nó kích hoạt Editting.
Nhưng bây giờ mình không đi theo cách này mà đơn giản hơn chút với sự kiện OnChange và OnLostFocus.
- Khi gõ ký tự, OnChange được kích hoạt sẽ gán biến toàn cục (trạng thái).
- Khi nhảy sang textbox khác cùng dòng, OnLostFocus sẽ thoát trạng thái Edit bằng thuộc tính Dirty của Form.
If Me.Dirty Then Me.Dirty = False
- Khi mở Form 2 sẽ kiểm tra biến toàn cục này và xử lý.
Bạn xem có đúng yêu cầu chưa.
Link demo: http://www.mediafire.com/file/1pveb7kfot...accdb/file -
RE: Tạo bẫy cảnh báo Write Conflict
Minh Tiên > 17-09-19, 09:23 AM
Thanks ongke0711 nhiều.
Mình dùng kết hợp:
1. Tạo thêm txtMahangX, txtTenfieldX và txtTrangthaiSua
2. OnGotFocus: Để lấy thông tin Mã hàng, Tên field đang điều chỉnh
3. OnChange: Để thay đổi trạng thái txtTrangthaiSua=True
4. OnLostFocus: Để thay đổi trạng thái txtTrangthaiSua=False
Như vậy chỉ cần kiểm soát txtTrangthaiSua=True là biết Field nào của Mã hàng nào đang sửa
Cảm ơn cả nhà đã quan tâm giúp Tiên. Chúc cả nhà luôn khỏe.
Thân./.