-
09-15-2009, 08:04 AM #1Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Xin giúp về edit data trong form unbound
Chào mọi người,
Lần này lại phải nhờ mọi người giúp đỡ nữa rồi. Hơn nữa mình lại cần gấp vì đây là phần cuối cùng mình làm cho 1 chương trình viết bằng Access.
Link download file ở đây:
http://www.mediafire.com/file/gmg2mznnlht/password.mdb
File này mình gặp khó khăn về đổi password.
File có 3 table:
tblUser chứa thông tin về tất cả người sử dụng chương trình như mã người dùng, tên người dùng, mật mã, quyền sử dụng và ngày đổi password.
tblCurrentUser ghi nhận mã người dùng đã đăng nhập trong phiên hiện tại.
tblMsgBoxUnicode để mã hóa unicode tiếng Việt cho các msgbox.
Có 2 query:
QryCurrentUser để lấy thông tin về người dùng đã đăng nhập trong phiên hiện tại.
QryDeleteCurrentUser để xóa mã người dùng trong tblCurrentUser (và sau đó dùng lệnh VBA để insert mã người dùng hiện tại vào tblCurrentUser)
Có 3 form:
Đầu tiên mở frmLogon lên để nhập tên người dùng và mật mã. Form này không có vấn đề gì.
Sau đó khi click nút Đăng nhập chương trình sẽ đóng frmLogon và mở frmChangePassword nếu password đã sau 4 tuần chưa được đổi, hoặc mở frmSplashUser nếu chưa đến thời hạn 4 tuần.
frmSplashUser chỉ dùng để minh họa chứ không có tác dụng gì cả.
Vấn đề mình gặp phải là không đổi được password bằng frmChangePassword.
Trong form này, người dùng sẽ phải nhập password hiện tại, sau đó nhập password mới và nhập lại lần nữa để kiểm tra.
Nếu nhập đúng password hiện tại, password mới không trùng password hiện tại và nhập lại đúng password mới thì sẽ hiện 3 dấu tick. Khi đó click nút Lưu thì password hiện tại sẽ được thay thế bằng password mới (trong txtMatMaMoi). Còn nếu hiện không đủ 3 dấu tick thì click nút Lưu cũng không đổi password được.
Tuy nhiên khi đã hiện đủ 3 dấu tick mình cũng không thể đổi được password vì khi test thử thì đoạn mã này bị báo lỗi:
Dim db As DAO.Database, SQL As String, rCount As Integer
Set db = CurrentDb()
SQL = "UPDATE tblUser SET MatMa = " & txtMatMaMoi.Text & " WHERE MaNguoiDung = " & NguoiDungHienTai.Text & ""
db.Execute SQL, dbFailOnError
rCount = db.RecordsAffected
'Kiem tra xem mat ma da duoc doi chua
If rCount > 0 Then
MsgBox "Doi mat ma thanh cong"
End If
Ngoài lỗi này là nghiêm trọng nhất thì còn những lỗi khác nữa:
Trong code VBA mình đã viết để người dùng bắt buộc phải nhập mật mã hiện tại trước rồi mới đến mật mã mới và cuối cùng là nhập lại mật mã mới. Tuy nhiên khi test thử thì thấy không có tác dụng. Người dùng vẫn có thể nhập cái gì trước cũng được, không bị ép theo thứ tự (chỉ có điều phải click OK cho mấy cái thông báo Chưa nhập mật mã).
(mình không hiểu sao mấy cái SetFocus không có tác dụng ép người dùng trở lại textbox vừa lost focus. Ví dụ lúc đầu đang focus ở txtMatMaHienTai nhưng mình click vào txtNhapLai thì có báo lỗi chưa nhập mật mã ở txtMatMaHienTai. Tuy nhiên mình không bị đưa về txtMatMaHienTai mà vẫn ở txtNhapLai.)
Thứ hai là khi người dùng nhập cái gì trước cũng được thì sau một hồi khi focus vào 1 textbox nào đó nhiều khi lại không được mà lại bị lỗi focus sai tùm lum.
Cuối cùng là nếu người dùng muốn thoát khỏi form bằng nút X trên caption của form thì sẽ có báo lỗi Chưa nhập mật mã. Mình không biết làm thế nào để msgbox này không hiện ra nếu người ta muốn thoát (mà vẫn đảm bảo lúc đổi password khi textbox nào đó trống thì vẫn có thông báo Chưa nhập mật mã).
Mong các bạn có thể giúp mình sớm, vì mình đang rất cần. Sắp đến hạn chót rồi.View more random threads:
- Các anh chị giúp em tạo textbox tìm kiếm trong form trên access giống như tìm kiếm trong google
- Chương trình lập bảng kê bán lẻ hàng hóa để viết hóa đơn
- Phần mềm kế toán
- Phần mềm bán hàng đơn giản
- Phần mềm Quản lý công tơ điện
- mình cần tạo phiếu thu và thực hiện in ra luôn
- Cần giúp đỡ về phần mềm quản lý thông tin khách hàng
- Liên kết đến file mdb có pass
- Cần cao thủ phần access giúp.
- Xin phần mềm xuất - nhập theo mẫu đính kèm
-
09-15-2009, 03:39 PM #2Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Ðề: Xin giúp về edit data trong form unbound
Tuy nhiên khi đã hiện đủ 3 dấu tick mình cũng không thể đổi được password vì khi test thử thì đoạn mã này bị báo lỗi:
Dim db As DAO.Database, SQL As String, rCount As Integer
Set db = CurrentDb()
SQL = "UPDATE tblUser SET MatMa = " & txtMatMaMoi.Text & " WHERE MaNguoiDung = " & NguoiDungHienTai.Text & ""
db.Execute SQL, dbFailOnError
rCount = db.RecordsAffected
'Kiem tra xem mat ma da duoc doi chua
If rCount > 0 Then
MsgBox "Doi mat ma thanh cong"
End If
Trong code VBA mình đã viết để người dùng bắt buộc phải nhập mật mã hiện tại trước rồi mới đến mật mã mới và cuối cùng là nhập lại mật mã mới. Tuy nhiên khi test thử thì thấy không có tác dụng. Người dùng vẫn có thể nhập cái gì trước cũng được, không bị ép theo thứ tự (chỉ có điều phải click OK cho mấy cái thông báo Chưa nhập mật mã).
(mình không hiểu sao mấy cái SetFocus không có tác dụng ép người dùng trở lại textbox vừa lost focus. Ví dụ lúc đầu đang focus ở txtMatMaHienTai nhưng mình click vào txtNhapLai thì có báo lỗi chưa nhập mật mã ở txtMatMaHienTai. Tuy nhiên mình không bị đưa về txtMatMaHienTai mà vẫn ở txtNhapLai.)
Thứ hai là khi người dùng nhập cái gì trước cũng được thì sau một hồi khi focus vào 1 textbox nào đó nhiều khi lại không được mà lại bị lỗi focus sai tùm lum.
Cuối cùng là nếu người dùng muốn thoát khỏi form bằng nút X trên caption của form thì sẽ có báo lỗi Chưa nhập mật mã. Mình không biết làm thế nào để msgbox này không hiện ra nếu người ta muốn thoát (mà vẫn đảm bảo lúc đổi password khi textbox nào đó trống thì vẫn có thông báo Chưa nhập mật mã).
Theo kinh nghiệm và theo thông thường, chúng ta chỉ nên bắt điều kiện khi người sử dụng nhấn vào nút OK hoặc Close. Hạn chế bắt ngay control vì như vậy, thứ nhất làm cho người sử dụng bối rối, thứ hai làm cho họ bực mình.
Khi kiểm ở nút OK hoặc Close, chúng ta có thể SetFocus lại control mà chúng ta muốn người sử dụng nhập lại cho đúng. Cái này tốt hơn, dễ code hơn và dễ kiểm soát hơn.
-
09-15-2009, 04:12 PM #3Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Xin giúp về edit data trong form unbound
Vì đường link ở trên của bạn có lỗi nên không lấy về thử được. Bạn xem lại đường link.
Do không biết thông báo lỗi của đoạn Update nên cũng khó nói nó bị cái gì.
Set Focus sẽ thực hiện sau khi điều kiện để thoát khỏi control hiện thời là được phép.
Vì control hiện thời ví dụ là txtMatMaHienTai không cho phép thoát khỏi nó khi chưa gõ mật mã hiện tại thì máy sẽ không thể thực hiện SetFocus cho control khác được.
Bạn kiểm tra lại trong OnLostFocus hoặc OnExit hoặc OnChange xem điều kiện nào khiến nó không thoát ra khỏi textbox hiện thời được.
-
09-16-2009, 06:23 AM #4Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Xin giúp về edit data trong form unbound
@ muontennguoi: mình vừa kiểm tra lại thì link vẫn download được mà bạn. Mình up lên host khác để bạn download về xem giùm mình vì mình đã sửa như bạn phatnq2002 lẫn bỏ 2 cái .Text nhưng vẫn không đổi password được.
http://www.fileden.com/files/2008/9/12/2093719/password.rar
@ phatnq2002: Mình đã sửa lại như bạn chỉ nhưng nó lại báo lỗi khác: Data type mismatch in criteria expression.
-
09-16-2009, 07:05 AM #5Silver member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Ðề: Xin giúp về edit data trong form unbound
Gửi bởi vijnana
Thứ hai: bạn không để cặp dấu nháy đơn như bài trước tôi đã nói.
Thứ ba: Do mã người dùng, bạn dùng AutoNumber thì bạn đâu cần để trong dấu nháy chuỗi.
Biến SQL bạn gán lại như sau:
SQL = "UPDATE tblUser SET MatMa = '" & txtMatMaMoi.Value & "' WHERE MaNguoiDung = " & NguoiDungHienTai.Value
Tuy nhiên, cách bạn viết không ổn. Thứ nhất, bạn không kiểm việc password phân biệt hoa thường. Thứ hai, một lỗi cơ bản rất nghiêm trọng là form ChangePassword của bạn lại dùng RecordSource ???
Đây phải là form Unbound, lúc đó mới Db.Execute được mà không bị thông báo lỗi.
Bạn nên viết lại cái code cho form này đi.
-
09-18-2009, 01:50 AM #6Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Xin giúp về edit data trong form unbound
Thưa anh Phatnq2002. Em cũng đã làm Form đăng nhập, Đổi mật khẩu. Nhưng em hóc ở chỗ là phân biệt chưa HOA và chữ thường.
Tiện đây mong được anh Phatnq2002 cũng như mem khác hướng dẫn em giải quyết hóc búa đó.
Em xin cảm ơn!
-
07-21-2010, 05:06 PM #7Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Xin giúp về edit data trong form unbound
Gửi bởi tienduyet
Râu rồng – Thuật ngữ tiếng Anh là laugh line/smile line là nếp nhăn khoé miệng được hình thành theo thời gian và được nhìn thấy rõ nhất khi chúng ta cười. Râu rồng sẽ xuất hiện càng ngày càng rõ...
Râu rồng - Mối đe dọa nghiêm trọng với dung nhan của các cô