22 Oktober 2012

Cara Cegah Data Ganda di ListView VBNET


Banyak cara untuk mencegah duplikasi data atau cara mencegah agar data yang sama tidak masuk dua kali (terutama PrimaryKey nya). Kali ini saya akan ambil contoh mencegah data ganda pada listview, karena biasanya form master detail akan menyimpan data inputan pada listview sebelum data tersebut disimpan ke table/database.
Lihatnya contoh data berikut ini :
Sebenarnya listview sudah menyediakan fungsi untuk mencari item, yaituFindItemWithText(), contoh
penggunaannya seperti ini:

Dim hasil As ListViewItem = ListView1.FindItemWithText(TextBox2.Text)
If hasil IsNot Nothing Then
   MessageBox.Show("Data Ini Sudah Ada pada Baris Ke " + (hasil.Index + 1).ToString, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
   Exit Sub
End If
ListView1.Items.Add(TextBox2.Text).SubItems.Add(TextBox3.Text)

Hanya saja FindItemWithText() ini sifatnya seperti LIKE 'xx%' di sintak SQL, jadi dari contoh diatas jika kita ketik Da atau Dat atau Data, fungsi  tersebut akan menemukan/menganggap data sudah ada di listview (Da, Dat, Data = Data) padahal item di listview tidak ada data tersebut yang ada adalah Data1, Data2, ... dan seterusnya. Maka dari itu kita harus ciptakan fungsi buatan yang lebih flexsibl, contohnya seperti ini :

For Each item As ListViewItem In ListView1.Items
   If item.Text = TextBox2.Text Then
      MessageBox.Show("Data Ini Sudah Ada pada Baris Ke " + (hasil.Index + 1).ToString, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
      Exit Sub
   End If
Next
ListView1.Items.Add(TextBox2.Text).SubItems.Add(TextBox3.Text)

Jika anda ingin melakukan validasi ke subitem nya juga maka anda tinggal tambahkan/sebutkan subitem dengan index keberapa-nya, contohnya :

For Each item As ListViewItem In ListView1.Items
   If item.Text + item.SubItems(1).Text = TextBox2.Text + TextBox3.Text Then
      MessageBox.Show("Data Ini Sudah Ada pada Baris Ke " + (hasil.Index + 1).ToString, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
      Exit Sub
   End If
Next

Semoga tulisan saya ini dapat membantu anda, terimakasih.


sumber : http://djiesoft.blogspot.com

Tidak ada komentar:

Posting Komentar