.Net kullanılarak Ax içinde kayıt oluşturmak mümkün mü

Ali Ak beyin sorusu üzerine:
“Sanırım konu Dynamics Ax AIF ile ilgili ama dışarıdan c# ile yazılan bir exe ile Dynamics Ax’ta satınalma siparişi açabilir miyiz veya satınalma kabulu yapabilir miyiz?”
Cevap en genel anlamda evet. Yöntem olarak isterseniz AIF kullanabileceğiniz gibi daha basit olarak .Net Business Connector de kullanabilirsiniz. AIF XML tabanlı bir veri transferi platformudur ve arka planda yine .Net Business Connector kullanır.

Alttaki çok basit kod ile .NET ile Ax arasındaki ilişkiyi anlamak mümkün olacaktır. Daha detaylı bilgi için ilk fırsatta bir makale yazacağım.

Okumaya devam et

SQL Komutları Giriş – SQL Statements Intro

Bilgi ve önemli uyarı : Her ne kadar Dynamics AX ile çalışırken veri tabanı işlemlerini AX’a bıraksak da, upgrade,  entegrasyon gibi nedenlerle SQL işlemleri de yapmamız gerekebilir. Bu işlem için yardımcı olabilecek komutları sizlerle paylaşmak istedim.

Bu kategoride SQL işlemlerini inceleyeceğiz. Dynamics AX tablolarına müdahele  etmek için bu kodları kullanmak sisteminizi tamamen çalışmaz hale getirebilir. Bu kategorideki kod örneklerini kullanmanız halinde oluşabilecek hatalar tamamen sizin sorumluluğnuzdadır.

Bazı işlemleri SQL üzerinden yapmayı istememizin en temel nedeni performanstır. Zira bazı sorgular Ax aracılığı ile yapılmak yerine SQL üzerinden yapılırsa çok daha hızlı sonuç alınabilmektedir. Yine de ne yaptığınızdan emin değilseniz SQL’i kullanmayın.

Bildiğiniz üzere Dynamics Ax veri tabanı olarak  SQL Server ya da Oracle kullanabilmektedir. Ancak Oracle desteğinin AX 6.0 (ya da 2012) versiyonunda sona ereceği bildirilmişti. (İlgili makale için tıklayınız.) Biz de gerektiğinde SQL Server’da nasıl sorgu cümleciği yazabileceğimizi inceleyeceğiz. Konu ile ilgili en güzel kaynaklardan birisi kesinlikle www.w3Schools.com‘dur. Bu siteyi favorilerinize eklemenizi tavsiye ederim.

Okumaya devam et

Query nesneleri (Queries)-3 : Inner Join, Outer Join, Exists Join, NotExists Join

Bu seride Query nesneleri ile ilgili paylaşmak istediğim son konu join kavramlarıdır. Bu konunun başlangıcı için giriş makalesini ve sıralama, gruplama makalesini incelebilirsiniz.

Alttaki kodları incelediğinizde query nesnelerini kullanırken kodun son derece modüler olduğunu farkedebilirsiniz. Bu sayede, örneğin, kullanıcıdan alınan JoinMode değerine göre çalışma zamanında join modu rahatlıkla değiştirilebilir. Ya da  joine yeni bir tablo eklenebilir vb.

Tablolarla ilgili yapılabilecek en önemli optimizasyonlardan birisinin join kullanmak olduğundan bahsetmiştik. Ve ilgili makalede table buffer kullanarak join konusunu incelemiştik. Bu yazımızda ise aynı sorguların Query nesneleri ile nasıl yapıldığını inceleyeceğiz.

Joini kısaca özetlersek; Join sayesinde iki farklı tablodaki veriler sırayla ele alınarak ilişkili kayıtları bulmak yerine, tüm ilişkili kayıtları içeren bir veri kümesi oluşturularak bu küme içinde işlem yapılır. Bu sayede o işlem için gereksiz kayıtlara hiç değinilmemiş olur.

Okumaya devam et

Lookuplara display metod eklemek

Bu yazının başlangıcı için lookuplar ile ilgili makaleyi inceleyebilirsiniz.

Dikkat ederseniz ilk yazımda lookup (açılan kutucuk) oluştururken hep tablodaki alanları kullandım. Ama bazen display metodlar da lookupa eklenmek istenebilir. Örneğin EmplTable (Çalışanlar Tablosu) ile ilgili bir lookup yapmak istediğinizde EmplTable’da Name alanının olmadığını, bunun yerine EmplTable.Name() şeklinde bir display metod olduğunu görürüz. Haliyle bir çalışan seçmek için adına görmeye ihtiyaç duyarız. Bunun içi EmplTable.Name() metodunu lookupımıza eklememiz gerekir.

Okumaya devam et

Query nesneleri (Queries)-2 : Sıralama ve Gruplama (Ordering, grouping and aggregation)

Bu yazımızda daha önceden select cümlecikleri ile yaptığımız sorgulamaları query nesneleri ile yapacağız. Ama öncelikle Sıralama ve gruplama ile ilgili konuların başlangıcı için Select Cümlecikleri ve Table Buffer kavramı : Sıralama ve Gruplama (Ordering, grouping and aggregation) konulu makaleyi inceleyebilirsiniz.

Ayrıca Query nesneleri ile ilgili ilk makaleyi de incelemek isteyerseniz bu linki takip edebilirsiniz.

Konu ile ilgili ilk yazıda Query nesneleri ile sorgulama yapmanın avantajlarından bahsetmiştik. Basit bir sorguyu select ile yapmak çok daha kolay olmakla birlikte, kullanıcı ile etkileşime girerek dinamik sorgular oluşturmak söz konusu olduğunda query’ler kesin bir üstünlüğe sahiptir de demiştik. Bu konuları ilgili yazıya havale ederek Sıralama ve Gruplama (Ordering, grouping and aggregation) konularına değinelim. Bu konu için önce Select cümlesi ile, daha sonra da Query ile işlemin nasıl yapılacağını göreceğiz.

Okumaya devam et

Veri bütünlüğü (Data integrity), Relations, DeleteActions ve RenamePrimaryKey

Bir ERP sistemi için veri bütünlüğü yani data integrity son derece önemlidir. Örneğin bir müşteri kaydı üzerinde seçtiğiniz müşteri grubu değeri silinememelidir. Ya da satış siparişinde seçtiğiniz stok kartı silinememeli ve kontrolsüz şekilde değiştirilememelidir. Bu da ilişkili iki tablo arasında bir iletişimi gerekli kılar. Eğer aksi olursa tanımlı olmayan bir ürün satılır, bir müşteri var olmayan bir gruba dahil olur, bir işlem sistemde tanımlanmamış bir para birimi ile gerçekleşir vb.

Okumaya devam et

RenamePrimaryKey ve Veri bütünlüğü (Data integrity)

Bir tablodaki Primary key alanı değiştirlebilir mi? Örneğin pek çok yerde kullanılmış olan bir müşteri hesabı ya da stok kartı numarası  değiştirilebilir mi? Cevap evet. Ancak bu işlemi Dynamics Ax bizim yerimize zaten halletmektedir. Herhangibir formda iken Sağ tuş Kayıt Bilgileri ekranında Yeniden adlandır seçeneği kullanılarak primary key alanı yeninden adlandırılabilir. Bu seçenek sayesinde kaydın kullanıldığı tüm tablolar update edilir.

Okumaya devam et