Mudah Membuat Chained Drop Down Combo Box

Chained Dropdown List, atau Chained Combo Box, atau Chained Select, atau jika di Indonesiakan menjadi Select Bertingkat atau Combo Box Bertingkat

Belajar Programming | Chained Dropdown List, atau Chained Combo Box, atau Chained Select, atau jika di Indonesiakan menjadi Select Bertingkat atau Combo Box Bertingkat, adalah salah satu teknik yang sering ditanyakan di forum-forum pemrograman. Dengan teknik ini, kita membuat seolah-olah beberapa dropdown list atau combobox saling berhubungan, misalkan combobox nama-nama kota akan terisi otomatis sesuai dengan pilihan negara di combobox lainnya. Atau combobox list pegawai akan berubah sesuai dengan departemen yang dipilih. Teknik ini sebenarnya sangatlah sederhana, namun memerlukan pemahaman yang cukup komprehensif mengenai mengenai beberapa hal, seperti cara mengambil data dari database, cara mengisi data ke combobox atau dropdown list, dan cara mengambil pilihan pengguna sebagai referensi untuk mengisi combobox lainnya.

(more…)

Mengisi ComboBox Dengan Data Dari Database

Mengisi ComboBox Dengan Data Dari Database VB.net C#

Belajar Programming | Salah satu hal yang amat sangat umum dalam membuat sebuah aplikasi VB.net atau C# adalah mengisi ComboBox dengan berdasarkan data yang ada di database. Sebenarnya hal ini sangat simple namun bagi para programmer bisa jadi merupakan hal yang sangat sulit 🙂 Cara yang paling mudah adalah dengan menggunakan metoda data-binding sehingga kita bisa menghilangkan dan menghapus code iterasi yang melelahkan saat mengisi data ke combobox bersangkutan. Langkah-langkah atau algoritma dasarnya adalah sebagai berikut:

  • Siapkan koneksi database
  • Siapkan perintah SQL
  • Siapkan variable penampung data (bisa DataTable atau DataSet)
  • Ambil data dari database, masukkan ke DataTable
  • Binding data di DataTable ke ComboBox

Algortima yang sederhana di atas ketika kita terjemahkan ke dalam VB.net akan seperti ini,

Imports System.Data
Imports System.Data.SqlClient

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        InitializeComboBox()
    End Sub

    Private Sub InitializeComboBox()
        ' siapkan koneksi database
        Dim cn As New SqlConnection(My.Settings.LocalDatabase)
        ' siapkan data adapter untuk data retrieval
        Dim da As New SqlDataAdapter("select account_id, description from acc_accounts", cn)
        ' siapkan datatable untuk menampung data dari database
        Dim dt As New DataTable
        ' enclose in try-catch block
        ' untuk menghindari crash jika terjadi kesalahan database
        Try
            ' ambil data dari database
            da.Fill(dt)
            ' bind data ke combobox
            ComboBox1.DataSource = dt
            ComboBox1.ValueMember = "account_id"
            ComboBox1.DisplayMember = "description"
            ' DONE!!!
        Catch ex As Exception
            ' tampilkan pesan error
            MessageBox.Show(ex.Message)
        End Try
    End Sub

End Class

Sedangkan jika kita terjemahkan ke dalam C# akan menjadi seperti ini,

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

namespace ComboBoxSample2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeComboBox();
        }

        private void InitializeComboBox()
        {
            // siapkan koneksi database
            SqlConnection cn = new SqlConnection(ComboBoxSample2.Properties.Settings.Default.LocalDatabase);
            // siapkan data adapter untuk data retrieval
            SqlDataAdapter da = new SqlDataAdapter("select account_id, description from acc_accounts", cn);
            // siapkan datatable untuk menampung data dari database
            DataTable dt = new DataTable();
            // enclose in try-catch block
            // untuk menghindari crash jika terjadi kesalahan database
            try
            {
                // ambil data dari database
                da.Fill(dt);
                // bind data ke combobox
                ComboBox1.DataSource = dt;
                ComboBox1.ValueMember = "account_id";
                ComboBox1.DisplayMember = "description";
                // DONE!!!
            }
            catch (Exception ex)
            {
                // tampilkan pesan error
                MessageBox.Show(ex.Message);
            }
        }
    }
}

