-
Câu lệnh kiểm tra các giá trị tại Form không được trống
Đình Phán > 10-06-22, 09:45 AM
Chào các anh,
Em có vấn đề này mong các anh giúp.
1. Em muốn viết 1 đoạn VBA để kiểm tra các textbox trong form Header đã được nhập hay chưa. Nếu chưa nhập thì thoát Thủ tục
2. Chạy 1 thủ tục khác, để nhập số liệu vào sub form , lấy giá trị đang có tại 1 textbox của form Header để gán vào sub form
Em cảm ơn.
Private Sub Command57_Click()
If [Forms]![fmTraHeader]![Ma_Phieu_Tra].Value = "" Then
MsgBox "Ban chua nhap Ma Phieu Tra", vbOKOnly, "Thong bao"
Exit Sub
Else
DoCmd.OpenForm "fmTTPhieuMuon1", acViewNormal
End If
End Sub -
RE: Câu lệnh kiểm tra các giá trị tại Form không được trống
AnNguyen > 10-06-22, 11:37 AM
(10-06-22, 09:45 AM)Đình Phán Đã viết: Chào các anh,
Em có vấn đề này mong các anh giúp.
1. Em muốn viết 1 đoạn VBA để kiểm tra các textbox trong form Header đã được nhập hay chưa. Nếu chưa nhập thì thoát Thủ tục
2. Chạy 1 thủ tục khác, để nhập số liệu vào sub form , lấy giá trị đang có tại 1 textbox của form Header để gán vào sub form
Em cảm ơn.
Private Sub Command57_Click()
If [Forms]![fmTraHeader]![Ma_Phieu_Tra].Value = "" Then
MsgBox "Ban chua nhap Ma Phieu Tra", vbOKOnly, "Thong bao"
Exit Sub
Else
DoCmd.OpenForm "fmTTPhieuMuon1", acViewNormal
End If
End Sub
Mình thường làm theo cách là đặt tên Tag cho textbox để xác định giá trị có phải kiểm tra hay không. Và Controltooltip để làm tên hiển thị
Sau đó sử dụng vòng lặp để check hết textbox trong form xem được nhập chưa.
Mã:Function Check_Input(frm As Form, Tag_Name As String) As Boolean
On Error Resume Next ' neu loi thi van chay va tra ve thong bao
Dim t As Control
For Each t In frm.Controls
If t.ControlType = acTextBox Then
If (t.Tag = Tag_Name) Then ' gia tri truyen vao
If IsNull(t) Or t = "" Then
MsgBox t.ControlTipText & " ddang bor troosng"
t.SetFocus
Check_Input = True
Exit For
End If
End If
End If
Next t
End Function -
RE: Câu lệnh kiểm tra các giá trị tại Form không được trống
Đình Phán > 10-06-22, 12:30 PM
(10-06-22, 11:37 AM)AnNguyen Đã viết: Mình thường làm theo cách là đặt tên Tag cho textbox để xác định giá trị có phải kiểm tra hay không. Và Controltooltip để làm tên hiển thị
Sau đó sử dụng vòng lặp để check hết textbox trong form xem được nhập chưa.
Mã:Function Check_Input(frm As Form, Tag_Name As String) As Boolean
On Error Resume Next ' neu loi thi van chay va tra ve thong bao
Dim t As Control
For Each t In frm.Controls
If t.ControlType = acTextBox Then
If (t.Tag = Tag_Name) Then ' gia tri truyen vao
If IsNull(t) Or t = "" Then
MsgBox t.ControlTipText & " ddang bor troosng"
t.SetFocus
Check_Input = True
Exit For
End If
End If
End If
Next t
End Function
Cảm ơn anh AnNguyen,
Trong trường hợp em không muốn duyệt qua tất cả các textbox của form, do một số textbox không phải là bắt buộc.
Em có sửa lại như vậy
Function Check_Input(frm As Form, Tag_Name As String) As Boolean
On Error Resume Next ' neu loi thi van chay va tra ve thong bao
Dim txt As Control
If (txt.Tag = Tag_Name) Then ' gia tri truyen vao
If IsNull(txt) Or txt = "" Then
MsgBox txt.ControlTipText & "ban chua nhap du lieu", , "Thong bao"
txt.SetFocus
Check_Input = True
End If
End If
End Function
Đồng thời khi gọi Hàm ra thì bị báo lỗi
Private Sub Command57_Click()
If Check_Input(Me, Ma_Phieu_Tra) = True And Check_Input(Me, Ngay_Tra) = True And Check_Input(Me, Nguoi_Tra) = True And Check_Input(Me, Don_Vi) = True And Check_Input(Me, Thu_Kho) = True Then
Exit Sub
Else
DoCmd.OpenForm "fmTTPhieuMuon1", acViewNormal
End If
End Sub
Anh xem giúp em với