Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Code điều khiển 1 mục trong subform
#1
Mình có 1 main form là A
Sub form là B
Mình muốn tạo 1 nút trên form main A nút A1 khi ấn nút đó thì nó chỉ khóa hoặc làm thay đổi giá trị 1 ô trong Sub form B thôi thì mình dùng hàm như thế nào
Ví dụ ô B1

Code của mình như này
Private Sub soluongnknvl_AfterUpdate()

    If (soluongnknvl.Value > Text19.Value) Then           text19 ở subfrom
        DoCmd.RunMacro "mcthongbao.quasoluong"
        Me.lotnumber.Locked = True                             Me.lotnumber  ở subfrom
        soluongnknvl.SetFocus
    End If
End Sub


Sau khi mình ấn ok ở thông báo thì nó ko setfocus vào ô mình cần và những cái lệnh bên dưới không có tác dụng
Mình đoán là do những nút kia là ở subform mà mình đang làm việc ở main from

Thanks
Chữ ký của toidjtjmtoi toidjtjmtoi,gia nhập Thủ Thuật Access từ 29-06 -16.
ღღღღღTài sản của toidjtjmtoi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
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
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn toidjtjmtoi , maidinhdan
#3
(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

Mình thử rồi , nó vẫn vượt qua được  008  ấn tab là nó nhảy sang ô khác với không focus vào ô mình cần + không khóa ô lotnumber vào
Chữ ký của toidjtjmtoi toidjtjmtoi,gia nhập Thủ Thuật Access từ 29-06 -16.
ღღღღღTài sản của toidjtjmtoi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
post csdl lên đi bạn
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn toidjtjmtoi
#5
https://www.mediafire.com/file/ygb1g1mdu...se15.accdb
File đây bạn ơi
Mình muốn là nếu nhập số lượng > số lượng đơn hàng thì không cho nhập
Thanks
Chữ ký của toidjtjmtoi toidjtjmtoi,gia nhập Thủ Thuật Access từ 29-06 -16.
ღღღღღTài sản của toidjtjmtoi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
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ã:
Mã:
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
thành
Mã:
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
cho phù hợp
Đã xử lý
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , toidjtjmtoi
#7
(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ã:
Mã:
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
thành
Mã:
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
cho phù hợp
Đã xử lý

Cảm ơn bạn mình làm được rồi , mình là chỉ khác là bắt điều kiện ở ngay subform , giờ mình mới biết bắt điều kiện ở main form big green mà ko hiểu sao lệnh của mình nó không chạy
Chữ ký của toidjtjmtoi toidjtjmtoi,gia nhập Thủ Thuật Access từ 29-06 -16.
ღღღღღTài sản của toidjtjmtoi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] chỉ dùm bôi đen text trong form textbox bo bin 5 137 5 Giờ trước
Bài mới nhất: bo bin
  [Hỏi] Nên dùng bảng tạm (TempTable) ngay trong file FE hay file .mdb tạm (TempTable.mdb) ongke0711 5 368 29-08-18, 09:18 PM
Bài mới nhất: ongke0711
  Hướng Dẫn Hỏi cách tạo code phục hồi dữ liệu trong table sau khi backup doandinhtam 31 1,410 29-08-18, 03:54 PM
Bài mới nhất: doandinhtam
  Hỏi về bắt lỗi trong accc thanlaem 21 4,400 07-08-18, 11:02 PM
Bài mới nhất: vdttuan
  [Help] Tạo thông báo sắp đến niên hạn trong access kaivn 11 1,159 24-04-18, 03:14 PM
Bài mới nhất: kaivn

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line