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, yaitu FindItemWithText(), contoh
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 : djiesoft.blogspot.com
0 KOMENTAR