Iin Dewi Wahyuni

See also: Other Geeks@INDC
Cara penggunaan Microsoft.Dynamics.BusinessConnectorNet di .NET

Untuk dapat menggunakan library ini kita cukup menginstall client axaptanya, namun apabila kita ingin menggunakan resource axapta maka kita harus meng-install Axapta servernya atau yang sering di sebut sebagai AOS (AXapta Object Server). AOS merupakan tier ke dua dalam three tier Microsoft Dynamics Axapta design arsitektur.

Ketiga tier tersebut antara lain :
1. Intelligent Client
2. AOS (Axapta Object Server)
3. Database Server (SQL Server or Oracle)

Setelah kita install client maka kita dapat langsung meng-add reference melalui Axapta COM object atau yg sering kita sebut sebagai Microsoft.Dynamics.BusinessConnectorNet, baik melalui Tab Com ataupun seandainya kita mengetahui langsung letak DLL tersebut disimpan maka kita bisa browse secara langsung.

Apabila DLL sudah kita add dalam sebuah project (Win or Web or WPF) maka kita bisa langsung menggunakannya.
Contoh di bawah adalah contoh penggunaan BusinessConnector di Win project.

1. Add Microsoft.Dynamics.BusinessConnectorNet.dll ke dalam project.



2. masukkan Microsoft.Dynamics.BusinessConnectorNet namespace.



3. Dibawah ini contoh code penggunaannya.

    Axapta ax = new Axapta();
    ax.LogonAs("Soltius", "SOLTIUS-IDW", null, "DAT", null, "SOLTIUS-IDW", null);
    MessageBox.Show(ax.CallStaticClassMethod("Global", "numeralsToTxt", 1200).ToString());
    ax.Dispose();

Contoh ini adalah penggunaan Class Global yang memanggil method numeralsToTxt, fungsi numeralsToTxt adalah untuk menyebut sebuah numeric ke dalam kata-kata, sebagai contoh saya masukkan nilai 1200 maka yang muncul adalah "*** One Thousand Two Hundred and 00/100".

Untuk dapat memanggil object-object yang ada di axapta maka kita harus melakukan logon terlebih dahulu yaitu dengan memanggil method LogonAs yang terdapat dalam Axapta Class. Sedangkan untuk memanggil object yang ada dalam axapta, kita akan gunakan function CallStaticClassMethod.

Saya sertakan juga contoh simple project (WinForm, WPF dan Web) yg bisa di download di attachment. Project ini saya buat dengan menggunakan VS2008.

Semoga bermanfaat....

 

Share this post: | | | |
Bagaimana menambahkan sorting at runtime di X++

Ada beberapa cara untuk menambahkan sorting field di axapta, salah satunya adalah menambahkan pada saat runtime.

Berikut adalah contohnya :

this.query().dataSourceName("InventLocation").addSortField(fieldnum(InventLocation, InventLocationId), SortOrder::Ascending);

Penjelasan :
- InventLocation adalah nama sebuah table.
- fieldnum adalah sebuah fungsi untuk men-cast dari object sebuah table ke integer, dengan kata lain untuk mendapatkan idnumber dari sebuah field kita gunakan fieldnum function. Pada saat kita memanggil function fieldnum terdapat 2 parameter yang harus kita masukkan yaitu, nama table dan nama field. Cara memanggilnya adalah fieldnum(NamaTable, NamaField).
- dataSourceName adalah sebuah fungsi untuk memanggil sebuah datasource table/query yang kita attach di dalam sebuah report atau form.
- SortOrder::Ascending adalah sebuah enumeration object. Ada 2 value yaitu Ascending yang bernilai 0 dan Descending yang bernilai 1

Share this post: | | | |
Penggunaan fungsi row_number() untuk paging data di SQL Server

Fungsi row_number() adalah untuk mengembalikan sequential number untuk setiap record.

