2013-09-23 61 views
0

我有一個Access 2002數據庫/應用程序,我的客戶端可以輸入有關其客戶端的多個信息,包括遵循一些規則的代碼。只顯示文本框中的最後一個字符

但是,當他們在輸入後查看這些信息時,我需要隱藏此代碼中除最後4個字符以外的每個字符。但是,如果代理需要修改,代理需要能夠編輯此代碼。

所以基本上,我有3個階段可能:

  1. 第一時間信息被填充,空數據。該字段必須顯示輸入的字符。
  2. 在稍後的日期,代碼必須以某種方式隱藏,以僅顯示最後4個字符。它可以與*或簡單的最後4個字符,但用戶不能看到之前的內容。
  3. 代理編輯代碼,代碼必須在數據庫中正確修改。必須顯示字符。

我試圖只顯示最後4個字符,但是我的數據庫被修改了......所以代碼在數據庫中被切斷。

回答

0

我寫了下面的函數來隱藏敏感數據。其主要用途是阻止shoulder surfing。我不確定它是否會滿足您的特定需求,但它很簡單,直接,可以幫助其他人發現這個問題。

'Use to hide data in sensitive fields (e.g., BirthDate, PhoneNum, SSN) 
'Usage: Ctl OnEnter property: =ObscureInfo(False, Form.ActiveControl) 
'  Ctl OnExit property: =ObscureInfo(True, Form.ActiveControl) 
'  Form Open property: =ObscureInfo(True, [BirthDate], [HomePhone], [SSN]) 
Function ObscureInfo(HideIt As Boolean, ParamArray Ctls() As Variant) 
Dim Ctl As Variant 
    For Each Ctl In Ctls 
     If HideIt Then 
      If IsNull(Ctl.Value) Then 
       Ctl.BackColor = vbWhite 
      Else 
       Ctl.BackColor = Ctl.ForeColor 
      End If 
     Else 
      Ctl.BackColor = vbWhite 
     End If 
    Next Ctl 
End Function 
0

哇 - 我很震驚,這還沒有得到充分的回答。最好的答案是在表單中使用未綁定的文本框,而不是綁定的文本框。首先,您需要讓未綁定的文本框填充實際字段。您將在AfterUpdate事件中執行此操作。

Private Sub UnboundTextBox_AfterUpdate() 
    [MyField] = Me.UnboundTextBox 
End Sub 

然後你需要每當代理查看記錄設置成爲當前事件與受保護的視圖來填充你的綁定文本框:

Private Sub Form_Current() 
    Me.UnboundTextBox = String(Len([MyField])-4, "*") & Right([MyField], 4) 
End Sub 

但是,你也想讓你的藥如有必要,稍後編輯或查看完整的代碼。做到這一點的最佳方法是爲未綁定的文本框設置OnEnter事件來提取整個字段值,以便代理可以查看和編輯它 - 這與您的OnUpdate事件相反。

Private Sub UnboundTextBox_Enter() 
    Me.UnboundTextBox = Nz([Field1]) 'The Nz deals with Null errors 
End Sub 

我用這個字段顯示SSN的字段,它的作用就像一個魅力。