longkd_bvct@yahoo.com.vn > 26-08-19, 12:10 AM
longkd_bvct@yahoo.com.vn > 26-08-19, 11:47 AM
ongke0711 > 26-08-19, 12:24 PM
(26-08-19, 12:10 AM)longkd_bvct@yahoo.com.vn Đã viết: Chào mọi người ạ.
Hiện tại em đang tạo 1 form có các nút thêm, xóa, bỏ qua,lưu, đóng. Nhưng khi vào form thì khi click vào record thì nó bị chỉnh sửa.
Giờ em muốn khóa record lại và thêm nút chỉnh sửa vô. Khi nào click vào thì mới chỉnh sửa được và lưu lại ạ.em gửi demo mọi người giúp em với ạ.em cám ơn nhiều
https://drive.google.com/file/d/1vqzwQr9...sp=sharing
longkd_bvct@yahoo.com.vn > 26-08-19, 04:53 PM
(26-08-19, 12:24 PM)ongke0711 Đã viết:cám ơn anh. em đã làm được.(26-08-19, 12:10 AM)longkd_bvct@yahoo.com.vn Đã viết: Chào mọi người ạ.
Hiện tại em đang tạo 1 form có các nút thêm, xóa, bỏ qua,lưu, đóng. Nhưng khi vào form thì khi click vào record thì nó bị chỉnh sửa.
Giờ em muốn khóa record lại và thêm nút chỉnh sửa vô. Khi nào click vào thì mới chỉnh sửa được và lưu lại ạ.em gửi demo mọi người giúp em với ạ.em cám ơn nhiều
https://drive.google.com/file/d/1vqzwQr9...sp=sharing
Cách làm đơn giản nhất là dùng thuộc tính "Locked" trong Form properties - Data.
- Bạn chọn tất cả các Textbox nào mà không muốn người dùng click vô Sửa được, xong thiết lập Lock = Yes.
- Nút [Sửa] thì sẽ unlock các textbox đó. Nút [Lưu] thì Lock các textbox đó lại
Vd:
Private cmdSua_Click()
txtMacsyt.Locked = False
txttencsyt.Locked = False
....
End Sub
Sau này bạn quen thuộc Access rồi thì đổi qua dùng Unbound Form. Các textbox không ràng buộc Control Source vào field nào cả. Khi cần thì load dữ liệu lên Textbox, sửa rồi khi bấm lưu mới dùng câu lênh SQL "Insert Into...", "Update...Set..." để cập nhật dữ liệu vào Table. Khi đó người dùng muốn sửa gì trên textbox cũng được, hoặc lỡ tay bấm xoá nội dung trong đó cũng không sao vì chưa bấm Lưu, dữ liệu gốc trong Table chưa bị cập nhật (như Bound Form bạn đang dùng).
ongke0711 > 27-08-19, 12:41 AM
(26-08-19, 04:53 PM)longkd_bvct@yahoo.com.vn Đã viết: cám ơn anh. em đã làm được.
giờ nó lại phát sinh thêm lỗi khi em bấm chỉnh sửa và không chỉnh sửa gì. Khi bấm lưu thì nó thông báo trùng mã csyt ạ.
longkd_bvct@yahoo.com.vn > 28-08-19, 10:22 AM
(27-08-19, 12:41 AM)ongke0711 Đã viết:HIc..em làm tới làm lui mà vẫn không dc anh ạ. Nếu được anh code dùm em với ạ.(26-08-19, 04:53 PM)longkd_bvct@yahoo.com.vn Đã viết: cám ơn anh. em đã làm được.
giờ nó lại phát sinh thêm lỗi khi em bấm chỉnh sửa và không chỉnh sửa gì. Khi bấm lưu thì nó thông báo trùng mã csyt ạ.
Lỗi này phát sinh là do cái qui trình xử lý nút [Lưu] của bạn chưa hợp lý.
Nút Lưu dùng cho cả 2 trường hợp là: [Thêm mới] và [Sửa]. Do vậy khi bấm Lưu, code phải nhận dạng trường hợp nào là Thêm mới, trường hợp nào là Sửa.
- Thêm mới: thì mới kiểmm tra có trùng mã hay không
- Sửa: thì cứ thế mà lưu, không cần kiểm tra trùng mã.
Hiện tại nút lưu của bạn kiểm tra trùng toàn bộ.
Cách làm:
- Tạo 1 biến boolean lưu trạng thái [Thêm mới], tầm vực là Public toàn bộ Form module (vd: blnThem). Khi bấm nút Thêm mới sẽ Set blnThem = True.
- Code nút lưu sẽ kiểm tra biến blnThem rồi xử lý tuỳ theo trường hợp.
Vd:
Private cmdLuu_Click()
Select case blnThem
Case True '->Thêm moi
Kiểm tra tính hợp lệ của dữ liệu
Kiểm tra trùng khoá chính
Case False ' ->Sửa
Kiểm tra tính hợp lệ của dữ liệu
....
End Select
DoCmd.RunCommand acCmdSaveRecord
End If
tranthanhan1962 > 28-08-19, 12:41 PM
longkd_bvct@yahoo.com.vn > 28-08-19, 04:26 PM
(28-08-19, 12:41 PM)tranthanhan1962 Đã viết: Allo, dân Cao Lãnh đây. Mới xem thử app của bạn. Nhận thấy thế này.Chào bạn. Mình ở châu Thành ak . Mình tự học nên còn gà lắm.Có gì bạn chỉ giúp
1/Form của bạn là form liên kết record sorce trực tiếp (form bound).
2/Access sẽ tự lưu nên không cần thiết kế nút Lưu.
2/Chỉnh sửa thoải mái khi mở form nên cũng không cần nút chỉnh sửa. (trường hợp khóa data đối với người sử dụng thì xử lý khi đăng nhập chứ không phải lúc mở form nhập liệu này
3/Nếu muốn xử lý để pro giống như các app viết bằng ngôn ngử khác thì:
a/Khi mở form, event Form_Open thì khóa form lại
Me.AllowAdditions = False
Me.AllowEdits = False
b/Tùy theo trường hợp bấm nút sửa hay hay xóa thì mở khóa Allow... để xử lý. sau khi bấm nút lưu thì thêm lệnh Me.Refresh và khóa lại (Bản chất tự lưu của form có sẵn nên nút này để cho vui và khóa phần thêm, sửa mà thôi)
c/ Không cần sử dụng lệnh Me.AllowDeletions = False vì fom cho phép xóa.
d/ Trường hợp kiểm tra trùng khóa chính thì sử dụng event Form_Error bắt lỗi 3022 (phần này đã có trên forrum, bạn tự tìm nhá)
Đơn giản chỉ có vậy.
ongke0711 > 28-08-19, 10:00 PM
longkd_bvct@yahoo.com.vn > 29-08-19, 12:16 AM
(28-08-19, 10:00 PM)ongke0711 Đã viết: File của bạn đây: http://www.mediafire.com/file/11tnoroh3c...accdb/filecám ơn anh nhe