Subiekt GT – C# – zestawienie COM

Projekt zestawienia COM rozpoczynamy od utworzenia nowej biblioteki klas. Wybieramy docelową strukturę jako .NET Framework 2.0 i tworzymy nowy projekt.

Po utworzeniu projektu wchodzimy w jego właściwości i na zakładce Aplikacja > Informacje o zestawie i zaznaczamy opcję Ustaw zestaw jako widoczny dla modelu COM. Następnie na zakładce Kompilacja zaznaczamy opcję Rejestruj w usłudze międzyoperacyjnej modelu COM. Zmiany zapisujemy i przechodzimy do dodawania odwołań.

Do odwołań projektu dodajemy dwie biblioteki:

  • ADODB – biblioteka COM o nazwie: Microsoft ActiveX Data Objects 6.0 BackCompat Library
  • ZestManLib – biblioteka COM o nazwie: InsERT GT ZestMan 1.0 Type Library

Główna klasa naszego zestawienia COM implementuje metody interfejsu IZestawienieWlasne. Do naszej klasy dodajemy metody Wykonaj, Nazwa, Opis oraz Programy. Metoda Wykonaj() otrzymuje w klasie IZestawienieComDane zestaw danych przekazujący nam informację o magazynie, operatorze, dacie blokady okresu oraz aktywne połączenie do bazy danych. Metody Nazwa oraz Opis zwracają teksty które zostaną wyświetlone na liście zestawień. Metoda Programy zwraca wartość numeryczną, dla jakiej aplikacji (1 – Subiekt GT) dostępne jest zestawienie.

using ZestManLib;

namespace PIMCoreInsERTGT
{

    // run CMD as Administrator
    // cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
    // regasm.exe /c <folder>\<name>.dll
    public class Main : IZestawienieWlasne
    {
        public void Wykonaj(IZestawienieComDane pZestawienieComDane)
        {          
            PIM PIMForm = new PIM(pZestawienieComDane);
            PIMForm.Show();
        }

        public string Nazwa
        {
            get { return "PIM Core - opisy produktów"; }
        }

        public string Opis
        {
            get { return "Manager opisów produktowych"; }
        }

        public int Programy
        {
            get { return 1; }
        }
    }
}

Do zestawienia możemy dodać poprzez kreator nowy formularz który będzie wywoływany podczas uruchomienia zestawienia. W oknie na podstawie uzyskanych danych możemy przeprowadzać operacje na bazie danych.

W celu wyświetlenia w nowym oknie danych z Subiekta GT wystarczy rozszerzyć klasę formularza o połączenie z bazą danych i wykonać zapytanie. W przykładzie występuje zapytanie o jedną nazwę aktywnego towaru, która przekazywana jest do kontroli tekstowej.

using System;
using System.Data.SqlClient;
using System.Windows.Forms;
using ZestManLib;

namespace PIMCoreInsERTGT
{
    public partial class PIM : Form
    {
        public PIM(IZestawienieComDane pZestawienieComDane)
        {
            InitializeComponent();
            txt_DatabaseVersion.Text = pZestawienieComDane.WersjaBazyDanych.ToString();

            try
            {
                using (SqlConnection conn = (SqlConnection)pZestawienieComDane.PolaczenieAdoNet)
                {
                    string queryString = "SELECT TOP 1 * FROM tw__Towar WHERE tw_Zablokowany = 0;";
                    SqlCommand oCmd = new SqlCommand(queryString, conn);
                    using (SqlDataReader oReader = oCmd.ExecuteReader())
                    {
                        while (oReader.Read())
                        {
                            txt_AdvanceInfo.Text = oReader["tw_Nazwa"].ToString();
                        }
                    }
                }
            } catch (Exception e)
            {
                MessageBox.Show(e.Message.ToString(), "Błąd wykonywania aplikacji");
            }
            
        }
    }

}

W przypadku instalacji zestawienia na maszynie na której nie kompilowało się kodu należy zarejestrować naszą bibliotekę:

run CMD as Administrator
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
regasm.exe /c <folder>\<name>.dll