Contoh penggunaan row_number() untuk keperluan paging data :

Terdapat sebuah table CustTable yang menampung data customer yang terdiri dari 2 field yaitu, CustID dan CustName. Dan kasus yang akan di tampilkan adalah bagaimana menampilkan data di page ke-1 dan setiap page hanya akan menampilkan 10 record.
Jadi querynya adalah :

Declare @CountRow int, @PageRow int, @PageNum int, @PageSize int
Select @PageNum = 1, @PageSize = 10
SELECT @CountRow = COUNT(1) FROM CustTable
IF  @CountRow > @PageSize
 SET @PageRow = (@CountRow / @PageSize) + 1
ELSE SET @PageRow = 1

SELECT * FROM
(
 SELECT row_number() over (ORDER BY CustID desc) as ROWNUM, *
 FROM CustTable
) TMPCUSTTABLE
WHERE ROWNUM BETWEEN ((@PageNum * @PageSize) - @PageSize) + 1 AND (@PageNum * @PageSize)

Semoga bermanfaat...

 

Share this post: | | | |
Module-Module Dynamics Ax
Modul-modul standar Dynamics Ax seperti terlihat di bawah ini :

Share this post: | | | |
Number Sequence di Dynamics Ax

Fungsi dari Number Sequence adalah untuk men-generate auto number ID berdasarkan format yang telah di tentukan di setup Number Sequence yang berada di module Basic -> Setup -> Number Sequences -> Number Sequences

 

Di dalam setup sequence number terdapat field yang harus kita isi antara lain :
- Number Sequence Code, adalah kode unik bagi masing-masing number sequence.
- Name, adalah deskripsi mengenai kegunaan dari masing-masing number sequence.
- Smallest, adalah angka awal number sequence akan ter-generate
- Largest, adalah angka maksimal untuk menentukan batas number sequence akan ter-generate
- Format, adalah untuk menentukan format number sequence, contoh : #####_test, maka setiap kali number sequence ini dipakai dalam sebuah proses maka format yang akan muncul adalah 00001_test, 00002_test, 00003_test, dst.


Cara penggunaan Number Sequence :
Buatlah sebuah job dan beri nama SampleNumberSequence.

static void SampleNumberSequence(Args _args)
{
    NumberSequenceTable         _numberSequenceTable;
    NumberSeq                            _numberSeq;
    ;
   
    _numberSequenceTable = NumberSequenceTable::find("Acco_21");
    _numberSeq = NumberSeq::newGetNumFromCode(_numberSequenceTable.NumberSequence, true);
    info(strfmt("%1", _numberSeq.num()));
}

Setelah tulis sample code di atas, cobalah untuk membuka jobs tersebut (bukalah berulang-ulang maka akan terlihat hasilnya).

Share this post: | | | |
X++ Introduction

X++ adalah bahasa pemrograman yang dipakai sebagai code behind of MorphX. MorphX sendiri adalah sebuah linkungan development yg sudah terintegrasi di Micorosoft Dynamics Ax dimana para developers dapat membuat DataType, Enumeration, Tables, Queries, Forms, Menus dan Reports. MorhpX men-support drag and drop functionality dan sangat user friendly. Selain itu juga dapat mengakses/membuat berbagai macam class-class yang tersedia dalam aplikasi dengan menggunakan X++ code editor.

Syntax X++ sendiri sebagian besar mengadaptasi dari syntax keluarga C. Disana terdapat Looping, Logical conditional (If condition...), Query (seperti halnya LINQ di .NET tanpa harus menggunakan object koneksi), Array, dsb.

Code Sample :

public static void xppTest1(Args _args)
{
    UserInfo userInfo;
    ;
 
    update_recordset userInfo
        setting enable = NoYes::No
        where userInfo.id != 'Admin'
            && userInfo.enable;
}

Penjelasan :

UserInfo adalah salah satu table object yang dapat kita lihat secara logical di Database baik SQL Server maupun Oracle.

