Capítulo 31: Contar artículos en EPLAN con C#
6 min de lectura
Parte XII: Master Data - Sección 22: Trabajar con artículos - Nivel: Intermedio
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
- LINQ (Capítulo 11)
- Master Data Basics
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
Para abrir la base de datos, usamos MDPartsManagement.
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 EPLAN
using (MDPartsDatabase db = pm.OpenDatabase())
{
// Aquí trabajamos
MessageBox.Show("DB Abierta");
} // Aquí se cierra sola
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
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
- Usa
MDPartsManagementpara abrir la DB. - Usa
usingpara asegurar el cierre. - Usa LINQ para obtener reportes instantáneos.
Conexiones
Capítulo anterior
Ver capítulos anteriores
Próximo capítulo
Ver capítulos siguientes
Leer es seguro. Escribir en la base de datos maestra requiere más cuidado.