人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Access2003 OutlookExpress6
テーブル 「T_実績」 をもとに クエリ 「Q_今日の実績」 があります。
「Q_今日の実績」 は[品名] [品番] [受付日]

フォーム1 には、テキストボックス txt_受付日 と コマンドボタン1 があり
txt_受付日 に入力した日付で抽出したクエリ「Q_今日の実績」の結果を
メールの本文に記載し、送信したいです。

宛先:aaa@aaa
CC:bbb@bbb
本文:
[受付日]の実績、更新されました。
鉛筆 cg022-25 (改行したい)
消しゴム TG56
定規 0389235
(↑品名 ↑品番 日によって件数は増減する。0件のときは送信しない)

いろいろなサイトを見て自分で作ってみましたが、抽出条件がないクエリの時しか送れず、また、クエリの結果が10件の場合は10通のメールを送信してしまいます。
よろしくお願いいたします。

●質問者: sakanainu
●カテゴリ:コンピュータ
✍キーワード:AAA CC クエリ コマンド サイト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●35ポイント

コメントが無効ですので回答で失礼します(この回答に関するポイントは不要です)。

仕様の確認等コメントのほうが良いので有効にお願いできるでしょうか。


すでに、メールが送信できるようにはなっているのですから、差し支えのない範囲で

(アドレスを匿名にするなどして)コードを公開してはどうでしょうか。


おそらくコードの部分的な修正で対応できるのではないかと思います。

◎質問者からの返答

Mook様 ありがとうございます。Access VBA とともに 「はてな」の利用方法もあまりわかってなく、Mook様のご返答助かりました。ありがとうございます。

Private Sub コマンド1_Click()


Dim DB As Database

Dim RS As Recordset

Dim 件名 As String

Dim 本文 As String

Set DB = CurrentDb

Set RS = DB.OpenRecordset("Q_今日の実績")

Do Until RS.EOF

'件名の作成

件名 = "実績更新のお知らせ"

'本文の作成

本文 = "本日実績、更新されました。" & vbCrLf _ '本当は[受付日]を入れたい

& RS!品名 & RS!品番

RS.MoveNext

Loop

'メールの送信

DoCmd.SendObject , , acFormatTXT, "aaa@aaa", , , 件名, _

本文, False

RS.Close: Set RS = Nothing

End Sub

上記はテキストボックスに日付を入れて抽出することがわからなかったので、その部分はできていません。よろしくお願いいたします。


2 ● Mook
●200ポイント ベストアンサー

うーん、コードを見る限りレコードが10件あったら10通というつくりにはなっていませんね。

これは、ボタンがクリックされたときに1度だけ実行するようになっているのですよね?


とりあえず、他の部分に対応しました。

・0件のときは送信しない

・本当は[受付日]を入れたい(レコードがあれば出るはず)

・改行したい

Option Compare Database

Private Sub コマンド1_Click()
 Dim DB As Database
 Dim RS As Recordset
 Dim 件名 As String
 Dim 本文 As String
 
 Set DB = CurrentDb
 Set RS = DB.OpenRecordset("Q_今日の実績")
 
  '検索結果の確認:街頭情報がなければ終了
 If RS.RecordCount = 0 Then
 MsgBox "該当するデータがありません"
 Exit Sub
 End If
 
  '件名の作成
 件名 = "実績更新のお知らせ"
  '本文の作成
 本文 = "[" & RS!受付日 & "]の実績、更新されました。"
 Do Until RS.EOF
  '本文の作成
 本文 = 本文 & vbCrLf & RS!品名 & RS!品番
 RS.MoveNext
 Loop

  'メールの送信
 DoCmd.SendObject acSendNoObject, acSendNoObject, acFormatTXT, "aaa@aaa", , , 件名, 本文, False
 RS.Close: Set RS = Nothing
End Sub

本当にレコード数だけメールが送信されるか、もう一度確認いただけますか。

また、日付が入らない場合はクエリの中身を提示ください。

(そこに日付がなければ追加すればOKなはずです。)

◎質問者からの返答

Mooks様、どうもありがとうございます。レコード数だけメール送信されることなく、送ることができました。お礼が遅くなり申し訳ありません。

ただ、テキストボックス[txt受付日]に入力した日付で抽出をしたいのですが、

Set RS = DB.OpenRecordset("Q_今日の実績")

で、パラメータが少なすぎます。1を指定してください

とエラーになってしまいます。

SELECT T_実績.品名, T_実績.品番, T_実績.受付日

FROM T_実績

WHERE (((T_実績.受付日)=[forms]![フォーム1]![txt受付日]))

ORDER BY T_実績.受付日 DESC;

よろしくお願いいたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