2013-09-23 3 views
0

У меня есть база данных/приложение Access 2002, где мои клиенты могут вводить несколько сведений о своих клиентах, включая код, который следует некоторым правилам.Отображать только последние символы в текстовом поле

Однако, когда они просматривают эти данные после их ввода, мне нужно скрыть все символы в этом коде, за исключением четырех последних символов. Однако агент должен иметь возможность редактировать этот код, если его необходимо изменить.

Так в основном, у меня есть 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

Wow - Я в шоке, что на это не назовешь достаточного ответа. Лучшим ответом является использование несвязанного текстового поля в вашей форме, а не связанного. Сначала вам нужно, чтобы ваше несвязанное текстовое поле заполнило фактическое поле. Вы сделаете это в событии AfterUpdate.

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, и работает как шарм.

Смежные вопросы