|
15.06.2010, 00:05 | #1 |
Участник
|
Все о Microsoft Dynamics CRM: Полезные SQL-вставки для использования в отчетах MS CRM
Источник: http://ms-dynamics-crm.com.ua/2010/0...ets-for-mscrm/
============== На досуге занимался отчетами и собрал несколько полезных примеров кода на T-SQL, которые можно использовать в отчетах для Microsoft Dynamics CRM 4.0. 1. Получение дня недели CASE DATEDIFF(DAY,0, createdon)%7WHEN 0 THEN 'Понедельник'WHEN 1 THEN 'Вторник'WHEN 2 THEN 'Среда'WHEN 3 THEN 'Четверг'WHEN 4 THEN 'Пятница'WHEN 5 THEN 'Суббота'WHEN 6 THEN 'Воскресенье'END as 'Дата, день недели'2. Функция для получения списка фамилий контактов через точку с запятой. Параметры: guid организации. Основную работу выполняет стандартная функция COALESCE, которая позволяет объединить строки через разделитель. CREATE FUNCTION [dbo].[GetContactList](@AccountID varchar(40))RETURNS varchar(max) ASBEGINDECLARE @StringList varchar(max)SELECT @StringList = COALESCE(@StringList + '; ', '') + c.fullnamefrom account aleft join contact c on c.parentcustomerid = @AccountIDIF @StringList IS NULLSET @StringList = 'Нет контактов'RETURN @StringListENDПример вызова: [DB_Name].[dbo].[GetContactList](accountid) as 'Контакты'Результат : Иванов; Петров; Сидоров 3. Конвертирование даты в формате дд.мм.гггг 3.1 T-SQL(CONVERT(varchar(10),createdon, 104)3.2 в SQL Server Business Intelligence Development Studio: Format(Parameters!startdate.Value,»dd.MM.yyyy») 4. Форматирование поля типа money, float с разрядами Format(Sum(Fields!Сумма.Value),»### ### ##0.0#») Прошлая небольшая подборка здесь: Полезные SQL-функции для использования в отчетах MS CRM Источник: http://ms-dynamics-crm.com.ua/2010/0...ets-for-mscrm/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
15.06.2010, 09:59 | #2 |
Moderator
|
Дети! Никогда так не делайте! Для получение форматов дат, времени, чисел и пр. используйте встроенную функцию fn_GetFormatStrings
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: fatty_bu (1). |
15.06.2010, 12:53 | #3 |
Kostya Afendikov
|
|
|
05.12.2012, 10:51 | #4 |
Участник
|
Цитата:
Я извратился и написал кейс для нужного мне запроса (уверен, есть бест-практис вариант, так сказать): Код: case LEN (Convert(varchar(8), DAY(date))) when 1 then '0' else '' end + Convert(varchar(8), DAY(date)) +'.' + case LEN (Convert(varchar(8), MONTH(date))) when 1 then '0' else '' end + Convert(varchar(8), MONTH(date)) + '.'+ Convert(varchar(8), YEAR(date)) |
|
05.12.2012, 11:28 | #5 |
Чайный пьяница
|
Однозначно лучше это делать в отчёте, потому как если это будете делать в запросе, например, если будет инлайн сортировка - она будет работать некорректно.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
15.06.2010, 13:07 | #6 |
Moderator
|
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
05.12.2012, 12:16 | #7 |
Moderator
|
Как это обычно делают:
1. Создайте отдельный датасет для получения нужных вам форматов. В стандартных отчетах он называется DSFormatStrings. Обычно он состоит из запроса: X++: select * from dbo.fn_GetFormatStrings() 3. В настройке "Default Values" параметра укажите Get values from a query, укажите датасет DSFormatStrings и нужное поле со строкой формата. 4. В свойствах каждой ячейки, которую нужно отформатировать на вкладке Number (как не странно) выберите формат Custom и в выражении укажите из какого параметра взять строку формата: X++: Parameters!rmCurrencyFormat.Value
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
|