2013-09-23 58 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的字段,它的作用就像一个魅力。