Ada field yang bisa dijadikan kunci ?
Misalkan data anda adalah data customer, mungkin ada satu field bernama kode
kustomer yang bisa dibuatkan kuncinya, tetapi ternyata sudah ada exist
beberapa kode customer yang sama, bahkan ternyata kode yang sama dipakai
oleh customer berbeda.
Anda bisa periksa dari sql servernya dulu menggunakan TSQL di SQL Query
Analyzer untuk memperoleh data yang sama. Misalkan patokan kita adalah kode
kustomer yang sama:
SELECT KodeCustomer, SUM(1) Jumlah
FROM Customers
GROUP BY KodeCustomer
HAVING SUM(1) <> 1
Script di atas akan memberikan anda list kode kustomer dengan kode yang sama
itu terbit berapa kali, contoh datanya:
A00001 | 2
A00002 | 3
A00005 | 2
Untuk memeriksa isi detail dari tabel yang berkode sama, tinggal joinkan
saja lagi dengan tabel aslinya:
SELECT C.*
FROM Customers C
INNER JOIN (
SELECT KodeCustomer, SUM(1) Jumlah
FROM Customers
GROUP BY KodeCustomer
HAVING SUM(1) <> 1
) G ON C.KodeCustomer = G.KodeCustomer
Dari list ini, mungkin harus ada campur tangan manual untuk menentukan
customer mana yang akan memakai kode ganda tersebut, dan customer mana yang
akan dibuang, atau akan diberi kode baru.
Nah, dari sini, jika sudah beres kode yang bermasalah, anda bisa menggunakan
cara temporary tabel untuk menampung data dari tabel asli yang dalam kondisi
DISTINCT (ganda di eliminir):
SELECT DISTINCT * INTO #Customer FROM Customer
Lalu kosongkan tabel Customer:
DELETE Customer
Lalu masukkan kembali tabel sementara tadi ke tabel aslinya:
INSERT Customer
SELECT *
FROM #Customer
Optional, anda bisa buang temp. table dari memory:
DROP TABLE #Customer.
Dari contoh sederhana ini, anda bisa sesuaikan field2 yang diinginkan,
termasuk kemungkinan key merupakan komposit dari dua field (mis.
KodeCustomer + KodeArea).
Selamat bekerja.
Aksan Kurdin
Ps. Jangan lupa backup dulu..
From: [email protected] [mailto:[EMAIL PROTECTED]
On Behalf Of [EMAIL PROTECTED]
Sent: Monday, July 30, 2007 9:03 AM
To: [email protected]
Subject: [Programmer-VB] nanya tentang VB code utk hapus data ganda
Bro,
Saya punya problem neeh dalam menghapus data yang ada diSQL Server dengan
menggunakan ODBC
karena data diserver ada banyak yang double datanya maka saya mau menghapus
dulu data yang ada di databasenya semua
setelah itu saya akan input lagi datanya
tetapi saya ada problem saat menghapus datanya
padahal saya sudah masukkan code "ON ERROR RESUME NEXT"
tapi tetap saja keluar syntak errornya, dan datanya tidak terhapus
apakah kawan-kawan ada yg punya cara atau masukan yang lain untuk menghapus
data tsb, tapi jangan cara manual ya, lumayan ada sekitar seribu data
Regard & Thanks
Fendy