Использование набора Dataset для Microsoft
Когда мы используем SSRS для создания отчетов, мы можем использовать окно запроса в окне Dataset для создания пользовательских запросов. Но в локальных отчетах (.RDLC), когда мы хотим создавать отчеты, мы должны установить для Dataset заданный набор данных.
![введите описание изображения здесь]()
Проблема заключается в том, когда у нас есть 100 отчетов, у нас также должно быть 100 наборов данных. В настоящее время мы используем набор данных с этими полями (F1, F2, F3,..., F100) и перед привязкой наших данных к отчетам мы меняем имя столбцы данных. но его читаемость низкая.
Я хочу спросить, есть ли лучший способ решить эту проблему?
Спасибо
Ответы
Ответ 1
Лучшим решением является группировка наборов данных.
Вы можете группировать данные с помощью своего бизнеса. Например, POLICY.xsd, USER.xsd, INVOICE.xsd и добавьте в другой набор данных в файл xsd.
Например, в визуальной студии вы видите 10 файлов набора данных. Но каждый элемент имеет разные типы данных.
Второе обновление - вы лучше напишите t-sql. Когда вы вообще выберите свой столбец для аналогичного отчета, вы будете использовать одни и те же данные.
Например, отчет включает 5 колонок A1, A2, A3, A4, A5
B включают 6 столбцов A1, A2, A3, A4, A5, A6
для этого отчета вы будете использовать отчет отчета B
Ответ 2
Мне может понадобиться дополнительная информация, чтобы помочь - вы действительно говорите, что у вас есть Datasets с полями, помеченными как F1, F2, F3,... и что теперь вам нужно привязываться к фактическим таблицам с помеченными столбцами (например ) Id, CustType, IsActive,...?
Если это так, я бы предложил использовать Views, чтобы псевдоним каждого имени поля был F1, F2,... Это может звучать так же, как и исходная проблема, но все может быть автоматизировано.
Создание этих 100 представлений может быть достигнуто с помощью script. Этот script может быть создан путем запуска некоторого интеллектуального T-SQL, который получает данные схемы, хранящиеся в SQL Server, и выводит требуемый script.
Посмотрите Как получить имена столбцов из таблицы на SQL Server? для начала.
Вам, вероятно, потребуется использовать курсоры в вашем T-SQL для циклического преобразования данных схемы и вывода script для создания представлений.
Наконец, если вам нужно изменить каждый из ваших 100 отчетов SSRS таким же образом, не забудьте, что каждый из них хранится в языке определения отчетов (XML), чтобы вы могли написать небольшую утилиту, которая читает каждый XML файл и вносит необходимые изменения. Не забудьте сделать резервную копию этих файлов, прежде чем разрешить им новую утилиту.
Надеюсь, все это поможет, и ответ не наступил слишком поздно.
Ответ 3
Должен признаться, что я до конца не понимаю проблему с предоставленной информацией, но здесь решение, которое может принести вам огромную пользу.
Вы пытались создать свои отчеты из хранимых процедур? Таким образом, ваш файл RDLC не будет содержать запрос, вместо этого он будет искать определение запроса в хранимой процедуре и создает набор данных в файле RDLC. Затем во время выполнения вы выполняете хранимую процедуру в коде и передаете возвращенные данные в файл RDLC для выполнения.
Преимущества этого способа заключаются в том, что запросы инкапсулируются как объекты базы данных, вы не получаете миллион наборов данных в своем проекте, и вы можете отменить запрос из отчета, поэтому, если бы вы 6 версий одного и того же отчета, в которых все использовались одни и те же поля, но, например, используются разные предложения WHERE, вы можете использовать только один отчет (и вызывать соответствующий сохраненный процесс во время выполнения).
Ответ 4
Хотя было бы неплохо увидеть пример Минимальный, Полный и Подтверждаемый. Я также сделаю это.
Что вы можете сделать, так это создать таблицу в своем db, поместить необходимые вам данные с каждым DataSet
и прокрутить эти данные.
то есть.
ID............. Поля.......................................... тип_запроса.............. SQLQuery/StoredProcedure
1................ ProducID, ProductName............ 0............................... SP_GetBasicProductInfo
2............... OrderID, ProductId..................... 0.............................. SP_GetOrderIdsByProduct
3............... CustomerID, CustomerName.... 1.............................. Выберите CustomerID, CustomerName From Northwind.Customers
и др.
Таким образом, вы можете получить сопоставление полей и запрос sql.
Вы можете в конце передать эту информацию в свой Data Access Layer
, чтобы выполнить запрос и заполнить требуемый DataSet.
Вы можете попробовать преобразовать все в строку или даже использовать разделитель для каждого типа, например int|ProductID,string|ProductName