Sayın @
C*e*l*o*y*c*e ve Sayın @
onur_can Hocalarımızın tavsiye ettiği kodlara ek olarak yapmak istediğiniz isim uzunluğu kadar ve Ad - Soyadı ayrı ayrı maskelemek gördüğüm kadarı ile. Bu durumda 2 adı veya 2 soyadı olanlar için ne olacak sorusu sorulmalı?
Örneğin raporunuza Masked_Adi Soyadi adlı bir textbox ekleyip Adi_Soyadi adlı textboxı sadece kontrol için kullanırsanız mesela Report Open olayında şöyle bir kod kullanılabilir:
Dim AdSoyad As String, Ad1 As String, Ad2 As String, Soyad As String
Dim Ad1Maske As String, Ad2Maske As String, SoyadMaske As String
Dim Spacing As Integer
AdSoyad = Me.Adi_Soyadi
Spacing = InStr(AdSoyad, " ")
If Spacing > 0 Then
'2 Ad veya 2 Soyad varsa durumu
Ad1 = Left(AdSoyad, Spacing - 1) 'İlk adı ayırır
AdSoyad = Mid(AdSoyad, Spacing + 1)
Spacing = InStr(AdSoyad, " ")
If Spacing > 0 Then
Ad2 = Left(AdSoyad, Spacing - 1) 'İkinci adı ve soyadı ayırır
Soyad = Mid(AdSoyad, Spacing + 1)
Ad1Maske = Left(Ad1, 3) & String(Len(Ad1) - 3, "*") 'Ad1 için maskeleme yapar
Ad2Maske = Left(Ad2, 3) & String(Len(Ad2) - 3, "*") 'Ad2 için maskeleme yapar
SoyadMaske = Left(Soyad, 3) & String(Len(Soyad) - 3, "*") 'Soyad için maskeleme yapar
Me.Masked_Adi_Soyadi = Ad1Maske & " " & Ad2Maske & " " & SoyadMaske 'Sonuçları birleştirip yazar
Else
'Sadece 1 Ad ve 1 Soyad varsa durumu
Ad2 = AdSoyad
Ad2Maske = Left(Ad2, 3) & String(Len(Ad2) - 3, "*")
Me.Masked_Adi_Soyadi = Ad1Maske & " " & Ad2Maske
End If
Else
'Eğer boşluk yoksa tam ad olarak kabul ederek sadece adı maskeleme durumu
Me.Masked_Adi_Soyadi = Left(AdSoyad, 3) & String(Len(AdSoyad) - 3, "*")
End If
End Sub
Ancak maskelemede güvenlik için isim uzunluğu kadar bir maskeleme yapmak yerine belirli bir formatta maskeleme yapmak, Ayrıca ilk 3 karakter yerine 1 veya 2. karakterden sonra maskeleme yapmak daha doğrudur, zira üç harften yola çıkarak isim uzunluğundan tahminde bulunmak kolaydır ve ayrıca 3 harfli isimler maskelenmeden gösterilir. Bu hususlara dikkat etmeniz gerekli.