DECLARE @html NVARCHAR(MAX)
  SET @html = '<style type=''text/css''>.header {text-align:center;font-weight:bold;white-space:nowrap;color:#7f7e82;} .cell_text {vertical-align:top;text-align:left;color:#333333;cursor:pointer} .cell_num {vertical-align:top;text-align:right;color:#333333;}</style>' ;
 SET @html = @html + CAST(( SELECT 3 [@cellpadding],
                                  0 [@cellspacing],
                                'font-family:verdana;font-size:10px;' [@style],
                                 1 [@border],
                                --returns the header
                                 ( SELECT    [@class] = 'header', 'Database Table' [text()] FOR XML PATH('th'), TYPE) tr,
                                 ( SELECT    [@class] = 'header', 'Entity Count' [text()] FOR XML PATH('th'), TYPE) tr,
                                ( SELECT    [@class] = 'header', 'Total Rows' [text()] FOR XML PATH('th'), TYPE ) tr,
                               -- returns the rows in the table
                               ( SELECT    ( SELECT    [@class] = 'cell_text',[@onClick]='window.open(test.html)',dbtable  [text()] FOR XML PATH('td'), TYPE ),
                                             ( SELECT    [@class] = 'cell_text', entities [text()] FOR XML PATH('td'), TYPE ),
                                             ( SELECT    [@class] = 'cell_num', rows [text()] FOR XML PATH('td'), TYPE )
                                  FROM      ( SELECT TOP 3 dbtable = OBJECT_NAME(object_id), entities = COUNT(DISTINCT name), rows = COUNT(*)
                                              FROM      sys.columns
                                              GROUP BY  OBJECT_NAME(object_id)
                                            ) data                                   FOR XML PATH('tr'), TYPE
                                ) 
                            FOR XML PATH('table'), TYPE
                          ) AS VARCHAR(MAX))
 
 Exec dbo.sp_send_dbmail @profile_name='MailForHr', 
@recipients='[email protected]', 
@subject=N'ddddd', 
@body=@html,
@body_format='HTML';
怎么样才能在点dbtable时能弹出一窗口

解决方案 »

  1.   


    直接html我知道 怎么弄,,,,现在就是想在邮件中怎么弄
      

  2.   

    我是说用javascript,在单元格设置onclick函数,然后调用数据库中的存储过程,发送邮件
      

  3.   

    在邮件内容中就是不知怎么设置javascript了
      

  4.   

     ( SELECT    ( SELECT    [@class] = 'cell_text',[@onClick]='javascript:window.open(''test.html'')',dbtable  [text()] FOR XML PATH('td'), TYPE ),
    写这样的都没用
      

  5.   


    你的双引号和单引号反了。
    javascript 的Debug确实很麻烦,很小的一个标点错误就不能运行了。
    这个真没法帮,你自己慢慢检查一下生成的code吧。
      

  6.   


    那个不是双引号 ,是两个单引号
     ( SELECT    ( SELECT    [@class] = 'cell_text',[@onclick]="window.open('test.html')",dbtable  [text()] FOR XML PATH('td'), TYPE ),这样是报错。
     ( SELECT    ( SELECT    [@class] = 'cell_text',[@onclick]='window.open('test.html')',dbtable  [text()] FOR XML PATH('td'), TYPE ),
    这样也报错
      

  7.   

    你确定是 javascript这段出错么?把报错信息贴一下。我测试了一下
    [@onClick]='window.open(''test.html'')'
    这么写是对的,你再看看自己的code
      

  8.   

    起码输出的 @html code是对的,你的存储过程没法测试。
      

  9.   


    copy我最上面的代码,直接放在msdb中的查询分析器中就可以运行,把邮件改下就可以到邮箱看收到的邮件
      

  10.   

    DECLARE @html NVARCHAR(MAX)
      SET @html = '<style type=''text/css''>.header {text-align:center;font-weight:bold;white-space:nowrap;color:#7f7e82;} .cell_text {vertical-align:top;text-align:left;color:#333333;cursor:pointer} .cell_num {vertical-align:top;text-align:right;color:#333333;}</style><script language=''javascript''>function openwin(){window.open (''page.html'',''newwindow'',''height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no'')}</script>' ;
     SET @html = @html + CAST(( SELECT 3 [@cellpadding],
                                      0 [@cellspacing],
                                    'font-family:verdana;font-size:10px;' [@style],
                                     1 [@border],
                                    --returns the header
                                     ( SELECT    [@class] = 'header', 'Database Table' [text()] FOR XML PATH('th'), TYPE) tr,
                                     ( SELECT    [@class] = 'header', 'Entity Count' [text()] FOR XML PATH('th'), TYPE) tr,
                                    ( SELECT    [@class] = 'header', 'Total Rows' [text()] FOR XML PATH('th'), TYPE ) tr,
                                   -- returns the rows in the table
                                   ( SELECT    ( SELECT    [@class] = 'cell_text',[@onClick]='openwin()',dbtable  [text()] FOR XML PATH('td'), TYPE ),
                                                 ( SELECT    [@class] = 'cell_text', entities [text()] FOR XML PATH('td'), TYPE ),
                                                 ( SELECT    [@class] = 'cell_num', rows [text()] FOR XML PATH('td'), TYPE )
                                      FROM      ( SELECT TOP 3 dbtable = OBJECT_NAME(object_id), entities = COUNT(DISTINCT name), rows = COUNT(*)
                                                  FROM      sys.columns
                                                  GROUP BY  OBJECT_NAME(object_id)
                                                ) data                                   FOR XML PATH('tr'), TYPE
                                    ) 
                                FOR XML PATH('table'), TYPE
                              ) AS VARCHAR(MAX))
     
     Exec dbo.sp_send_dbmail @profile_name='MailForHr', 
    @recipients='[email protected]', 
    @subject=N'ddddd', 
    @body=@html,
    @body_format='HTML';这样写也是没有报错,但就是收到的邮件,点了没有反应
      

  11.   

    try
    window.open(URL,name=_blank,...)
      

  12.   

    试了一下,应该不是写法问题,应该是邮箱不支持javascript晕,那现在只能用<a></a>,,
    但现在不知<a>要怎么写