update_recordset merupakan syntax untuk update query

setting merupakan syntax untuk men-set field dengan value yang baru

where merupakan filtering bagi sebuah query

NoYes merupakan salah satu Enumeration object seperti yang di sebutkan di atas.


Itulah perkenalan awal mengenai X++


Semoga bermanfaat...!

Share this post: | | | |
Untuk men-detect Network Adapter yang terdapat dalam sebuah PC / Laptop

Untuk mengetahui Network Adapter apa saja yang terdapat dalam sebuah PC / Laptop / Notebook kita bisa menggunakan sebuah object yang terdapat di Namespace System.Net.NetworkInformation yang bernama NetworkInterface, dibawah ini adalah cara penggunaannya :

NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach(NetworkInterface nic in nics)
{
 Console.write(nic.Description);
}


Semoga bermanfaat !

Share this post: | | | |
Bagaimana untuk mendapatkan IP Address sebuah Alamat Website di .NET ?

Untuk mendapatkan IP Address sebuah alamat Website kita bisa menggunakan method-method yang ada di System.Net dan System.Net.Sockets.

Pertama-tama kita resolve terlebih dahulu alamat website tersebut dengan menggunakan method Resolve yang terdapat di Class DNS yang bersifat static sehingga kita tidak perlu membuat instance dari Class DNS tersebut. Hasil resolve tersebut kita simpan dalam sebuah variable yang bertipe IPHostEntry (berupa class yang hanya terdiri dari 3 private variable dan 3 public method). Pada saat hasil Resolve tersebut ditampung di variable yang bertipe IPHostEntry maka secara otomatis .net akan menyimpan informasi dari method Resolve tersebut kemasing-masing method yang ada di IPHostEntry dan salah satu public method yang ada di IPHostEntry class adalah AddressList yang bertipe Array IPAddress. Dari method IPAddress inilah kita bisa mendapatkan informasi mengenai IP Address sebuah website.

Dibawah ini adalah contoh code yang saya buat :

IPHostEntry ipHost = Dns.Resolve(txtHost.Text);
IPAddress[] addr = ipHost.AddressList;
foreach (IPAddress saddr in addr)
{
 Console.write("IP Address : " + saddr);
}

Semoga bermanfaat !

Share this post: | | | |
Membuat Simple Web Toolbar di .NET Framework 2.0 disertai dengan Editor

Seperti yang kita ketahui bahwa Microsoft tidak membuat Toolbar control untuk web di framework 2.0. Jadi apabila kita mempunyai kebutuhan untuk itu kita harus membuat sendiri control tersebut dan saya mencoba untuk membuat yang sangat simple disertai Toolbar Editor.

Konsep dari Toolbar ini adalah bahwa programmer dapat menambah dan mengurangi sebuah button dalam Toolbar ini tanpa harus "MENGETIK" sebuah tag tapi cukup dengan masuk ke toolbar editor dengan menekan (click) Item properties dan mengganti semua properties yang tersedia sesuai dengan kebutuhan. Anda dapat mengembangkan toolbar ini sesuai dengan kebutuhan anda. Dan juga untuk memperbagus tampilan dengan menambahkan CSS / theme dan juga image-image pada control tersebut.

