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 using para 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 MDPartsManagement para abrir la DB.
  • Usa using para 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.