Jika data yang ada di database seperti ini,

Mengisi ComboBox Dengan Data Dari Database VB.net c#

Maka tampilan aplikasinya jadi seperti ini,

Mengisi ComboBox Dengan Data Dari Database VB.net c#

Semoga berguna…. Happy Coding 

 

^_^

Tutorial: Membuat Laporan Sederhana Menggunakan Crystal Report di Visual Studio 2010

Tutorial Membuat Laporan Sederhana Menggunakan Crystal Report di Visual Studio 2010

Membuat Laporan Crystal Report | Kemampuan aplikasi untuk membuat sebuah laporan yang bisa dicetak ke printer adalah hal umum yang harus bisa dilakukan sebuah aplikasi desktop. Untuk itu skill ini amat sangat diperlukan oleh seorang programmer pengembang aplikasi desktop. Tutorial ini mencoba memberikan arahan langkah demi langkah cara menggunakan vb.net untuk membuat sebuah laporan crystal report sederhana namun professional menggunakan Push Method, artinya proses pengambilan data dari database dilakukan di luar Crystal Report , namun menggunakan DataSet, dan setelah data siap, Data Set bersangkutan di-Push ke Crystal Report. Studi kasus berupa Laporan Purchase Order. Aplikasi ini dibuat menggunakan C# karena dengan menguasai C# kita lebih mudah untuk migrasi ke bahasa lain seperti Java. Namun jika kita ingin membuatnya dalam bahasa lain, seperti VB.net, itu adalah hal yang sangat mudah karena coding dalam aplikasi ini hanya beberapa baris saja.

Beberapa hal lain yang perlu diperhatikan antara lain, tutorial ini tidak membahas cara menjalankan Visual Studio, cara membuat Project baru, cara menambah Form atau DataSet baru, cara membuka Server Explorer dan sebangsanya. Ane berasumsi agan semua sudah mengetahui cara-caranya. Tutorial ini juga tidak membahas cara menyimpan data master detail ke dalam database, karena concern kita saat ini hanyalah manmpilkan data yang sudah ada dalam database menggunakan crystal report. Database yang digunakan adalah SQL Server Compact Database. Tutorial ini juga tidak membahas cara membuat database baru, cara koneksi database di .NET, cara design database yang baik dan lain sebagainya. Ane berasumsi agan semua sudah mengetahui cara-caranya.

 

Membuat Project dan DataSet

Buat project baru dan Siapkan database, untuk tutorial ini ane pakai Local Database (dbSample.sdf). Note: cara membuat project baru dan design database atau menggunakan database lain tidak dibahas di sini.

[collapsed title=Desain Database] [/collapse]

Tambahkan DataSet baru, beri nama dsSample.xsd, setelah itu buka Database menggunakan Server Explorer. Lakukanlah drag dan drop table yang ada di Database Explorer ke atas dataset designer dsSample.xsd menjadi seperti yang ada di gambar.

[collapsed title=Desain Datasat Setelah Proses Drag-Drop] [/collapse]

Buat custom query untuk mengambil data Companies berdasarkan CompanyID, beri nama method Fill dengan FillByCustomerID dan method Return DataTable dengan GetDataByCompanyID. Note: Perhatikan step pembuatannya di gambar.

[collapsed title=Custom query untuk table Companies]

[collapsed title=Langkah ke-1] [/collapse]
[collapsed title=Langkah ke-2] [/collapse]
[collapsed title=Langkah ke-3] [/collapse]
[collapsed title=Langkah ke-4] [/collapse]
[collapsed title=Langkah ke-5] [/collapse]
[collapsed title=Langkah ke-6] [/collapse]

