Back     Next Page

Access2000で家族メール?  その4

  2001.07.08 tsuchiya

今日は
     1.新規メールを書いて送信する。(前回完了しました。)
     2.メールを受信して読む。 ←現在はイメージの段階
     3.返信メールを書いて送信する。 ←現在はイメージの段階
の2.3.を完成しましょう。

まずは、着信メールです。
下図は、けいちゃんの受信トレイの一部です。

着信メールのリストボックスのプロパティシートの一部です。
連結列 1の意味  値集合ソースの1番目のフィールド(ID)が着信メールの値になります。

値集合ソースのSQLビューは下図です。
フラグ1は未読、フラグ2はメールを読んだが返事を書いてない状態です。
つまり返事を書くまでは着信メールのホルダーに留まります。

着信メールのリストボックスのデータをダブルクリックして詳細フォームを開きます。(下図)
フォーム名は着信メールとしましょう。(2001.6.23のイメージから少し変更を加えています。)
リストボックスのダブルクリックイベントプロシージャです。
Private Sub 着信メール_DblClick(Cancel As Integer)

  If IsNull(着信メール) Then Exit Sub 'データなしの場合着信メールフォームを開きません。
  DoCmd.OpenForm "着信メール", acNormal, , , , acDialog

End Sub

   


着信メールフォームのテキストボックスは返信内容を除いてすべて連結コントロールになります。
コントロールソースはメールサーバー+送信者の表示に必要なフィールドでIDに抽出条件を付けます。
※返信内容も連結として作成する方法もありますが、ここでは更新のタイミングが複雑になるのを避け、非連結としました。

送信ボタンと閉じるボタンのクリックイベントプロシージャです。
Private Sub 送信_Click()

  If Me!返信内容 = "" Or IsNull(Me!返信内容) Then
  MsgBox "返信内容は?"
  Exit Sub
  End If

  Dim rs As Recordset
  Set rs = Me.RecordsetClone

  rs.Edit
  rs!返信日時 = Now() '現在時刻を記します
  rs!返信内容 = Me!返信内容
  rs!フラグ = "3" '返信済みであることを記します。
  rs.Update
  rs.Close
  MsgBox "メール返信しました。"
  DoCmd.Close
  DoCmd.OpenForm "受信トレイ", acNormal, , , , acDialog
  受信トレイ更新

End Sub
Private Sub 閉じる_Click()
  Dim rs As Recordset
  Set rs = Me.RecordsetClone

  rs.Edit
  rs!フラグ = "2" '新規メールが読まれたことを記します。
  rs.Update

  rs.Close
  DoCmd.Close
  DoCmd.OpenForm "受信トレイ", acNormal, , , , acDialog
  受信トレイ更新

End Sub

標準モジュールに  受信トレイ更新プロシージャを記述します。 
フラグの値が変更されたとき受信トレイの各ホルダの内容を更新します。
Sub 受信トレイ更新()

  Forms!受信トレイ.着信メール.Requery
  Forms!受信トレイ.返信メール.Requery
  Forms!受信トレイ.送信済み.Requery
  Forms!受信トレイ.完了済み.Requery

End Sub

続いて返信メールです。
けいちゃんがパパに返事を書きました。
そこで、下図がパパの受信トレイの一部です。
返信日時から、翌日の夕方、返信メールが届いているようです。

返信メールのリストボックスのプロパティシートの一部です。

返信メールのリストボックスのデータをダブルクリックして詳細フォームを開きます。(下図)
フォーム名は返信メールとしましょう。(2001.6.23のイメージから少し変更を加えています。)

リストボックスのダブルクリックイベントプロシージャです。
Private Sub 返信メール_DblClick(Cancel As Integer)

  If IsNull(返信メール) Then Exit Sub 'データなしの場合着信メールフォームを開きません。
  DoCmd.OpenForm "返信メール", acNormal, , , , acDialog

End Sub

返信メールフォームのテキストボックスはすべて連結コントロールで読み取り専用になります。
コントロールソースはメールサーバー+送信者+宛先の表示に必要なフィールドでIDに抽出条件を付けます。
IDの抽出条件は[Forms]![受信トレイ]![返信メール]です。
閉じるボタンのクリックイベントプロシージャです。

Private Sub 閉じる_Click()
  Dim rs As Recordset
  Set rs = Me.RecordsetClone

  rs.Edit
  rs!フラグ = "4" '完了済みであることを記します。
  rs.Update

  rs.Close
  DoCmd.Close
  DoCmd.OpenForm "受信トレイ", acNormal, , , , acDialog
  受信トレイ更新 ’標準モジュールから受信トレイ更新プロシージャを呼び出します。

End Sub

以上で受信トレイに入ってきた新着メールを読む、返事を書く、返事を読むことができました。
つまり受信トレイの着信メール、返信メールが完成しました。
残るは、送信済み(メールを送ったが相手が読んでいない、返事を書いていない)と完了済みですが、次回に作成しましょう。

Back     Next Page