Ir al contenido

Capítulo 31: Contar artículos

Parte XII: Master Data - Sección 22: Trabajar con artículos - Nivel: Intermedio


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

  • LINQ (Capítulo 11)
  • Master Data Basics

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.

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

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);
}
}
}

  • Usa MDPartsManagement para abrir la DB.
  • Usa using para asegurar el cierre.
  • Usa LINQ para obtener reportes instantáneos.

Ver capítulos anteriores

Ver capítulos siguientes

Leer es seguro. Escribir en la base de datos maestra requiere más cuidado.