.Net ile Ax tablolarına erişmek ve formda göstermek


Konu konuyu açıyor derler ya, bir önceki yazıdan sonra bu yazıyı yazmak uygun geldi. Zira soruda Ax verisine ulaşmak, yeni kayıt ya da güncelleme sorulmakta idi. Bu yazımızda önce veriye bir erişelim, bir sonrakinde de update işlemine bakarız.

Visual studio’yu açıp Yeni Proje \ Windows Forms Application seçelim. Projemizin adı bcTest olabilir. Projemizin referanslarına Microsoft.Dynamics.BusinessConnectorNet’i eklememiz gerekecektir. Bu DLL Ax Client’ınızın kurulu olduğu klasörde Bin’in içindedir. (Örneğin benim bilgisayarımda C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\ Microsoft.Dynamics.BusinessConnectorNet.DLL olarak bulunuyor.) Projenizin References düğümüne sağ tıklayıp Add Reference seçin ve açılan pencereden BusinessConnectorNet.DLL’i ekleyin.

Artık kod yazmaya hazırız. Projenizde yer alan formunuza bir dataGridView nesnesi ekleyin.

Formunuzun kod sayfasını (Form1.cs) alttaki gibi düzenleyin.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Dynamics.BusinessConnectorNet;

namespace BCTest
{
    public partial class Form1 : Form
    {
        Axapta axapta;
        AxaptaRecord axRecord;
        string accountNum, name;
        string query;
        DataTable dt;
        DataRow dr;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.getDataFromAx();
        }
        private void getDataFromAx()
        {
            axapta = new Axapta();
            try
            {
                axapta.Logon("DEMO", "", "", "");

                //Logon metodu 4 parametre alır.
                //Bunlar Şirket hesabı
                //Dil, AOS ve Configürasyondur.
                //Hepsi boş bırakılırsa standart konfigüsaryondaki bağlantı bilgileri esas alınacaktır.

                axRecord = axapta.CreateAxaptaRecord("CUSTTABLE");
                query = "SELECT * FROM %1 WHERE %1.ACCOUNTNUM";
                axRecord.ExecuteStmt(query);
                dt = this.CustTableDataTable();

                while (axRecord.Found)
                {
                    accountNum = axRecord.get_Field("ACCOUNTNUM").ToString();
                    name = axRecord.get_Field("NAME").ToString();
                    dr = dt.NewRow();
                    dr["AccountNum"] = accountNum;
                    dr["Name"] = name;
                    dt.Rows.Add(dr);
                    axRecord.Next();

                }
                dataGridView1.DataSource = dt;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            axapta.Dispose();
            axapta.Logoff();

        }
        public DataTable CustTableDataTable()
        {
            DataTable dataTableLocal = new DataTable();
            DataColumn accountNumDc = new DataColumn("AccountNum");
            DataColumn nameDc = new DataColumn("Name");
            dataTableLocal.Columns.Add(accountNumDc);
            dataTableLocal.Columns.Add(nameDc);

            return dataTableLocal;
        }

    }
}

Solution’u derleyip çalıştırdığınızda sevimli ve minicik bir formunuz ve içinde AX’tan gelen datacıklar olacak.

Emre TÜFEKÇİ
İstanbul

www.atol.com.tr

One thought on “.Net ile Ax tablolarına erişmek ve formda göstermek”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s