Arhn - архитектура программирования

SSRS 2017 Откройте электронную почту Outlook с несколькими адресами электронной почты, щелкнув поле отчета.

У меня возникли проблемы с добавлением более одного адреса электронной почты в электронное письмо Outlook. Я установил поле Action Go to URL Text Box Properties в отчете следующим образом:

="javascript:void(window.open('mailto:" + First(Fields!SUPP_EMAIL.Value, "SUPP_Email")+"'))"

Набор данных фильтруется в соответствии с параметрами в основной таблице. Я пробовал несколько способов получить более одного адреса электронной почты в окне электронной почты, но каждый раз я получаю только первый в списке, что имеет смысл, поскольку функция говорит «Первый!» Я выбрал предложение javascript из другого сообщения на MSDN от пользователя, который утверждал, что с помощью этого решения они смогли получить все адреса из отфильтрованного набора данных. Идея состоит в том, что после того, как отчет был отфильтрован, пользователь может щелкнуть поле/поле, обозначенное выражением «Перейти к URL-адресу», и откроется окно электронной почты Outlook со всеми адресами электронной почты в отфильтрованном списке в поле «Кому». Если у кого-то есть предложения, буду премного благодарен.


  • Не могли бы вы опубликовать SQL для отчета? Существует способ объединить значения одного столбца в одну строку. 07.11.2020
  • Привет, sql для адресов электронной почты довольно много, и я надеюсь, что не слишком упрощенно, ВЫБЕРИТЕ lasps.LA_SERVICE_PROVIDER_ID, lasps.PROVIDER_EMAIL FROM la_service_provider_service lasps 09.11.2020

Ответы:


1

Вы можете объединить значения в источнике отчета.

Пример SQL:

WITH
la_service_provider_service
AS
(
   SELECT tbl.* FROM (VALUES
    ( 1, '[email protected]')
   , ( 1, '[email protected]')
   , ( 1, '[email protected]')
   , ( 2, '[email protected]')
   , ( 2, '[email protected]')
   , ( 2, '[email protected]')
   , ( 2, '[email protected]')
   ) tbl ([LA_SERVICE_PROVIDER_ID], [PROVIDER_EMAIL]) 
)
SELECT 
    [lasps].[LA_SERVICE_PROVIDER_ID]
   , [lasps].[PROVIDER_EMAIL]
   , [ALL_PROVIDER_EMAILS] = 
     STUFF( (SELECT '; '+ [PROVIDER_EMAIL] 
           FROM [la_service_provider_service] AS [lasps2]
           WHERE [lasps2].[LA_SERVICE_PROVIDER_ID] = [lasps].[LA_SERVICE_PROVIDER_ID]
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(2000)')
        ,1,2,'')
FROM 
   [la_service_provider_service] AS [lasps];

Результаты:

введите здесь описание изображения

09.11.2020

2

В зависимости от того, сколько у вас адресов электронной почты, вы можете достичь предела. Смотрите этот ответ для более подробной информации об этом....

Отправка электронной почты нескольким получателям с помощью html Mailto: не работает

Однако, если ваш набор данных довольно мал, вы можете сделать это....

Создайте новый параметр (например, pEmail) и сделайте его многозначным. Мы скроем этот параметр позже...

Затем укажите Доступные значения и Значение по умолчанию для параметра в ваш основной набор данных и используйте поле SUPP_EMAIL в качестве значения.

В вашем URL-выражении используйте следующее

="javascript:void(window.open('mailto:" 
  + JOIN(Parameters!pEmail.Value, ";")
  + "'))"

Как только он заработает, вы можете установить параметр скрытым.

Я использовал ; в качестве разделителя, как вы сказали, это было для Outlook. Имейте в виду, что Outlook почти уникален в этом отношении, и большинство почтовых клиентов используют запятую, а не точку с запятой.

С учетом всего сказанного проще сделать это на SQL и создать результирующий набор из одной строки, содержащий созданный URL-адрес, готовый для использования в отчете.

06.11.2020
  • Привет, Алан! Большое спасибо за ваш ответ, так как он решил проблему, с которой я столкнулся. Теперь мне просто нужно разработать способ обойти ограничение на количество адресов электронной почты, которые вы можете иметь в поле «Кому». Пользователь может фильтровать вывод, чтобы использовать меньшие наборы данных, но я знаю, что в какой-то момент они вернутся и попросят вывести все! Со временем я изучу, как мы могли бы использовать Группы. К сожалению, поскольку все адреса электронной почты являются внешними, это может оказаться невозможным. 09.11.2020
  • Я не уверен, что вы сможете побить этот предел. Возможно, у вас может быть текстовое поле, содержащее все адреса электронной почты, разделенные точкой с запятой, и попросить пользователей скопировать его в список получателей электронной почты вручную. Если вы довольны тем, что первоначальный ответ решил вашу проблему, не могли бы вы пометить ответ как принятый. Спасибо. 09.11.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..