Jeg har en database med medlemmer af en forening. Hvordan får jeg databasen til at sende en mail når et eller flere af medlemmerne har fødselsdag om fx 7 dage? Er det Stored Procedure, trigger eller en anden funktion? Jeg behøver ikke en færdig klar løsning, men et skub i den rigtige retning, til en guide eller andet.
Jeg fået lavet denne her Query, men synes ikke helt det er godt nok, har bare svært ved at komme videre. EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DBMail', @recipients = 'modtager', @query = 'SELECT [nFornavn], [nMellemnavn], [nEfternavn] FROM [tabel].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+7) AND MONTH([Fodselsdag]) = MONTH(GETDATE())', @subject = 'Fødselsdag(e)'
Det modtager jeg denne mail af og det synes jeg ikke ser vildt godt ud. nFornavn nMellemnavn nEfternavn
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- John
Doe
(1 rows affected)
Hvordan retter jeg det til så det ser pænt ud og ikke ligner et Query output?
DECLARE @Recipient varchar(MAX), SET @Recipient = 'SELECT Email FROM [Testtable].[dbo].[Medlemmer] WHERE Rolle = "data"' EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DBMail', @recipients = '@Recipient', @query = 'SELECT [nFornavn], [nMellemnavn], [nEfternavn] FROM [Testtable].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+7) AND MONTH([Fodselsdag]) = MONTH(GETDATE())' , @subject = 'Fødselar(e)', @Body = '' Det går ikke vanvittig godt, har prøvet lidt forskelligt. Jeg prøver her at finde en mail adresse fra min table som jeg vil sende en mail til, men det virker ikke.
Her er mit foreløbige udkast, der er dog en ting jeg ikke kan finde ud af. Jeg har min dato fra min database og jeg har den dato jeg vil sammenligne med, hvordan udregner jeg år?
SET @modtager = (SELECT Email FROM [Test].[dbo].[Medlemmer] WHERE Rolle = 'Formand') SET @bodydata1 = (SELECT nFornavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @bodydata2 = (SELECT nMellemnavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @bodydata3 = (SELECT nEfternavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @bodydata4 = (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) SET @BodyText = 'Hej Kassér'+ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) + 'Så er det igen tid til at sende en fødselsdagshilsen.'+ CHAR(13)+CHAR(10) + 'Denne gang er det '+ @bodydata1 +' '+ @bodydata2 +' '+ @bodydata3 +N' der har fødselsdag d. '+ CONVERT(varchar(MAX), @bodydata4, 105) +', '+ @bodydata1 + N' bliver [antal]år.'+ CHAR(13)+CHAR(10) + N'Send '+ @bodydata1 +' en hilsen.'+ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) + 'Med venlig hilsen'+ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) + 'formanden'
IF EXISTS (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE())) EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DBMail', @body_format = 'TEXT', @recipients = @modtager, @subject = N'Fødselar', @Body = @BodyText ELSE PRINT GETDATE() GO
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.