[/collapse]

Buat custom query untuk mengambil data Orders berdasarkan OrderID, beri nama method Fill dengan FillByOrderID dan method Return DataTable dengan GetDataByOrderID. Note: Perhatikan step pembuatannya di gambar.

[collapsed title=Custom query untuk table Orders]

[collapsed title=Langkah ke-1] [/collapse]
[collapsed title=Langkah ke-2] [/collapse]
[collapsed title=Langkah ke-3] [/collapse]
[collapsed title=Langkah ke-4] [/collapse]
[collapsed title=Langkah ke-5] [/collapse]
[collapsed title=Langkah ke-6] [/collapse]

[/collapse]

Buat custom query untuk mengambil data OrderDetails berdasarkan OrderID, beri nama method Fill dengan FillByOrderID dan method Return DataTable dengan GetDataByOrderID. Note: Perhatikan step pembuatannya di gambar.

[collapsed title=Custom query untuk table OrderDetails]

[collapsed title=Langkah ke-1] [/collapse]
[collapsed title=Langkah ke-2] [/collapse]
[collapsed title=Langkah ke-3] [/collapse]
[collapsed title=Langkah ke-4] [/collapse]
[collapsed title=Langkah ke-5] [/collapse]
[collapsed title=Langkah ke-6] [/collapse]

[/collapse]

Buat custom query untuk mengambil data Items berdasarkan OrderID, beri nama method Fill dengan FillByOrderID dan method Return DataTable dengan GetDataByOrderID. Note: Perhatikan step pembuatannya di gambar.

[collapsed title=Custom query untuk table Orders]

[collapsed title=Langkah ke-1] [/collapse]
[collapsed title=Langkah ke-2] [/collapse]
[collapsed title=Langkah ke-3] [/collapse]
[collapsed title=Langkah ke-4] [/collapse]
[collapsed title=Langkah ke-5] [/collapse]
[collapsed title=Langkah ke-6] [/collapse]

[/collapse]

Buat custom query untuk mengambil list Orders yang terdenormalisasi, beri nama method Fill dengan FillList dan method Return DataTable dengan GetDataList. Note: Perhatikan step pembuatannya di gambar.

[collapsed title=Custom query untuk List Orders]

[collapsed title=Langkah ke-1] [/collapse]
[collapsed title=Langkah ke-2] [/collapse]
[collapsed title=Langkah ke-3] [/collapse]
[collapsed title=Langkah ke-4] [/collapse]
[collapsed title=Langkah ke-5] [/collapse]
[collapsed title=Langkah ke-6] [/collapse]

[/collapse]

Compile aplikasi (Ctrl-F5). Langkah ini penting agar dapat maju ke langkah berikutnya. Jika tidak dilakukan kompilasi, maka Crystal Report tidak bisa menggunakan DataSet – yang kita siapkan pada langkah sebelumnya – sebagai definisi report.

Sekarang DataSet sudah siap kita gunakan

[collapsed title=Hasil Akhir DataSet] [/collapse]
 

Membuat Report Definition

Tambahkan Crystal Report ke project untuk laporan List Order, pilih “Using the Report Wizard” untuk membuat definisi report, kemudian pilih Create New Connection > ADO.NET (XML) sebagai data source dan arahkan File Path ke DataSet dsSample.xsd yang kita buat pada langkah sebelumnya.

[collapsed title=Koneksi report ke data source]

[collapsed title=Using the Report Wizard][/collapsed]
[collapsed title=Create New Connection][/collapsed]
[collapsed title=Arahkan File Path][/collapsed]
[collapsed title=Data source terkoneksi][/collapsed]

[/collapsed]

Tambahkan ke Selected Tables: Companies, Orders, OrderDetails, dan Items ke list “Selected Tables”, kemudian klik next untuk melihat relasi antar tabel

[collapsed title=Selected Tables]

