Using ToTable Function to Create Unique / Distinct Record in DataTable

C Sharp - ADO.NET , Posted at : Jun/09/2007  
3155 Views   10 Comments

Untuk mengambil data unique / distinct selain dengan menggunakan perintah Distinct di SQL statement yang di embed via DataAdapter atau Command object terdapat cara lain yang bisa menggantikan teknik tersebut. Misalnya kita ingin data yang sudah ada di sebuah datatable ingin ditampilkan ke datatable yang lain dengan record yang unique berdasarkan kolom tertentu.

DataTable mempunyai built-in DataView yang bisa langsung diakses tanpa perlu membuat sebuah variabel yang terpisahterlebih dahulu untuk membuat dataview nya. Built-in function tersebut yaitu DefaultView. Nah dari DefaultView tsb kita dapat menggunakan fungsi ToTable yang dapat melakukan filtering record berdasarkan kolom tertentu secara unique ke datatable yang lainnya.

Saya akan membuat contoh sederhana untuk menjelaskan teknik tsb. Misalkan saya punya sebuah form dengan control DataGridView yang menampilkan data CompanyName,Country dari tabel Customers database Northwind dan sebuah Button yang akan melakukan filtering record secara unique dari kolom Country ke datatable baru yang nantinya akan ditampilkan di ListView. Ok...dari pada berpanjang lebar mari kita lihat code nya saja langsung :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

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

DataTable dtCustomers;
const string constString = @"Database=Northwind;Server=.\SQL2000;Uid=sa;Pwd=";

SqlConnection sqlConn = new SqlConnection(constString);

private void GetCustomers()
{
using (SqlCommand sqlCmd = new SqlCommand())
{
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText =
"Select CompanyName,Country From Customers";

sqlConn.Open();

dtCustomers = new DataTable("customerTable");
dtCustomers.Load(sqlCmd.ExecuteReader());

dataGridView1.DataSource = dtCustomers;
}
}

private void Form1_Load(object sender, EventArgs e)
{
GetCustomers();
}

private void btnDistinct_Click(object sender, EventArgs e)
{
lvCountry.Items.Clear();

DataTable dtDistinct;

dtDistinct = dtCustomers.DefaultView.ToTable(true,
dtCustomers.Columns[1].ColumnName);

dtDistinct.DefaultView.Sort = "Country ASC";

for (int i = 0; i < dtDistinct.DefaultView.Count - 1; i++)
{
lvCountry.Items.Add(
dtDistinct.DefaultView[i].Row["Country"].ToString(),0);
}
}
}
}

Here's the screen shot :


[Comments]
sabar  Oct/31/2007 06:27:18 :
mas tolong kirim sample cara menggunakan listview supaya bisa koneksi dengan sql server donk,maksudnya listview sebagai pengganti datagrid. tolong kirim ke email saya ya mas, terimakasih Disket_com@yahoo.com sabar,
Rully Yulian MF  Oct/31/2007 06:52:03 :
ListView? Control ini tidak bisa di binding secara langsung, harus manual di looping...ok ntar klo ada waktu saya buatkan saja contohnya.
Betty  May/21/2008 08:22:30 :
hai? salam kenal mas saya sedang membuat program C# untuk menampilkan sebuah report, tapi saya sangat kesulitan cara membuat crystal report. boleh ga saya minta contohnya. oh iya kalo program untuk mengkoneksiin ke LDAP itu seperti apa? terima kasih
Rully  May/21/2008 08:35:44 :
Salam kenal juga mbak Betty...untuk Crystal Report mbak bisa lihat di artikel bagian Crystal Reports di site ini. Thx.
Betty  May/26/2008 02:56:04 :
selamat pagi?..... mas saya minta contoh pembuatan report dalam program c# dengan menggunakan databasenya dalam access. makasih
Betty  May/26/2008 03:36:36 :
mas ada yg lupa..... reportnya berbentuk grafik sama tabular
Betty  Jun/20/2008 06:03:26 :
mas minta contoh program yang mencetak dokumen report pada c# dong? makasih............. trus caranya gimana ya mas?
Wahyu Kusnandar  Jun/30/2009 05:18:08 :
Kang Rully, Kalo distinct-nya lebih dari 1 kolom (mis: 2-3 kolom), bagaimana caranya? Hatur nuhun pisan kanggo Ilmu na, semoga jadi ladang ibadah buat kang Rully. Amien...
Wahyu Kusnandar  Jun/30/2009 05:18:25 :
Kang Rully, Kalo distinct-nya lebih dari 1 kolom (mis: 2-3 kolom), bagaimana caranya? Hatur nuhun pisan kanggo Ilmu na, semoga jadi ladang ibadah buat kang Rully. Amien...
Wahyu Kusnandar  Jun/30/2009 05:27:09 :
Kang Rully, Kalo distinct-nya lebih dari 1 kolom (mis: 2-3 kolom), bagaimana caranya? Hatur nuhun pisan kanggo Ilmu na, semoga jadi ladang ibadah buat kang Rully. Amien...

[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

oghi
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 3175 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2592 times  
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 2180 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 2127 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1806 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News