Capítulo 31: Contar artículos
Capítulo 31: Contar artículos
Sección titulada «Capítulo 31: Contar artículos»Parte XII: Master Data - Sección 22: Trabajar con artículos - Nivel: Intermedio
Objetivos de aprendizaje
Sección titulada «Objetivos de aprendizaje»Al finalizar este capítulo serás capaz de:
- Conectar con la base de datos de artículos de EPLAN (
MDPartsManagement) - Usar el patrón
usingpara conexiones seguras a bases de datos - Filtrar y contar artículos usando LINQ
Requisitos previos
Sección titulada «Requisitos previos»- LINQ (Capítulo 11)
- Master Data Basics
Introducción: La Parte 2 de EPLAN
Sección titulada «Introducción: La Parte 2 de EPLAN»Hasta ahora todo era sobre el Proyecto (.elk). Pero EPLAN tiene otra mitad vital: La Base de Datos de Artículos (Parts Database).
Como scripter, puedes querer:
- Contar cuántos artículos hay de un fabricante.
- Buscar artículos obsoletos.
- Modificar descripciones masivamente.
1. Clases MDPartsManagement y MDPartsDatabase
Sección titulada «1. Clases MDPartsManagement y MDPartsDatabase»Para abrir la base de datos, usamos MDPartsManagement.
1.1 Conexión Segura (using)
Sección titulada «1.1 Conexión Segura (using)»Es crítico cerrar la conexión a la base de datos cuando termines. Si no, EPLAN puede bloquearse o corromper datos.
El bloque using se encarga de esto automáticamente.
using Eplan.EplApi.MasterData;
MDPartsManagement pm = new MDPartsManagement();
// Abre la DB configurada actualmente en EPLANusing (MDPartsDatabase db = pm.OpenDatabase()){ // Aquí trabajamos MessageBox.Show("DB Abierta");} // Aquí se cierra sola2. Consultas con LINQ
Sección titulada «2. Consultas con LINQ»Para obtener los artículos usamos el método db.GetParts(). Pasándole un filtro vacío (new MDPartsDatabaseItemPropertyList()) nos devuelve un array con todos los artículos de la BD. Sobre este array, LINQ es perfecto.
MDPart[] parts = db.GetParts(new MDPartsDatabaseItemPropertyList());
// ¿Cuántos artículos de SIEMENS tengo (leyendo desde Properties)?int cantidad = parts.Count(p => p.Properties.ARTICLE_MANUFACTURER.ToString() == "SIEMENS");3. Ejemplo Práctico: Estadísticas de Artículos
Sección titulada «3. Ejemplo Práctico: Estadísticas de Artículos»Basado en EPLAN-Scripting-4.0/17_Parts/01_CountParts.cs:
using System.Windows.Forms;using System.Linq; // Necesario para Count()using Eplan.EplApi.MasterData;using Eplan.EplApi.Scripting;
public class ContarArticulos{ [Start] public void Function() { MDPartsManagement pm = new MDPartsManagement();
try { using (MDPartsDatabase db = pm.OpenDatabase()) { MDPart[] parts = db.GetParts(new MDPartsDatabaseItemPropertyList()); int total = parts.Length; int cables = parts.Count(p => p.ProductGroup == MDPartsDatabaseItem.Enums.ProductGroup.ElectricalCableConnection);
string mensaje = string.Format( "Estadísticas de la Base de Datos:\n\n" + "Total de artículos: {0}\n" + "Total de cables: {1}", total, cables);
MessageBox.Show(mensaje); } } catch (System.Exception ex) { MessageBox.Show("Error al leer base de datos: " + ex.Message); } }}Resumen
Sección titulada «Resumen»- Usa
MDPartsManagementpara abrir la DB. - Usa
usingpara asegurar el cierre. - Usa LINQ para obtener reportes instantáneos.
Conexiones
Sección titulada «Conexiones»Capítulo anterior
Sección titulada «Capítulo anterior»Ver capítulos anteriores
Próximo capítulo
Sección titulada «Próximo capítulo»Ver capítulos siguientes
Leer es seguro. Escribir en la base de datos maestra requiere más cuidado.