Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Giúp đở khai báo tên trường chỉ nhận giá trị là 3 chữ cái in hoa
#11
Cảm ơn bạn trunghieu đã bổ sung. Về sự kiện OnKeyPress mình đã giới thiệu tại đường link đầu tiên trong bài #7

Theo như đánh giá của Mod Noname thì cách của mình là tệ nhất?
Sao vậy nhỉ? 027
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#12
Chào các bạn!
Mình tiếp tục chỗ "một số vấn đề" còn bỏ dở trong bài viết trước (bài #9)

1-Vấn đề 1:
-Trước tiên mình giải thích lý do tại sao mình không dùng sự kiện On KeyPress
Nếu dùng On KeyPress ta không code đơn giản như hướng dẫn của MS hay bạn trunghieu được do vướng mắc về Tiếng Việt có dấu và các bộ gõ khác nhau mà sẽ phải code khá vất vả theo kiểu như sau:
Mã:
Select Case KeyAscii
        Case ... To .., ... to ...
             KeyAscii = 0
        Case 97 To 122
            KeyAscii = Asc(UCase(Chr(KeyAscii)))
        ..........
    End Select

Nhưng chỗ then chốt không nằm ở vấn đề trên mà là nếu người dùng không nhập trực tiếp từ bàn phím mà copy và paste thì sự kiện On KeyPress sẽ vô tác dụng

2-Vấn đề 2:
Do chủ top chỉ đưa ra dk 3 chữ cái in hoa, không đề cập đến có dấu TV hay không nên mình bỏ qua dk này
Nếu thêm Dk không dấu TV vào thì làm như sau:

-Validation rule (trong bảng hoặc trong thuộc tính của text box ) là:
Mã:
(Len([Text3])=3 And Not Like "*[!a-z]*")  ' Hoặc like "???" And Not Like "*[!a-z]*"
Nếu chấp nhận bỏ trống thì thêm Or Is Null

Sau đó tại sự kiện after update của text box bạn code như sau:
Mã:
Private Sub Text3_AfterUpdate()
    Me!Text3 = UCase(ConvertToNotSign(Me!Text3))
End Sub

Trong code trên thì:
-Text3 là tên text box
-ConvertToNotSign là Hàm chuyển từ có dấu sang không dấu trong Tiếng Việt Của Mod Xuân Thanh giới thiệu tại link sau:
http://thuthuataccess.com/forum/thread-7061.html

Như vậy cho dù người dùng nhập chữ in hoa hay chữ thường, có dấu hay không có dấu thì đều được chuyển thành In hoa không dấu

Chúc các bạn luôn trẻ khỏe và diễn đàn ngày một phát triển! 034
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn trunghieu
#13
Chắc chỉ cần thế này là đủ theo ý của chủ topic

Mã PHP:
Private Sub txtABC_AfterUpdate()
    If 
UCase(txtABC) <> txtABC Then
        MsgBox 
"Phai nhap chu hoa" , , "Chu y"
        
Exit Sub        '''' hoac gi gi do
    ElseIf 
Len(txtABC) <> 3 Then
        MsgBox 
"Chi duoc nhap 3 ky tu" , , "Chu y"
        
Exit Sub
    
ElseIf IsNumeric(Mid(txtABC,1,1)) = True Or IsNumeric(Mid(txtABC,2,1)) = True Or IsNumeric(Mid(txtABC,3,1)) = True Then
        MsgBox 
" Khong duoc nhap so" , , "Chu y"
        
Exit Sub
    End 
If
End Sub 

Góp vui, các bạn tiếp tục nhé
Thân mến
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn trunghieu
#14
Góp vui thêm cùng bác Xuân thanh.... Thay vì dùng Msgbox thì nên dùng ngay lệnh cắt đi mấy ký tự thừa! Hoặc sử dụng kết hợp giữa Mask Edit và các kỹ thuật đã được giới thiệu cùng mấy cái dưới đây mà tôi hay dùng!

Xin giới thiệu thêm một cách vẫn hay làm (mọi người cũng đã nói hết cả rồi) đối với việc ngăn cấm nhập một số loại số liệu và một số loại hành động (ví dụ Cắt chẳng hạn) trong ứng dụng
Mã PHP:
'//Khai báo kiểu cho phép nhập liệu cho dễ dùng sau này
Public Enum KeyinMode
    NumberType = 1      ' 
Chỉ cho nhập số
    DateType 
2        ' Chỉ cho nhập kiểu ngày
    FormularType = 3    ' 
Chỉ cho nhập dạng công thức
    NumberOnlyType 
' chỉ cho nhập số
    FreeType = 5 ' 
cho nhập tất cả
End Enum
'////////////////////Đây là những thủ tục gắn trên form - giả sử là đối với textbox txtFIG_PLNST_DATE
'
//
Private Sub txtFIG_PLNST_DATE_keypress(ByVal KeyAscii As MSForms.ReturnInteger)
    
ValidateKeycode KeyAsciiDateType
End Sub

'///Cái này để ngăn cấm dùng cắt dán chẳng hạn (tất nhien cả phần bấm phải chuột nữa cũng phải tính đến
Private Sub txtFIG_PLN_DATE_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    NoCutAction KeyCode, Shift
End Sub
'
///////////////////Đây là những thủ tục để trong 1 module để có thể dùng nhiều với các textbox khác nhau
'//Cái này cấm dán
Sub NoCutAction(kCde As MSForms.ReturnInteger, ByVal ShiftKey As Integer)
    If (ShiftKey And 2) And (kCde = Asc("V")) Then kCde = 0
End Sub
'
//Cái này cho phép gõ một số thứ tùy theo lựa chọn
Sub ValidateKeycode(kCde As MSForms.ReturnIntegerOptional iNum As KeyinMode 1)
    
Select Case iNum
    
Case 1:
        If 
kCde <> vbKeyBack Then
            
If InStr("0123456789"ChrW(kCde)) = 0 Then
                
If InStr("."ChrW(kCde)) <> 0 Then
                    kCde 
AscW(AppLocale.DecimalSeparator)
                Else
                    
kCde 0
                End 
If
            
End If
        
End If
    Case 
2:
        If 
InStr("0123456789/"ChrW(kCde)) = And kCde <> vbKeyBack Then kCde 0
    
Case 3:
        If 
InStr("()+-*/0123456789"ChrW(kCde)) = And kCde <> vbKeyBack Then kCde 0
    
Case 4:
        If 
InStr("0123456789"ChrW(kCde)) = And kCde <> vbKeyBack Then kCde 0
    
Case 5:
        
' enable free type
    End Select
End Sub 
Các bạn tham khảo qua nhé. Tất nhiên là tôi chưa kiểm soát phần chiều dài ký tự, cái đó cũng dễ kiểm soát thôi, nhưng sử dụng khi thủ tục lost_focus của textbox được kích hoạt!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Xuân Thanh


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Làm sao để ấn định Null cho trường Date khi sử dụng Class Module Minh Tiên 8 612 18-11-16, 09:29 AM
Bài mới nhất: MinhnHang
  [Help] Chỉnh giúp Form thống kê hoanghai902 2 122 28-10-16, 06:15 PM
Bài mới nhất: hoanghai902
  Xin giúp tạo 1 trường trong table đánh số tự động thay cho autonumber trungminh 7 446 16-09-16, 05:17 PM
Bài mới nhất: maidinhdan
  Giúp đỡ về form với trungminh 9 489 10-09-16, 09:17 PM
Bài mới nhất: trungminh
  Lấy dữ liệu từ trường trong form khanhnevn30 2 220 24-07-16, 05:51 PM
Bài mới nhất: khanhnevn30

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ơ