Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EN WPF
Contenido
1.INTRODUCCIÓN. .................................................................................................................... 2
2.DESARROLLO........................................................................................................................... 2
2.1. BBDD SQLSERVER EN DOCKER. .................................................................................. 2
2.2. ACCESO A LA BASE DE DATOS CREADA................................................................. 3
2.3. BASE DE DATOS TestDB EN NUESTRO CONTENEDOR SQLSERVER DE DOCKER.
................................................................................................................................................... 4
2.4. CREACIÓN DEL PROYECTO WPF PARA LA REALIZACIÓN DE INFORMES. ........ 5
2.5. USO DE REPORTVIEWER EN WPF. ................................................................................ 9
2.6. CREACIÓN DEL INFORME.......................................................................................... 11
2.7. DISEÑO DEL INFORME. ............................................................................................... 17
1.Diseño de la tabla: ..................................................................................................... 18
2.Cuadro de texto:......................................................................................................... 18
3.Matriz: ............................................................................................................................. 19
4.Imágenes: ..................................................................................................................... 20
5.Diagrama de barras: ................................................................................................. 21
6. Lienzo del informe: .................................................................................................... 22
2.8. CRUD SQLSERVER. ....................................................................................................... 23
1.Código de la ventana que realiza las inserciones: .......................................... 24
2.Código de la ventana que muestra los datos( DataGrid): ............................ 26
3.Código de la ventana que elimina datos: .......................................................... 27
4.Código de la ventana que actualiza datos: ...................................................... 29
3.CONCLUSIÓN. ...................................................................................................................... 31
1
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
1.INTRODUCCIÓN.
Integrar ReportViewer en una aplicación de escritorio de WPF para mostrar informes de SQL
Server puede ser muy útil para proporcionar a los usuarios una vista clara y concisa de los datos
almacenados en la base de datos. El ReportViewer permite diseñar y visualizar informes de SQL
Server Reporting Services (SSRS) directamente en una aplicación de escritorio de WPF.
En esta tarea vamos a explicar como integraremos este elemento a nuestro proyecto WPF.
Trabajaremos con nuestra base de datos, instalada en nuestro contenedor de vps, de forma que
el informe que generaremos muestre datos relacionados con los elementos de nuestra base de
datos.
2.DESARROLLO.
2.1. BBDD SQLSERVER EN DOCKER.
Para instalar la base de datos SQLserver en Docker ejecutaremos el comando siguiente:
Este comando ejecuta un contenedor de Docker con una imagen de Microsoft SQL Server 2019.
Sus argumentos se definen de la forma siguiente:
Después de ejecutar este comando, el contenedor estará en ejecución y listo para recibir
conexiones de bases de datos. Para verificar que el contenedor está en ejecución, usaremos el
comando docker ps.
2
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
https://learn.microsoft.com/es-es/sql/ssms/download-sql-server-management-studio-
ssms?view=sql-server-ver15
3
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Este comando se usa para conectarse a una instancia local de Microsoft SQL Server mediante la
autenticación de SQL Server con la herramienta de línea de comandos de SQL Server sqlcmd.
• La opción "-S" especifica el nombre del servidor al que conectarse, en este caso
"localhost".
• La opción "-U" especifica el inicio de sesión de SQL Server que se utilizará, en este caso,
"SA".
• La opción "-P" especifica la contraseña para el inicio de sesión de SQL Server, que debe
reemplazarse con una contraseña segura de su elección.
• "<YourNewStrong@Passw0rd>" es donde vamos a insertar nuestra contraseña.
El comando CREATE DATABASE TestDB; crea una nueva base de datos llamada TestDB en la
instancia actual de SQL Server.
El comando SELECT NAME from sys.databases; enumera todas las bases de datos del servidor.
Para crear la tabla STOCK con cuatro campos correspondientes a un ID de tipo entero, a una
descripción de tipo cadena de caracteres, a la cantidad de unidades también de tipo entero y el
precio de venta como un valor de tipo decimal, ejecutaremos:
CREATE TABLE STOCK (id INT, descripcion NVARCHAR(50), unidades INT, precioventa FLOAT);
4
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Vamos a comprobar el contenido de nuestra tabla con SELECT * FROM STOCK; seguido de GO.
Ahora mismo nuestra tabla esta vacía, por lo que insertaremos tres registros con las sentencias
que en la imagen se marcan seguidas de GO, para que se ejecuten:
Al igual que antes haremos SELECT * FROM STOCK; GO para ver los datos insertados en la tabal
STOCK:
5
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Pulsamos en End Tasks para evitar que la ventana se quede cargando hasta el día del fin del
mundo:
6
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Una vez comienza la instalación solo tendremos que esperar que esta termine:
7
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
El proceso que seguiremos para ello será hacer click en el HerramientasAdministrar paquetes
NuGet Consola del administrador de paquetes:
NuGet\Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -
Version 150.1537.0
8
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
9
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
La referencia será:
Microsoft.ReportViewer.WinForms
xmlns:rv="clr-
namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
Para eliminar el error solo tendremos que ejecutar la aplicación. Tras esto veremos que la línea
que nos mostraba errores ha desaparecido:
10
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
11
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
12
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Además, guardaremos la cadena de conexión que usaremos en nuestro código para poder
acceder y operar con los datos de la base de datos:
13
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
En nuestra base de datos esta la tabla STOCK que habíamos creado, por lo que podremos ver los
campos de la misma:
14
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Ahí podremos escoger las operaciones que queremos realizar por campos. Como podemos ver
en la primera imagen, tenemos las operaciones suma y media de los campos id, unidades y
precioventa. Esto se hace escogiendo la función en la flecha del campo que hemos arrastrado:
En este punto, escogeremos el diseño y el informe se abrirá. Con la estructura que se muestra a
continuación, tras finalizar la configuración del informe:
15
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Para que nuestro informe tenga funcionalidad habrá que añadir al archivo .cs el código
siguiente:
dataset.BeginInit();
reportDataSource1.Name = "DataSet1";
//Name of the report dataset in our .RDLC file
reportDataSource1.Value = dataset.STOCK;
this._reportViewer.LocalReport.DataSources.Add(reportDataSource1);
this._reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";
dataset.EndInit();
accountsTableAdapter.ClearBeforeFill = true;
accountsTableAdapter.Fill(dataset.STOCK);
_reportViewer.RefreshReport();
_isReportViewerLoaded = true;
}
}
16
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
La flecha nos marca el cuadro de propiedades desde donde configuraremos el diseño de cada
elemento:
17
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
1.Diseño de la tabla:
Arrastramos la tabla inicial hacia el centro y aplicamos las propiedades que queramos para
obtener nuestro diseño.
2.Cuadro de texto:
Las lechuguitas, son dos imágenes que hemos insertado y que explicaremos en otro punto su
inserción.
18
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
3.Matriz:
Para configurar los datos que queremos que muestren esos campos, hay una función que
podemos insertar, al hacer click en el campo.
19
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
4.Imágenes:
Al arrastrar un elemento imagen podremos importar una dentro de el mismo.
20
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Tras abrir la imagen aceptamos y podremos ver la imagen que hayamos insertado. En nuestro
caso son 4:
5.Diagrama de barras:
21
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
En el diagrama hemos asignado los artículos y sus cantidades. Además, hemos cambiado su
estética en el panel de propiedades del gráfico, tal como hemos hecho con el resto de
elementos.
22
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
En el archivo App.conf tendremos que añadir la línea siguiente, para que realice la conexión con
la base de datos:
En cada botón llamaremos a una ventana para que realice las funciones del CRUD y visibilice el
informe.
23
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
24
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
El código anterior se corresponde con un manejador de eventos que se ejecuta cuando se hace
clic en un botón llamado "Inserta". La función del botón es insertar un nuevo registro en nuestra
una tabla de la base de datos.
Desglosamos el código:
2. Inicializa una cadena vacía que se utilizará más adelante para construir la consulta SQL.
string CmdString = string.Empty
3. La siguiente sección de código valida que los campos de entrada no estén vacíos. Si se
encuentra un campo vacío, se muestra un mensaje de error y la función devuelve.
4. La siguiente sección de código valida que los campos numéricos contengan valores válidos.
Si se encuentra un valor no numérico, se muestra un mensaje de error y la función devuelve.
5. La siguiente sección de código verifica si el ID del nuevo registro ya existe en la base de datos.
Si el ID ya existe, se muestra un mensaje de error y la función devuelve.
25
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
26
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Desglosamos el código:
1. El método primero llama al constructor de la clase "InitializeComponent", que genera
automáticamente Visual Studio y se utiliza para inicializar los componentes visuales del
formulario o ventana actual. El mismo, llama a otro método llamado "FillDataGrid" que
realiza la conexión a la base de datos y ejecuta una consulta SQL para recuperar los datos de
la tabla "STOCK".
2. El método utiliza la clase "ConfigurationManager" para obtener la cadena de conexión de la
base de datos almacenada en el archivo de configuración del proyecto. Luego, utiliza la clase
"SqlConnection" para conectarse a la base de datos y la clase "SqlCommand" para crear un
comando que ejecuta la consulta SQL.
3. La clase "SqlDataAdapter" se utiliza para llenar un objeto DataTable con los datos
recuperados de la base de datos. Por último, el método establece el origen de datos del
control "stock" en el objeto DataTable recién llenado.
Básicamente, conectamos y recuperamos los datos de nuestra base de datos SQL Server y los
mostrarmos en un control DataGridView.
27
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
El código del evento que se produce al pulsar el botón BORRAR PRODUCTO es el siguiente:
Desglosamos el código:
Este código es un método de evento asociado al botón que realiza la acción de borrar.
Este método se encarga de borrar un registro de la tabla "STOCK" en nuestra base de datos SQL
Server, TestDB.
2. Luego, se crea una cadena de conexión a la base de datos y una cadena de comando SQL para
borrar un registro de la tabla "STOCK" que tenga un valor de "ID" igual a la variable "id"
obtenida anteriormente.
28
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
4. Se ejecuta la consulta SQL con el método ExecuteNonQuery, que devuelve el número de filas
afectadas por la consulta. Si el número de filas afectadas es mayor que cero, se muestra un
mensaje de éxito y se borra el contenido del campo "txID". Si el número de filas afectadas es
cero, significa que no se encontró ningún registro con el ID ingresado, y se muestra un
mensaje de error. Por último, se cierra la conexión a la base de datos.
Esta es la ultima ventana del proyecto que vamos a explicar, pues la ventana que genera el
informe ha sido desglosada a lo largo de toda la documentación de la tarea.
29
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
Por lo tanto, vamos a mostrar el código del archivo ACTUALIZA.xaml.cs de nuestra venta.
Desglosamos el código:
Este código genera el evento para el botón llamado ACTU, que realiza una actualización en
nuestra base de datos SQL Server.
2. A continuación, se realiza otra validación para asegurarse de que los campos numéricos
contengan valores válidos. Si alguno de los campos no contiene un valor numérico válido, se
muestra un mensaje de error y se borran los valores ingresados en los campos de entrada.
30
UD4 – PRÁCTICA 1 – INFORMES RDLC EN WPF
3. Después, la función establece una conexión con la base de datos y consulta si el ID del registro
a actualizar existe en la tabla STOCK. Si el ID existe, se actualiza el registro con los valores
ingresados en los campos de entrada y se muestra un mensaje de éxito. Si el ID no existe, se
muestra un mensaje de error. Finalmente, la función cierra la conexión con la base de datos
y borra los valores ingresados en los campos de entrada.
3.CONCLUSIÓN.
Una aplicación que genera informes y realiza operaciones CRUD en SQL Server con Docker en
WPF, que es una combinación de tecnologías que permiten crear aplicaciones de escritorio
altamente personalizables y escalables con una base de datos segura y flexible, tiene las
siguientes ventajas:
El uso de SQL Server como base de datos permite una gestión eficiente de los datos, lo que
resulta especialmente importante en aplicaciones que implican operaciones CRUD. Además, la
capacidad de generar informes puede ser muy útil para analizar y visualizar los datos de una
manera clara y concisa.
En resumen, la combinación de Docker, SQL Server y WPF permite crear aplicaciones altamente
personalizables, escalables y seguras, lo que las hace ideales para entornos empresariales o de
producción.
31