05-06-17, 04:27 AM
قمت بتجربة طريقتي بالاعتماد على تكرار العمود [الموضع (text)] للعدد (60277)
فكانت المدة 00:57:01 (تقريبا ساعة كاملة) أعتقد مدة طويلة غير مناسبة
ولكنها حذفت المكرر في النهاية فأصبحت العدد (59661)
فكانت المدة 00:57:01 (تقريبا ساعة كاملة) أعتقد مدة طويلة غير مناسبة
ولكنها حذفت المكرر في النهاية فأصبحت العدد (59661)
كود :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Cursor = Cursors.WaitCursor
''''''''''''''''''''هنا يكتب كود السلكت والحذف للمكرر ''''''''''''''''''''''''''
Dim c As Integer = 0
If con.State <> ConnectionState.Open Then con.Open()
Dim cmd As New OleDbCommand(String.Empty, con)
'------------------------------------------------------------------
'التأكد من وجود مكرر
'cmd.CommandText = "SELECT COUNT(c) FROM (SELECT COUNT([alpha]) AS c FROM [Table1] GROUP BY [alpha] HAVING COUNT([alpha]) > 1) "
cmd.CommandText = "SELECT COUNT(c) FROM (SELECT COUNT([الموضع (text)]) AS c FROM [Table1] GROUP BY [الموضع (text)] HAVING COUNT([الموضع (text)]) > 1) "
c = cmd.ExecuteScalar
If c > 0 Then
Dim msg As String =
"يوجد (" & c & ") بيانات لها أسطر مكررة" & vbNewLine & vbNewLine & _
"هل تود حذف الأسطر المكررة لهذه البيانات؟"
If MsgBox(msg, MsgBoxStyle.MsgBoxRight + MsgBoxStyle.MsgBoxRtlReading + MsgBoxStyle.YesNo + MsgBoxStyle.Exclamation, "حذف الأسطر المكررة للبيانات") = MsgBoxResult.Yes Then
'------------------------------------------------------------------
Try
'إضافة عمود ترقيم تلقائي
cmd.CommandText = "ALTER TABLE [Table1] ADD [id] INT IDENTITY(1,1)"
cmd.ExecuteNonQuery()
Catch ex As OleDbException
End Try
'------------------------------------------------------------------
'حذف المكرر
cmd.CommandText = "DELETE FROM [Table1] WHERE [ID] NOT IN (SELECT MIN(ID) FROM [Table1] GROUP BY [الموضع (text)]);"
cmd.ExecuteNonQuery()
'------------------------------------------------------------------
Try
'حذف عمود الترقيم التلقائي
cmd.CommandText = "ALTER TABLE [Table1] ADD [id] INT IDENTITY(1,1)"
cmd.ExecuteNonQuery()
Catch ex As OleDbException
End Try
'------------------------------------------------------------------
MsgBox("تم حذف (" & c & ") أسطر بنجاح")
Else
MsgBox("تم الغاء الحذف ")
End If
Else
MsgBox("لا توجد بيانات مكررة")
End If
con.Close()
Me.Cursor = Cursors.Default
End Sub