Saya sertakan juga blog ini dengan attachment yang dapat di download. (It'S OpEN SOuRCe)

 

Share this post: | | | |
Posted: Dec 10 2007, 04:58 PM by Iin Dewi Wahyuni | with 1 comment(s) |
Filed under:
Microsoft Dynamics AX (AXAPTA)

Microsoft Dynamics AX is a customizable, multiple language, multiple currency
enterprise resource planning or ERP solution. Microsoft Dynamics AX excels in :
- Manufacturing
- E-business
- Wholesale
- Services industries

Microsoft Dynamics AX is a completely integrarion solutions. It is web-enabled and supports Microsoft SQL Server and Oracle. With Customizable source code, you can modify the solution however and whenever we want.

 For who wants to know more about AXAPTA you can download the PDF's file.

 

Share this post: | | | |
How to make existing properties in .NET controls invisible at design time

First you have to extended the control that we want to make disapear the existing properties by inheriting the control.

For example we want to make disapear EnableTheming property in a textbox. Put "[Browsable(false)]" syntax at the top of the property that we will override. If we set the Attribute Browsable to false then the property will invisible at design time, but when we set true then the Attribute will visible at design time.

public class TextBoxSample : TextBox
{
        [Browsable(false)]
        public override bool EnableTheming
        {
            get { return base.EnableTheming; }
            set { base.EnableTheming = value; }
        }
}

Share this post: | | | |
Posted: Aug 16 2007, 11:56 AM by Iin Dewi Wahyuni | with no comments |
Filed under:
Ajax Basic Object (Part 1)

Ajax is stand for Asynchronous Javascript and XML.
The question is what kind of javascript’s object that has been use for making Ajax object ? as we know that outside, there is a lot of Ajax object that has been made. Like MagicAjax, Atlas, etc.
The answer is HttpObject / DOM (Document Object Model) Object in javascript. The existing HttpObject until now is XMLHttpRequest, "MSXML2.XMLHTTP" activeXobject, "Microsoft.XMLHTTP" activeXobject. With this DOM object so you can make your own Ajax Component with variouse programming languages.

Example :

function GetHttpObject()
{
  var xmlhttp;
 
   if (window.XMLHttpRequest)
   {
     try{xmlhttp = new XMLHttpRequest();}
     catch (e){ xmlhttp = false;}
   }
   else if (window.ActiveXObject)
   {
     var clsids = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
     for(var i=0; i<clsids.length; i++)
     {
         try{xmlhttp = new ActiveXObject(clsids[ i ]);break;}
         catch (e){xmlhttp = false;}
     }
   }
   return xmlhttp;
}

Share this post: | | | |
myTemplateUI .NET Web Tools (Introduction)

myTemplateUI is a tools that I developed by .NET environment which is coordinating many standard functions in application such as Insert, Update, Delete, Searching, Navigator, etc, in just one place. myTemplateUI will help the web developer to make a page more faster and also we can maintain the application more easier because many global function can put in just one place. So if there is any changes in one function that put it in myTemplateUI so it will affecting to all pages that already build without changing all pages that using the function. Basicly the web developer only focus on Database programming. This tools can use by any kind of system. This tools already using Ajax technology. I'm going to open source this tools. I'm expected some reviews or comments about this tools (all resources that I've been used, maybe some function will not effective). Please give some advised to enhanced this tools.

To be continued...

Share this post: | | | |
Posted: Jul 23 2007, 05:54 PM by Iin Dewi Wahyuni | with no comments |
Filed under:
Check the Browser in C#

If we can check the version and type of the browser so we can manage our application to a certain browser. This is the code of how to check the browser.

Request.Browser.Type --> to check the type of the browser (IE, Mozilla, Opera, etc)
Request.Browser.MajorVersion --> to check the version of the browser

Share this post: | | | |
Posted: Jul 23 2007, 05:46 PM by Iin Dewi Wahyuni | with 3 comment(s) |
Filed under:
A simple way to get the value of TextFile in Resource (C#)

We create new Resource file in a current project and then we add the textfile that already we fill with some data to Resource file. So that we ready to use it.

This is the sample code :

protected void Form1_Load(object sender, System.EventArgs e)
{
               Assembly assem = Assembly.GetExecutingAssembly();
               string value = Resource.TextFile; // TextFile is the name of resource object (textfile that we add)
}

Share this post: | | | |
Posted: Jul 23 2007, 05:42 PM by Iin Dewi Wahyuni | with no comments |
Filed under:
More Posts Next page »