私は次のことをしようとしています。ユーザーは aspx ページで発行日と期日を入力しています。これらの日付はyyyy/MM/dd
、データベースに保存される形式です。
期日の3日前までにユーザーにメールを送信できるようにしたいです。
私が見つけることができた方法は、Windows Service
またはを使用していますSQL Job
が、問題は、概念をラップして機能させることができないことです。
紛らわしい部分は、Windows サービス用の新しいプロジェクトを作成する必要があることです。これが正しいかどうかはわかりませんが、私のアプローチは、SQL Server に接続し、課題と期日をデータベースにクエリしてから計算を実行することでした。に保存し、 が次のユーザーにメールを送信するか、ポーリングしない場合resultdate
は、 に保存します。resultdate
Today's date
編集:
Stored Procedure
に設定される を作成することで、上記を達成しようとしていWindows Service
ます。現在、私は次のことに苦労しています。
をMS SQL DB
含む があり、目標は の前にclosing date
別の DB に電子メールがあるユーザーに電子メールを送信することです。2 days
closing date
次のコードを参照してください。私は使用してCURSOR FOR
いますが、2 つのコマンド セットをSELECT
異なる DB に使用する方法がわかりません。最初のコマンドSELECT
はいくつかの変数に格納されており、これらの変数は他の DB から残高データを取得します。
USE ROG
DECLARE @Currentdate varchar(10), @DueDate varchar(10), @Serial_No int, @Product_Line varchar(50), @Email varchar(50)
SET @Currentdate = GETDATE()
DECLARE RFQDate CURSOR FOR
SELECT Serial_No, RFQ_Closing_Date, Product_Line FROM RFQDB WHERE DATEDIFF(day, GETDATE(), RFQ_Closing_Date) = 2
OPEN RFQDate
FETCH NEXT FROM RFQDate INTO @Serial_No, @DueDate, @Product_Line
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM RFQDate INTO @Serial_No, @DueDate, @Product_Line
PRINT ' Due Date ' + @DueDate + ' Serial No ' + coalesce(Convert(varchar(4), @Serial_No),'') + ' Product Line ' + @Product_Line
END
DECLARE EMAIL CURSOR FOR --Not sure if this way is correct (this is where I need help!!!
SELECT Sales_Email_ID FROM ProductLineDB WHERE Product_Line = @Product_Line
OPEN EMAIL
FETCH NEXT FROM EMAIL INTO @Email
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM EMAIL INTO @Email
PRINT ' EMAIL ' + @Email
END
CLOSE EMAIL
DEALLOCATE EMAIL
CLOSE RFQDate
DEALLOCATE RFQDate
ただし、上記のコードをテストすると、すべての期日が正しく表示されますが、期日に関連付けられたメールは 1 つしか表示されません。代わりに、5 つのメールが表示されます。
MS SQL メッセージ画面
Due Date 2013/02/14 Serial No 1015 Product Line Tubes
Due Date 2013/02/14 Serial No 1015 Product Line Instrumentation
Due Date 2013/02/14 Serial No 1015 Product Line Tooling
Due Date 2013/02/14 Serial No 1015 Product Line Tooling
Due Date 2013/02/14 Serial No 1015 Product Line Tooling
EMAIL xxx@abc.com
正しいコードを編集
次のコードは、必要なすべての情報を取得しています。あとは、スカラー値からsp_send_dbmail
を取得するために を実装するだけです。@recipients
@Email
The working code is as the following:
USE ROG
DECLARE @Currentdate varchar(10), @DueDate varchar(10), @Serial_No int, @Product_Line varchar(50), @Email varchar(50)
SET @Currentdate = GETDATE()
DECLARE RFQDate CURSOR FOR
SELECT Serial_No, RFQ_Closing_Date, Product_Line FROM RFQDB WHERE DATEDIFF(day, GETDATE(), RFQ_Closing_Date) = 2
OPEN RFQDate
FETCH NEXT FROM RFQDate INTO @Serial_No, @DueDate, @Product_Line
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE EMAIL CURSOR FOR
SELECT Sales_Email_ID FROM ProductLineDB WHERE Product_Line = @Product_Line
OPEN EMAIL
FETCH NEXT FROM EMAIL INTO @Email
PRINT ' EMAIL: ' + @Email
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM EMAIL INTO @Email
END
CLOSE EMAIL
DEALLOCATE EMAIL
FETCH NEXT FROM RFQDate INTO @Serial_No, @DueDate, @Product_Line
PRINT ' Due Date: ' + @DueDate + ' Serial No: ' + coalesce(Convert(varchar(4), @Serial_No),'') + ' Product Line: ' + @Product_Line
END
CLOSE RFQDate
DEALLOCATE RFQDate