viet_team

New Member
Trích: Tuy nhiên khi vừa hiện đủ 3 dấu tick mình cũng bất thể đổi được password vì khi test thử thì đoạn ngựa 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 Mật ngựa là chuỗi thì khi nối chuỗi, phải biến hóa sao cho kết quả trả về phải có dạng gán chuỗi. Sau dấu bằng, ngay trước dấu ", cho thêm một dấu '(nháy đơn), và sau dấu " thứ 2, cũng thế. Tương tự ở chỗ ngựa người dùng nữa.

Trích: Trong code VBA mình vừa viết để người dùng bắt buộc phải nhập mật (an ninh) mã hiện tại trước rồi mới đến mật (an ninh) mã mới và cuối cùng là nhập lại mật (an ninh) mã mới. Tuy nhiên khi test thử thì thấy bất có tác dụng. Người dùng vẫn có thể nhập cái gì trước cũng được, bất 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 (an ninh) mã).
(mình bất hiểu sao mấy cái SetFocus bất 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 (an ninh) mã ở txtMatMaHienTai. Tuy nhiên mình bất 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 bất được mà lại bị lỗi focus sai tùm lum. Muốn bắt control ngay khi nó rời focus, nếu nó error hay bất thỏa điều kiện thì bất cho ra, bạn bất nên bẫy LostFocus mà phải bẫy Exit. LostFocus sẽ xảy ra sau khi focus thật sự rời khỏi control. Rời khỏi rồi lấy gì trở lại. Exit thì xảy ra khi vừa "chớm chớm" ra khỏi control mà thôi, do vậy có thể gán Cancel = True để hủy sự kiện. Như vậy bất thể ra khỏi control nếu chưa thỏa điều kiện.

Trích: 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 (an ninh) mã. Mình bất biết làm thế nào để msgbox này bất 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 (an ninh) mã). Theo cơ chế của Access, khi nhắp vào nút Close trên Caption thì xem như bạn vừa LostFocus current control, thế nên nó vẫn bắt.

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 hay 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 hay 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.
 

Christy

New Member
Vì đường link ở trên của bạn có lỗi nên bất lấy về thử được. Bạn xem lại đường link.
Do bất 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 (gian) là được phép.
Vì control hiện thời (gian) ví dụ là txtMatMaHienTai bất cho phép thoát khỏi nó khi chưa gõ mật (an ninh) mã hiện tại thì máy sẽ bất thể thực hiện SetFocus cho control khác được.
Bạn kiểm tra lại trong OnLostFocus hay OnExit hay OnChange xem điều kiện nào khiến nó bất thoát ra khỏi textbox hiện thời (gian) được.
 

Các chủ đề có liên quan khác

Top