[collapsed title=Selected Tables][/collapsed]
[collapsed title=Relationship antar Tabel][/collapsed]

[/collapsed]

Tambahkan field-field yang yang akan ditampilkan ke list “Fields to Display”, kemudian tambahkan juga report grouping, summary, dan filtering jika diperlukan, akhiri dengan memilih template yang diinginkan.

[collapsed title=Fields to Display]

[collapsed title=Fields to Display][/collapsed]
[collapsed title=Grouping Fields][/collapsed]
[collapsed title=Summary Fields][/collapsed]
[collapsed title=Filtering Fields][/collapsed]
[collapsed title=Pilih Templete][/collapsed]

[/collapsed]

Tampilan standar dari wizard, Silakan ubah layoutnya sesuai keinginan agan, misalkan menjadi seperti ini,

[collapsed title=Hasil report wizardwizard]

[collapsed title=Tampilan standar dari wizard][/collapsed]
[collapsed title=ubah layoutnya][/collapsed]

[/collapsed]

Tambahkan formula field untuk menghitung nilai order dengan cara klik kanan pada item “Formula Field” di window “Field Explorer”. Beri nama formula tersebut “ItemAmount” dan isikan rumusnya seperti pada gambar, kemudian klik tombol “Save and Close” di pojok kanan. Note: agar tidak perlu ketik ulang nama field di formula editor, bisa dengan cara klik ganda pada field yang ada di Field Tree.

[collapsed title=Formula Field]

[collapsed title=Tambah Formula Field][/collapsed]
[collapsed title=Tentukan Rumusnya][/collapsed]
[collapsed title=Masukkan formula field ke report][/collapsed]

[/collapsed]

Tambahkan Subtotal untuk field ItemAmount, dengan cara klik kanan mouse pada field Item Amount, kemudian pilih menu “Insert” -> “Summary”, kemudian ubah “Summary Location” menjadi “Group 1” Hasilnya akan muncul field summary persis di bawah field “ItemAmount”.

[collapsed title=Subtotal ]

[collapsed title=Buat field summary][/collapsed]
[collapsed title=Field summary tampil di report][/collapsed]

[/collapsed]

Rapikan layout report kita, misalnya menjadi seperti ini. Note: Jika “GroupFooterSection2” tidak ada pada report, silahkan klik kanan mouse pada “GroupFooterSection” kemudian pilih menu “Insert Section Below”

[collapsed title=Finishing][/collapsed]

 

Buat Form untuk Menampilkan Report

buat form baru kemudian beri nama frmReportViewer, setelah itu drag dan drop komponen CrystalReportViewer dari toolbox, hasilnya akan tampak seperti gambar di bawah ini.

[collapsed title=desain form report viewer][/collapsed]

Kemudian buka code editor dan tambahkan coding seperti di bawah ini. Metoda yang kita pakai adalah dengan memanfaatkan constructor form untuk menerima argumen berupa report yang akan di tampilkan.

[collapsed title=coding form report viewer]

        using CrystalDecisions.CrystalReports.Engine;

        public frmReportViewer(ReportClass rpt)
        {
            InitializeComponent();
            InitializeReport(rpt);
        }

        private void InitializeReport(ReportClass rpt)
        {
            this.crystalReportViewer1.ReportSource = rpt;
            this.crystalReportViewer1.Zoom(0);
        }

[/collapsed]

 

Buat Form untuk List Order

Buka desain Form1, ubah namanya menjadi “frmMain” kemudian tambahkan 1 buah button dan 1 buah DataGridView seperti yang tampak dalam gambar. Selanjutnya menggunakan property window, ubah nama button1 menjadi btnPrintForm, dan dataGridView1 menjadi grid1.

[collapsed title=Desain Awal][/collapsed]

