2012-08-16 28 views
5

Access'te, içinde üç metin kutusu bulunan bir form var. Ben ikisinin bir kombinasyonu ile tbxCombinedNameadında bir metin kutusu güncelleştirmek çalışıyorum:Yazarken güncelleme metin kutusu

  • metin kutusu tbxLastName (kişinin Soyadı)
  • metin kutusu tbxFirstName (kişinin Ad)

Sorum şu: hangi textbox özelliğini kullanıyorum, bu yüzden ben tbxLastName yazarken, CombinedName metin kutusu numaralı telefondan numaralı telefonu güncelledikten sonra İletişim. Microsoft's website günü

, ben şöyle bir metin yazarak adım süreçleri olduğunu bulmuşlardır:

KeyDown → KeyPress → Beforeınsert → Değiştir → KeyUp

Ben onChange kullanarak denedim ve OnKeyDown özellikleri, ancak boşuna. Hangi kod, hangi kodla birleştirildiğinde, tür olarak güncellemenin çalışmasına izin verir? Tüm yardımlarınız için

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 

peşin:

Bu benim işe yaramadı, hangi önceki yazdığı.

cevap

6

Bu, .text özelliğine başvurmanız gereken birkaç durumdan biridir. Değişim durumunda

:

lastName = tbxLName.Text 

bir kontrol odak vardır ve kontrolün görünür içeriğine atıfta zaman .text özelliği kullanılabilir. Bununla birlikte, bu bir veritabanıdır ve genel kural, hesaplanan alanları saklamamanızdır. Üste | Tam ad, bir sorgudan kolayca elde edilebilir. notların

+0

Basit cevap, ama mükemmel çalışıyor. Thank you –

+1

+1 Bir sorgudan istenen bilgileri elde etmek için iyi bir tavsiyem –

+0

Sorguyu Birinci ve Soyadı bu formatta işleyebilir: 'LLLLLL_F'? (LLLLLL, soyadının ilk 6 harfidir. F ilk adın ilk harfi) –

1

Sadece birkaç:

Bunu değiştirmek veya kullanıcı itti anahtar olumsuzlamak yeteneği sağlar çünkü KeyPress ile gitmek isteyebilirsiniz. Aşağıdaki örnekte

, sadece harflere izin verilir ve küçük harfler üst kasalı olan:

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 Bunlar 'lastName = tbxLName.Text' ile aynı değildir. Varsayılan özellik '.value'dir ve MS Access'te' .text' ile aynı değildir. Bir denetimin odağı olduğunda '.text' özelliği ** sadece ** kullanılabilir. – Fionnuala

+0

@Remou VB6/VBA ince farklarından biri? Ben sadece o bölümü kaldıracağım. Bana bildirdiğiniz için teşekkürler. – ray