Selanjutnya kita tinggal implementasikan dalam bentuk kode program (menggunakan ADO.NET) dengan membuat dua buah method masing-masing dengan nama GetPembelianUsingADONET dan GetDetailPembelian.
Method GetPembelianUsingADONET akan mengeksekusi query pertama sedangkan query kedua akan dieksekusi oleh method GetDetailPembelian.
privatestaticBeliGetPembelianUsingADONET(stringnota){Belibeli=null;using(varconn=GetOpenConnection()){// ambil data headervarsql=@"SELECT Beli.Nota, Beli.Tanggal, Supplier.SupplierID, Supplier.NamaSupplier FROM Supplier INNER JOIN Beli ON Supplier.SupplierID = Beli.SupplierID WHERE Beli.Nota = @1";using(varcmd=newSqlCommand(sql,conn)){cmd.Parameters.AddWithValue("@1",nota);using(vardtr=cmd.ExecuteReader()){if(dtr.Read()){// mapping record ke objek suppliervarsupplier=newSupplier{SupplierID=dtr["SupplierID"]isDBNull?0:(int)dtr["SupplierID"],NamaSupplier=dtr["NamaSupplier"]isDBNull?string.Empty:(string)dtr["NamaSupplier"]};// mapping record ke objek belibeli=newBeli();beli.Nota=dtr["Nota"]isDBNull?string.Empty:(string)dtr["Nota"];beli.Tanggal=dtr["Tanggal"]isDBNull?DateTime.MinValue:(DateTime)dtr["Tanggal"];beli.Supplier=supplier;// hubungkan objek supplier dan beli}}}if(beli!=null){// ambil data detailvardaftarItemBeli=GetDetailPembelian(nota,conn);beli.ItemBelis=daftarItemBeli;// hubungkan objek beli dg detail beli}}returnbeli;}privatestaticIList<ItemBeli>GetDetailPembelian(stringnota,SqlConnectionconn){vardaftarItemBeli=newList<ItemBeli>();varsql=@"SELECT Barang.BarangID, Barang.NamaBarang, ItemBeli.Jumlah, ItemBeli.HargaBeli, ItemBeli.HargaJual FROM Barang INNER JOIN ItemBeli ON Barang.BarangID = ItemBeli.BarangID WHERE ItemBeli.Nota = @1";using(varcmd=newSqlCommand(sql,conn)){cmd.Parameters.AddWithValue("@1",nota);using(vardtr=cmd.ExecuteReader()){while(dtr.Read()){// mapping record ke objek barangvarbarang=newBarang{BarangID=dtr["BarangID"]isDBNull?string.Empty:(string)dtr["BarangID"],NamaBarang=dtr["NamaBarang"]isDBNull?string.Empty:(string)dtr["NamaBarang"]};// mapping record ke objek item belivaritemBeli=newItemBeli{Barang=barang,// hubungkan barang dg item beliJumlah=dtr["Jumlah"]isDBNull?0:(int)dtr["Jumlah"],HargaBeli=dtr["HargaBeli"]isDBNull?0:(int)dtr["HargaBeli"],HargaJual=dtr["HargaJual"]isDBNull?0:(int)dtr["HargaJual"]};daftarItemBeli.Add(itemBeli);}}}returndaftarItemBeli;}
Untuk mencoba kode di atas gunakan kode berikut :
123456789101112131415161718
staticvoidMain(string[]args){varbeli=GetPembelianUsingADONET("N001");Console.WriteLine("Nota : {0}\nTanggal : {1}\nSupplier : {2}",beli.Nota,beli.Tanggal,beli.Supplier.NamaSupplier);Console.WriteLine("\nItem Beli :");// ekstrak item beliforeach(variteminbeli.ItemBelis){Console.WriteLine("Barang : {0}, Jumlah : {1}, Harga Jual : {2}",item.Barang.NamaBarang,item.Jumlah,item.HargaJual);}Console.WriteLine("\nPress any key to exit ...");Console.ReadKey();}
Jika kode di atas dijalankan akan menghasilkan output seperti gambar pertama.
Semakin sedikit kode yang kita tulis, semakin sedikit juga bug yang dihasilkan dan semakin sedikit kode yang kita tulis, semakin mudah juga untuk melakukan maintenance.