Kemudian drag dan drop ke form dari toolbox grup “CrystalReports1 Components”, dsSample dan OrdersTableAdapter, sehingga desain form akan tampak sepert gambar di bawah ini. Selanjutnya ubah property berikut ini untuk grid1,

  • DataSource = dsSample1
  • DataMember = Orders
  • ReadOnly = True
  • AllowUserToAddRows = False
  • AllowUserToDeleteRows = False
  • AutoSizeColumnMode = Fill

Jika sudah maka tampilan form akan berubah menjadi seperti gambar di bawah ini

 

[collapsed title=Setelah Set Property untuk grid][/collapsed]

Sekarang saatnya menambahkan coding untuk mengambil data dari database dan ditampilkan ke grid. Silakan buka Code Editor dan tambahkan code seperti di bawah ini

[collapsed title=code untuk retrieve list order]

        public frmMain()
        {
            InitializeComponent();
            InitializeDatabase();
        }

        private void InitializeDatabase()
        {
            ordersTableAdapter1.FillList(dsSample1.Orders);
        }

[/collapsed]

Coding untuk Menampilkan Report adalah sebagai berikut, Buka desain frmMain kemudian klik ganda pada button btnPrintForm untuk membuka code editor, kemudian tambahkanlah code seperti di bawah ini

[collapsed title=Coding Tampilkan report]

        private void btnPrintForm_Click(object sender, EventArgs e)
        {
            // ganti cursor
            Cursor = Cursors.WaitCursor;

            // ambil OrderID
            int col = 0;                                  // nomor index field OrderID
            int row = grid1.SelectedCells[0].RowIndex;    // nomor index row yang dipilih
            int id = (int)grid1[col, row].Value;          // order id yang terpilih

            // siapkan pengambilan data yng ingin ditampilkan di report
            dsSample ds = new dsSample();
            OrdersTableAdapter orders = new OrdersTableAdapter();
            OrderDetailsTableAdapter details = new OrderDetailsTableAdapter();
            ItemsTableAdapter items = new ItemsTableAdapter();
            CompaniesTableAdapter comp = new CompaniesTableAdapter();

            // ambil data dari databse sesuai OrderID
            comp.FillByCompanyID(ds.Companies, id);
            items.FillByOrderID(ds.Items, id);
            orders.FillByOrderID(ds.Orders, id);
            details.FillByOrderID(ds.OrderDetails, id);

            // siapkan report
            ReportClass rpt = new rptOrderForm();
            rpt.SetDataSource(ds);

            // siapkan report viewer
            Form f1 = new frmReportViewer(rpt);
            f1.ShowDialog();

            // ganti cursor
            Cursor = Cursors.Default;
        }

[/collapsed]

 

 

Hasilnya gan….

Hasil akhir tampilan form aplikasi seperti ini

[collapsed title=List Order][/collapsed]

Hasil akhir tampilan report yang dihasilkan seperti ini

[collapsed title=Tampilan Report][/collapsed]

Download Source Code di sini gan!

[collapsed title=Source Code silakan download di sini gan] Download Source Code Sekarang
Download Crystal Report for VS2010 Sekarang [/collapsed]

 

Semoga berguna

 

 

.

My Previous Project: Inventory.NET

This is a from project in 2011. An inventory application using c# featuring Sales Order, Prichase Order and Inventory Transactions. Reporting uses Crystal Reports. Please follow my github project at https://github.com/hidayat365/Inventory.NET for updates

Components

This project uses ComponentOne WinForms 2011v3, so please get your own license for this component

Projects

  • Biruni.FE, for main front end
  • Biruni.Master, module for managing master lookup data
  • Biruni.Shared, module for shared component
  • Biruni.Licensing, module for licensing (still empty)
  • Biruni.Inventory, module for managing inventory transaction
  • Biruni.Purchasing, module for managing purchase transaction
  • Biruni.Reports, module for reporting, uses crystal reports
  • Biruni.Sales, module for managing sales transaction
  • Biruni.Security, module for managing security
  • Biruni.Setup, module for deployment package

Copyright

Please use this for educational purpose only, no commercial work should derive from this project.

Change Log

