c# - ejemplo - Uso de Dataset para informes de Microsoft
sqldataadapter fill (4)
Cuando usamos SSRS para crear informes, podemos usar el cuadro de consulta en la ventana Conjunto de datos para crear consultas personalizadas. Pero en los informes locales (.RDLC), cuando queremos crear informes, debemos establecer un conjunto de datos diseñado para el informe.
El problema es que cuando tenemos 100 informes, también deberíamos tener 100 conjuntos de datos. Actualmente utilizamos un conjunto de datos con estos campos (F1, F2, F3, ..., F100) y antes de vincular nuestros datos a los informes, cambiamos el nombre de las columnas de datos. . pero su legibilidad es baja.
Quiero preguntar que hay una mejor manera de resolver este problema?
Gracias
Aunque sería bueno ver un ejemplo Mínimo, Completo y Verificable , también le daré una oportunidad.
Lo que puede hacer es crear una tabla en su base de datos, poner los datos que necesita relacionados con cada conjunto de datos y recorrer esos datos.
es decir
ID ............. Campos ................................... ....... QueryType .............. SqlQuery / StoredProcedure
1 ............... ProducID, ProductName ............ 0 .................. ............ SP_GetBasicProductInfo
2 ............... OrderID, ProductId ..................... 0 ......... ..................... SP_GetOrderIdsByProduct
3 ............... CustomerID, CustomerName .... 1 .......................... .... Seleccione CustomerID, CustomerName From Northwind.Customers
etc.
De esta manera, puede hacer que los Campos se asignen y que se ejecute la consulta SQL. Al final, puede pasar esta información a su Data Access Layer
para ejecutar la consulta y completar el conjunto de datos que necesita.
Puede intentar convertir todo en cadena o incluso utilizar un delimitador para cada tipo, como int|ProductID,string|ProductName
Debo confesar que no entiendo completamente el problema con la información proporcionada hasta ahora, pero aquí hay una solución que bien podría ser un gran beneficio para usted.
¿Ha intentado crear sus informes a partir de procedimientos almacenados? Al hacer las cosas de esta manera, su archivo RDLC no contendrá una consulta, en su lugar, mira la definición de la consulta dentro del procedimiento almacenado y crea un conjunto de datos dentro del archivo RDLC. Luego, en tiempo de ejecución, ejecuta el procedimiento almacenado en el código y pasa los datos devueltos al archivo RDLC para su ejecución.
Las ventajas de hacerlo de esta manera son que las consultas se encapsulan como objetos de la base de datos, no termina con un millón de conjuntos de datos en su proyecto y puede separar la consulta del informe, por lo que si tiene 6 versiones de En el mismo informe, todos utilizaron los mismos campos, pero utilizaron diferentes cláusulas WHERE, por ejemplo, podría usar solo 1 informe (y llamar al proceso almacenado relevante en tiempo de ejecución).
Es la mejor solución agrupando los conjuntos de datos. Puede agrupar conjuntos de datos a evitar por su negocio. Por ejemplo, POLICY.xsd, USER.xsd, INVOICE.xsd y agregar a otro conjunto de datos en el archivo xsd.
Por ejemplo, en Visual Studio puedes ver 10 archivos de datos. Pero cada elemento tiene diferentes datos.
La segunda actualización es que escribirá mejor t-sql. Cuando generalmente selecciona su columna para un informe similar, usará los mismos datos.
Por ejemplo, un informe incluye 5 columnas A1, A2, A3, A4, A5 B informe incluye 6 columnas A1, A2, A3, A4, A5, A6
Para estos informes se utilizará el informe de datos de B
Es posible que necesite más información para ayudar. ¿Está realmente diciendo que tiene conjuntos de datos con campos etiquetados F1, F2, F3, ... y que ahora necesita enlazar a las tablas reales con columnas etiquetadas (por ejemplo) Id, CustType, IsActive, ...?
Si este es el caso, sugeriría usar Vistas que alias a cada nombre de campo como F1, F2, ... Esto puede parecer tanto trabajo como su problema original, pero todo puede ser automatizado.
La creación de estas 100 vistas se puede lograr a través de un script. Este script puede producirse ejecutando algunos T-SQL inteligentes que obtienen los datos de esquema almacenados en SQL Server y generan el script requerido.
Eche un vistazo a ¿Cómo puedo obtener nombres de columna de una tabla en SQL Server? Para empezar.
Probablemente necesitará usar cursores en su T-SQL para recorrer los datos del esquema y generar el script para crear las vistas.
Finalmente, si necesita modificar cada uno de sus 100 informes SSRS de la misma manera, entonces no olvide que cada uno está almacenado en el lenguaje de definición de informes (XML), por lo que puede escribir una pequeña utilidad que lea cada archivo XML y haga Los cambios necesarios. No olvide hacer una copia de seguridad de esos archivos antes de dejar que una nueva utilidad se pierda en ellos.
Espero que todo esto ayude y que la respuesta no haya llegado demasiado tarde.