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