2012-08-16 42 views
5

Trong Access, tôi có một biểu mẫu trong đó có ba hộp văn bản. Tôi cố gắng để cập nhật một textbox gọi tbxCombinedName với sự kết hợp của cả hai:Cập nhật hộp văn bản khi nhập

  • textbox tbxLastName (người của Họ)
  • textbox tbxFirstName (người của Tên)

Câu hỏi của tôi là: Tôi sử dụng thuộc tính hộp văn bản nào, vì vậy khi tôi nhập văn bản trong tbxLastName, hộp văn bản CombinedName là cập nhật ngay lập tức và sau đó được lưu trong bảng Liên hệ.

On Microsoft's website, tôi đã tìm thấy rằng các quá trình bước khi gõ vào một textbox như sau:

KeyDown → KeyPress → BeforeInsert → Thay đổi → KeyUp

Tôi đã thử bằng cách sử dụng onchange và Các thuộc tính OnKeyDown, nhưng không có kết quả. Thuộc tính nào được kết hợp với mã nào sẽ cho phép hành động cập nhật khi bạn nhập để hoạt động?

Đây là những gì tôi đã viết trước đó, mà không làm việc:

Private Sub tbxLName_change() 

Dim lastName As String 
Dim nameCode As String 

lastName = tbxLName.Value 
Debug.Print lastName 
nameCode = tbxNameCode.Value 
nameCode = lastName 
Debug.Print nameCode 

End Sub 

Cảm ơn tất cả sự giúp đỡ của bạn trước.

Trả lời

6

Đây là một trong số ít trường hợp bạn nên tham khảo thuộc tính .text.

Trong trường hợp thay đổi:

lastName = tbxLName.Text 

Thuộc tính .text chỉ có sẵn khi một điều khiển có tập trung và nó đề cập đến các nội dung hữu hình của sự kiểm soát.

Tuy nhiên, đây là cơ sở dữ liệu và quy tắc chung là bạn không lưu trữ các trường được tính toán. Tên đầy đủ có thể dễ dàng thu được từ một truy vấn.

+0

Một câu trả lời đơn giản, nhưng hoạt động hoàn hảo. Cảm ơn bạn –

+1

+1 Lời khuyên tốt về việc thu thập thông tin mong muốn từ truy vấn –

+0

Liệu truy vấn có thể xử lý Tên và Họ vào định dạng này: 'LLLLLL_F'? (LLLLLL là 6 chữ cái đầu tiên của Họ. F là chữ cái đầu tiên của Tên) –

1

Chỉ cần một vài ghi chú:

Bạn có thể muốn đi với KeyPress vì nó cung cấp khả năng thay đổi hoặc phủ nhận sự quan trọng của người dùng đẩy.

Trong ví dụ dưới đây, chỉ có chữ được phép và chữ được trên cased:

Private Sub tbxLName_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 
     Const ASCII_LOWER_RANGE = 65 
     Const ASCII_UPPER_RANGE = 122 
     Const ASCII_LOWER_A = 97 
     Const ASCII_LOWER_Z = 122 
     Const UPPER_MODIFIER = -32 
     Const ASCII_CANCEL_CODE = 0 

     Select Case KeyAscii 
      Case ASCII_LOWER_RANGE To ASCII_UPPER_RANGE 
       If KeyAscii >= ASCII_LOWER_A And KeyAscii <= ASCII_LOWER_Z Then 
        KeyAscii = KeyAscii + UPPER_MODIFIER 
       End If 
      Case Else 
       KeyAscii = ASCII_CANCEL_CODE 'Cancel Key Press 
     End Select 
End Sub 
+0

ray023 Đây không phải là' lastName = tbxLName.Text'. Thuộc tính mặc định là '.value' và nó không giống với' .text' trong MS Access. Thuộc tính '.text' chỉ ** có sẵn khi một điều khiển có tiêu điểm. – Fionnuala

+0

@Remou Một trong những khác biệt tinh tế VB6/VBA? Tôi sẽ loại bỏ phần đó. Cảm ơn vì đã cho tôi biết. – ray

Các vấn đề liên quan