我有一个Access 2002数据库/应用程序,我的客户可以在其中输入有关其客户端的多个信息,包括遵循某些规则的代码。
但是,当他们在输入后查看这些信息时,我需要隐藏此代码中的每个字符,除了最后4个字符。但是,如果需要修改代理,代理需要能够编辑此代码。
基本上,我有三个阶段可能:
我试图只显示最后4个字符,但是我的数据库被修改了...所以代码会在数据库中被删除。
答案 0 :(得分: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
答案 1 :(得分:0)
Private Sub UnboundTextBox_AfterUpdate()
[MyField] = Me.UnboundTextBox
End Sub
然后,只要代理查看记录,您就需要设置OnCurrent事件以使用受保护的视图填充未绑定的文本框:
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的字段,它就像一个魅力。