2017-10-06 1 views
1

J'ai un travail qui s'exécute tous les lundis qui envoie les rapports de la dernière semaine. Je voudrais avoir la pièce jointe soit la semaine dernière Semaine # ie. Semaine 36, Semaine 37 etc. ou simplement avoir l'horodatage du moment où le rapport a été envoyé, ou lorsque le fichier est ouvert pour appliquer l'horodatage à signaler lorsque l'utilisateur l'ouvre. Raison est que nous avons ces rapports affichés et que la direction de savoir si les rapports sont à jour (dont ils sont habituellement) de cette façon, nous pouvons casser le fouet :)Insérer un horodatage dans une pièce jointe de fichier .TXT à partir de SP_Send_DBMail [SQL]

Heres ce qui a eu et je vais aussi montrer ce que je suis

Code d'envoi du rapport ----------------------------------------- ----------------

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'profile', 
@recipients = '[email protected]', 
@subject = 'Weekly', 
@query = N'EXEC PTW.dbo.SP_Weekly', 
@attach_query_result_as_file = 1, 
@query_result_width = 150, 
@query_result_header= 1, 
@query_attachment_filename = 'Weekly.txt', 
@importance = 'High', 
@query_result_no_padding = 1, 
@query_result_separator = ' '; 

RÉSULTATS DE FIXATION ------------------------ ------------------------------

ID  Codes TimeSUM Units UPH  Goal% 
--  ----- ------- ----- ---  ----- 
3476 HS-HY 5:53 9520 1618 140%  
2377 HS-HY 13:37 21638 1589 138%  
2372090 HS-HY 4:20 6036 1393 121%  
43864 HS-HY 13:46 15035 1092 95% 

(4 rows affected) 

Ce que je voudrais voir est l'un des ci-dessous

WEEK_35 or `CURRENT_TIMESTAMP` or Timestamp of when file is opened 
ID  Codes TimeSUM Units UPH  Goal% 
--  ----- ------- ----- ---  ----- 
3476 HS-HY 5:53 9520 1618 140%  
2377 HS-HY 13:37 21638 1589 138%  
2372090 HS-HY 4:20 6036 1393 121%  
43864 HS-HY 13:46 15035 1092 95% 

(4 rows affected) 

Je préférerais le plus à montrer la semaine # mais tout travaillerais je l'ai déjà codé le SP à l'endroit où insérer dernières semaines dates dans une colonne du résultat mais c'est extrêmement moche vu la date autant de fois qu'il y a de rangée, et pour épargner de l'espace j'ai seulement montré 4 rangées. Des idées ou de l'aide? J'ai aussi essayé d'avoir les destinataires simplement appuyer sur F5 quand ils ouvrent le dossier pour insérer l'horodatage de cette façon .... C'est facile de montrer un cheval à l'eau, mais extrêmement difficile de le faire boire :)

Répondre

0

Pour montrer le date d'envoi, mon idée est de changer le sujet et query_attachment_filename pour refléter la semaine en cours, par exemple:

DECLARE @FileName VARCHAR(50) 
SET @FileName = 'Weekly_' + CONVERT(VARCHAR(2), Datepart(Week, Getdate())) + '.txt' 

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'profile', 
@recipients = '[email protected]', 
@subject = @FileName, 
@query = N'EXEC PTW.dbo.SP_Weekly', 
@attach_query_result_as_file = 1, 
@query_result_width = 150, 
@query_result_header= 1, 
@query_attachment_filename = @FileName, 
@importance = 'High', 
@query_result_no_padding = 1, 
@query_result_separator = ' '; 
+0

Oui, cette approche fonctionne le mieux pour ce que je dois acheive – DRUIDRUID