パスワードの列の値はフォームから入力するようにして、
その入力用のテキストボックス、定型入力のプロパティを
「パスワード」の値に設定すれば、
対応するテーブルを閲覧するときには
「*」などで表示されるようだ
-----------------------------------------------------
ms access 2024において
ユーザーを管理するテーブルを作成する際、
各ユーザーが使うパスワードを記録する列を定義するとき、
テーブルを閲覧する際に、
パスワードの文字数だけ
その列の値を*(アスタリスク)を使って表示させるような設定は
可能なのでしょうか?
↓
**MS Access 2024 において、
パスワードの列をアスタリスク (`*`) でマスキングする設定は可能か?**
### **結論**
**Accessのテーブルレベルでは、
直接パスワードの文字数に応じて `*` を表示する設定はできません。**
ただし、**フォームやクエリ、VBAを活用することで実現可能** です。
---
## **方法①: フォームの「パスワード文字」設定(推奨)**
Access の **フォーム** に `password` フィールドを表示する場合、
「パスワード文字」プロパティを `*` に設定すれば、
**入力時や表示時にアスタリスクで隠す** ことができます。
### **手順**
1. **フォームをデザインビューで開く**
2. `password` フィールドの **テキストボックス** を選択
3. **プロパティシート** → 「書式」タブを開く
4. **「パスワード文字」プロパティに `*` を設定**
👉 **結果:**
フォームで `password` フィールドを見ると、
**データの長さ分だけ `*` で表示される**(「123456」→「******」)。
**🔹 注意点:**
- **テーブルを直接開いた場合は元のパスワードが見える**(マスキングされない)。
- **クエリでも `*` でのマスキングはできない**(直接のプロパティ設定は不可)。
---
## **方法②: クエリでマスキング(パスワードを `*` に置き換える)**
テーブルを直接閲覧するのではなく、
クエリを作成して**文字数分 `*` を表示** することも可能です。
### **SQL クエリ**
```sql
SELECT UserID, String(Len(Password), "*")
AS MaskedPassword FROM Users;
```
👉 **結果:**
| UserID | MaskedPassword |
|--------|---------------|
| 1 | ****** |
| 2 | ******** |
**🔹 注意点:**
- **実際の `password` の値はそのまま保持される。**
- **このクエリ経由で閲覧すれば、元のパスワードが直接見えない。**
- **テーブルを直接開くと、元のデータが見えてしまう。**
---
## **方法③: VBAを使ってパスワードを暗号化(推奨)**
セキュリティを強化するなら、
**パスワードを暗号化して保存し、復号時のみ表示する**
方法が適切です。
### **例: VBAで暗号化**
```vba
Function EncryptPassword(
ByVal plainText As String) As String
Dim i As Integer
Dim encrypted As String
For i = 1 To Len(plainText)
'簡単なシフト暗号
encrypted = encrypted
& Chr(Asc(Mid(plainText, i, 1)) + 3)
Next i
EncryptPassword = encrypted
End Function
```
### **例: VBAで復号化**
```vba
Function DecryptPassword(
ByVal encryptedText As String) As String
Dim i As Integer
Dim decrypted As String
For i = 1 To Len(encryptedText)
decrypted = decrypted
& Chr(Asc(Mid(encryptedText, i, 1)) - 3)
Next i
DecryptPassword = decrypted
End Function
```
👉 **ポイント:**
- パスワードは**テーブルには暗号化された状態で保存**。
- ユーザーがログイン時に**VBAで復号化**して認証。
- **セキュリティ強化**に繋がる
(ただし本格的な暗号化ならAESなどを利用すべき)。
---
## **まとめ**
| 方法 | できること | 制限・注意点 |
|------|------------|--------------|
| **フォームの「パスワード文字」プロパティ** | `*` でマスキング | テーブルを直接開くと見える |
| **クエリで `*` に変換** | `SELECT UserID, String(Len(Password), "*") AS MaskedPassword FROM Users;` | 実データは隠せない |
| **VBAで暗号化&復号化** | パスワードを安全に保存 | 実装に手間がかかる |
---
## **結論 & おすすめの方法**
- **シンプルに `*` で隠すなら** → **フォームの「パスワード文字」設定**
- **テーブルを直接開かれたくないなら** → **クエリで `*` に変換**
- **セキュリティを強化するなら** → **VBAで暗号化・復号化**
テーブルの閲覧時に `*` でマスキングする方法はないので、
「フォームを使って表示を制御する」か、
「クエリ/VBAで加工する」方法が必要になります! 😊
コメント
コメントを投稿