Back     Next Page

Access2000で家族メール?  その6

  2001.07.15 tsuchiya

我が家で実際にAccess家族メールを使ってみました。
メールの内容はともかくとして数日で70通ほどの送受信が行われました。
当初は1行メールを想定していましたが、数行のメールもいくつかあり半角255文字を超える可能性が出てきました。
そこで、送信内容、返信内容のフィールドはテキスト型からメモ型に変更します。
フラグの変更によるホルダの移動、メッセージの表示は問題なく動作しました。
まずは成功でしょう。

今日はセキュリティを追加します。
家族であってもプライバシーがあります。他の人のメールを簡単に見られる状態は避けなければなりません。
前々回、紹介したスタートアップフォームにパスワードに関するコードを記述します。
テキストボックスの名前を上から順に PASS, NOW_PASS, NEW_PASS とします。
パスワードは半角8文字以内とし、いつでも本人が変更可能とします。
パスワードの値を保持するためにPASSWORDテーブルを作成します。デフォルト値としてフィールド名と同じ文字をデータとして入れておきます。フィールド名Xは管理者用として確保しましたが、今回は使用しません。


パスワードに9文字以上入力されたときの処理です。
Private Sub PASS_AfterUpdate()
  If Len(PASS.Text) > 8 Then 
    MsgBox "パスワードは半角8文字以内です。"
    PASS.Value = ""
  End If
End Sub

Private Sub NOW_PASS_AfterUpdate() ’
  If Len(NOW_PASS.Text) > 8 Then
    MsgBox "パスワードは半角8文字以内です。"
    NOW_PASS.Value = ""
  End If
End Sub

Private Sub NEW_PASS_AfterUpdate()
  If Len(NEW_PASS.Text) > 8 Then
    MsgBox "パスワードは半角8文字以内です。"
    NEW_PASS.Value = ""
  End If
End Sub

Private Sub アカウント_AfterUpdate()
  PASS.SetFocus
End Sub

スタートボタンのクリックイベントを変更します。太字部分が追加されました。
Private Sub スタート_Click()
  Dim Account As String
  Select Case アカウント
    Case 1
      Account = "A"
    Case 2
      Account = "B"
    Case 3
      Account = "C"
    Case 4
      Account = "D"
    Case 5
      Account = "E"
    Case Else
      MsgBox "アカウントを指定してください。"
      Exit Sub
  End Select

  If PASS.Value = DLookup(Account, "PASSWORD") Then
    DoCmd.Close
    DoCmd.OpenForm "受信トレイ", acNormal, , , , acDialog, Account
  Else
    MsgBox "パスワードが違います。"
    PASS.Value = ""
    PASS.SetFocus
  End If

End Sub

パスワード変更処理です。
Private Sub パスワード変更_Click()

  Dim Account As String
  Select Case アカウント
    Case 1
    Account = "A"
  Case 2
    Account = "B"
  Case 3
    Account = "C"
  Case 4
    Account = "D"
  Case 5
    Account = "E"
  Case Else
    MsgBox "アカウントを指定してください。"
    Exit Sub
  End Select

  If NOW_PASS.Value = DLookup(Account, "PASSWORD") Then
    If IsNull(NEW_PASS.Value) Then
      MsgBox "新しいパスワードを入力してください。"
      NEW_PASS.SetFocus
      Exit Sub
    End If
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("PASSWORD", dbOpenTable)
    rs.Edit
    Select Case アカウント
    Case 1
      rs!A = NEW_PASS.Value
    Case 2
      rs!B = NEW_PASS.Value
    Case 3
      rs!C = NEW_PASS.Value
    Case 4
      rs!D = NEW_PASS.Value
    Case 5
      rs!E = NEW_PASS.Value
    End Select
    rs.Update
    rs.Close
    MsgBox "新しいパスワードに変更しました。"
    NEW_PASS.Value = ""
    NOW_PASS.Value = ""
  End If
End Sub

本日はここまで!

Back     Next Page