toidjtjmtoi > 19-10-17, 03:28 PM
tranthanhan1962 > 19-10-17, 04:54 PM
toidjtjmtoi > 20-10-17, 03:07 PM
(19-10-17, 04:54 PM)tranthanhan1962 Đã viết: Bạn có 2 event để xử lý việc soluongnknvl > Text19
1/ Event trên sub from
Private Sub soluongnknvl_AfterUpdate()
If (soluongnknvl.Value > Text19.Value) Then text19 ở subfrom
DoCmd.RunMacro "mcthongbao.quasoluong"
Me.lotnumber.Locked = True Me.lotnumber ở subfrom
End If
End Sub
Bỏ lệnh soluongnknvl.SetFocus ra khỏi event này. Bạn xem sau khi gõ xong giá trị con trỏ nhảy qua control nào (ví dụ text19). Bạn viết thêm 1 event vào text19
Private Sub text19_Enter()
If (soluongnknvl.Value > Text19.Value) Then
DoCmd.GoToControl "soluongnknvl"
End If
End Sub
1/ Event trên main from Giả sử nút lệnh trên form A tên N và B1 là tên control subform chứa form B (phòng ngừa bạn đặt tên subform khác tên form)
Private Sub N_Click()
If [B1].[Form]![soluongnknvl] > [B1].[Form]![Text19] Then
DoCmd.RunMacro "mcthongbao.quasoluong"
Me.B1.SetFocus
Me.B1.Form.soluongnknvl.SetFocus
End If
End Sub
tranthanhan1962 > 21-10-17, 02:15 AM
toidjtjmtoi > 21-10-17, 12:48 PM
tranthanhan1962 > 22-10-17, 07:30 AM
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As LongPtr) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
toidjtjmtoi > 23-10-17, 10:20 AM
(22-10-17, 07:30 AM)tranthanhan1962 Đã viết: 1/File của bạn khác với các điều bạn hỏi nên mình có sửa lại đôi chút. Hai form donhang và nhapkho bạn thiết kế datasheet nên tôi phải chuyển lại sigle form và continuous.
2/Không cần phải thiết kế nút kiểm tra trên mainform chỉ cần xử lý trực tiếp trên control soluongnhapkho của sub form là đủ. Do soluongnhapkho là control cuối nên nó sẽ nhảy xuống record mới phải trả về last record rồi mới chuyển focus trở lại nó. (Lệnh focus sẽ không thực hiện trên control đang được focus)
3/Vì tôi làm trên access 64 bit nên module msgboxtiengviet sẽ bị lỗi nếu bạn sử dụng access 32 bit. Vì vậy nếu bạn sử dụng access 32 bit bạn đổi đoan mã:
thànhMã:Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As LongPtr) As Long
cho phù hợpMã:Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Đã xử lý