1

会社の休日追跡 Web サイトを構築中です。新しい休暇申請用のメール システムをセットアップしたいと考えています。

外国語キーで接続された 2 つのテーブルがあります。

従業員:

CREATE TABLE [dbo].[Employee](
[EmployeeID] [int] NOT NULL,
[FullName] [nvarchar](50) NOT NULL,
[Email] [nvarchar](50) NOT NULL,
[StartDate] [date] NOT NULL,
[ShiftID] [int] NOT NULL,
[AreaID] [int] NOT NULL,
[DisciplineID] [int] NOT NULL,
[SiteID] [int] NOT NULL,
[ALCategory] [int] NOT NULL,
[HoursTaken] [int] NOT NULL,
[StudyLeaveEntitlement] [int] NOT NULL,
[StudyLeaveTaken] [int] NOT NULL,
[StudyLeaveRemaining]  AS ([StudyLeaveEntitlement]-[StudyLeaveTaken]),
[ExamLeaveTaken] [int] NOT NULL,
[ForceMajeure] [int] NOT NULL,
[BereavementLeaveTaken] [int] NOT NULL,
[MaternityLeaveTaken] [int] NOT NULL,
[ParentalLeaveTaken] [int] NOT NULL,
[AdoptionLeaveTaken] [int] NOT NULL,
[ManagerEmail] [nvarchar](50) NULL,
[AreaManagerEmail] [nvarchar](50) NULL,

休日申請フォーム:

CREATE TABLE [dbo].[HolidayRequestForm](
[RequestID] [int] IDENTITY(1,1) NOT NULL,
[EmployeeID] [int] NOT NULL,
[StartDate] [date] NOT NULL,
[FinishDate] [date] NOT NULL,
[HoursTaken] [int] NOT NULL,
[Comments] [nvarchar](256) NULL,
[YearCreated] [int] NOT NULL,
[MonthCreated] [int] NOT NULL,
[DayCreated] [int] NOT NULL,
[YearOfHoliday]  AS (datepart(year,[StartDate])),
[Approved] [bit] NULL,


 ALTER TABLE [dbo].[HolidayRequestForm]  WITH CHECK ADD  CONSTRAINT [MyTable_MyColumn_FK] FOREIGN KEY([EmployeeID])
REFERENCES [dbo].[Employee] ([EmployeeID])
GO

メールを送信するようにSQLを設定しましたが、次のことを達成する方法がわかりません。これが私が試したことです。

Create trigger EmailForApproval on [dbo].[HolidayRequestForm]
after INSERT
as
begin

exec msdb.dbo.sp_send_dbmail
  @profile_name='HolidayRequests',
  @recipients= [AreaManagerEmail],
  @body='Hi [ManagerEmail], [employee].[Email] has requested a holiday please forward this email to [ManagerEmail] with a reply of Accept or Decline  Thank you',
  @subject='New Holiday Request'

従業員が休日のリクエストを送信すると、エリア マネージャーにメールが送信され、承認または拒否されるようにしたいと思います。これを行うには、電子メールを主任マネージャーに転送します。主任マネージャーは列Approvedを true に変更できます。

電子メールは、employees テーブルに入力されている Employees Area マネージャーに送信する必要があります。

電子メールの本文では、休暇を取った従業員と、もちろん休暇自体の詳細を参照する必要があります。

4

1 に答える 1

0

send_dbmail でクエリ オブジェクトを操作できます。

exec msdb.dbo.sp_send_dbmail
  @profile_name='HolidayRequests',
  @recipients= [AreaManagerEmail],
  @body='...This is replaced by the query object...',
  @subject='New Holiday Request'
@query= 'SET NOCOUNT ON;SELECT 

''Hi '' + [ManagerEmail] + '', '' + [employee].[Email] +
 '' has requested a holiday please forward this email 
to '' + [ManagerEmail] + '' with a reply of Accept or Decline  Thank you.''

FROM YOURTABLE
WHERE YOURCONDITION
;SET NOCOUNT OFF'

クエリ オブジェクトなしで Body を使用するには:

Declare @MEm VarChar(25) = (Select ManagerEmail From  YOURTABLE Where YOURCONDITION)
Declare @em VarChar(25) = (Select eMail From  YOURTABLE Where YOURCONDITION)
Declare @vBody = 
          'Hi ' + @MEm + ', ' + @em +
          ' has requested a holiday please forward this email 
          to ' + @MEm + ' with a reply of Accept or Decline  Thank you.'
          ,

    exec msdb.dbo.sp_send_dbmail
      @profile_name='HolidayRequests',
      @recipients= [AreaManagerEmail],
      @body = @vBody,
      @subject='New Holiday Request'
于 2019-01-25T13:35:38.337 に答える