Version 1.1.614

  • New feature: Customer Opening Balance (please run script alter_20110614.sql to update production database)
  • New feature: Vemdor Opening Balance (please run script alter_20110614.sql to update production database)
  • Enhancement: Customer Dropdown list in Sales Order Entry now display outstading payment for each customer
  • Enhancement: Vendor Dropdown list in Purchase Order Entry now display outstading payment for each vendor
  • Enhancement: Customer List now display outstading payment
  • Enhancement: Vendor List now display outstading payment

Version 1.1.610

  • Enhancement: Added barcode in item master entry
  • Enhancement: Sales Payment Entry now automatically list all outstanding invoice after selecting Customer from dropdown list
  • Enhancement: Purchase Payment Entry now automatically list all outstanding invoice after selecting Vendor from dropdown list
  • Enhancement: New option on Sales Order Entry and Purchase Order Entry => Credit And Cash payment
  • When selecting cash payment, user must fill the amount of cash to be paid in full amount and then related invoice and payment record will be created automatically
  • When selecting credit payment, invoice will be generated automatically by system user may also fill amount of cash in partial amount as down payment, and payment record will be created automatically

Version 1.1.600

  • Enhancement: Added field "Quantity in One Carton" in Master Item Entry
  • Enhancement: Option Cash/Credit on Sales Payment Entry
  • Enhancement: Option Cash/Credit on Purchase Payment Entry
  • Enhancement: Sales Invoice List & report now display paid and outstanding value
  • Enhancement: Purchase Invoice List & report now display paid and outstanding value
  • New report: Outstanding Sales Invoice List
  • New report: Outstanding Purchase Invoice List
  • New report: Sales Payment By Customer List
  • New report: Purchase Payment By Vendor List

Version 1.1.525

  • New feature: Sales Invoice Entry
  • New feature: Sales Invoice List
  • New feature: Purchase Invoice Entry
  • New feature: Purchase Invoice List
  • New feature: Sales Payment Entry
  • New feature: Sales Payment List
  • New feature: Purchase Payment Entry
  • New feature: Purchase Payment List
  • New report: Sales Invoice List
  • New report: Purchase Invoice List
  • New report: Sales Payment List
  • New report: Purchase Payment List

 

Cheers,
Nur Hidayat
hidayat365@gmail.com

 

 

My Pet Project: Biruni.NET

My pet project, creating a Desktop Based ERP Application Currently – 2012/11/13 – this is only skeleton code for my fun project. Next, it should contain modules such as, order entry, inventory control, manufacturing, accounting and probably human resource management. Please follow my github project at https://github.com/hidayat365/Biruni.NET for updates

Components

This project uses ComponentOne WinForms 2011v3, so please get your own license for this component

Projects

  • Biruni.FE, for main front end
  • Biruni.Master, module for managing master lookup data
  • Biruni.Orders, module for managing order entry
  • Biruni.Shared, module for shared component

Copyright

Please use this for educational purpose only, no commercial work should derive from this project.

Cheers,
Nur Hidayat
hidayat365@gmail.com

 

Aplikasi Database Sederhana (drag-drop-style)

Membuat Aplikasi Database Sederhana menggunakan VB.net dan C#

Artikel ini berupa tutorial step-by-step untuk membuat aplikasi database sederhana menggunakan C# dan database SQL Server Compact Edition. Aplikasi yang akan kita buat adalah aplikasi “Address Book” berfungsi untuk menyimpan data kontak dan nomor telepon. Dalam tutorial kali ini, aplikasi hanya akan berfungsi untuk menambah, mengubah dan menghapus data. Pengembangan selanjutnya seperti fasilitas searching dan lain-lain ane serahkan pada agan-agan untuk mengembangkannya. Aplikasi ini menggunakan metode data-binding untuk menghubungkan komponen user interface (dalam tutorial ini menggunakan DataGridView) dengan data yang tersimpan dalam DataSet.

(more…)