18-08-14, 01:19 PM
.....
هذه دالة قديمة قد تفيدك
منقول
دالة نسخ بيانات عمود واحد من جدول إلى أخر بنفس الإسم والنوع والحجم مع عدم التكرار
طريقة استخدام الدالة
.....
هذه دالة قديمة قد تفيدك
منقول
دالة نسخ بيانات عمود واحد من جدول إلى أخر بنفس الإسم والنوع والحجم مع عدم التكرار
كود :
' دالة نسخ بيانات عمود واحد من جدول إلى أخر بنفس الإسم والنوع والحجم مع عدم التكرار
Public Sub CopyOneColumnFromTableToAnother(connectionString As String, table1 As String, column As String, table2 As String)
Try
' إنشاء الإتصال بقاعدة البيانات
Using cnn As New OleDbConnection(connectionString)
' فتح الإتصال بقاعدة البيانات
cnn.Open()
' جدول مؤقت
Using dt As New DataTable
' نسخ العمود من الجدول الأصل
Using comm1 As New OleDb.OleDbCommand(" SELECT [" & column & "] FROM [" & table1 & "] ", cnn)
' تعبئة الجدول المؤقت ببيانات العمود من الجدول الأصل
dt.Load(comm1.ExecuteReader)
' حلقة المرور على الأسطر
For Each row As DataRow In dt.Rows
' الاستعلام في وجود القيمة في الجدول الثاني
Using comm2 As New OleDbCommand("SELECT COUNT([" & column & "]) FROM [" & table2 & "] WHERE [" & column & "]=@column ", cnn)
' لابد من مسح البارامترات لتعبئته لبيانات جديدة
comm2.Parameters.Clear()
' تمرير البيانات من البيامترات إلى جملة الإستعلام
comm2.Parameters.AddWithValue("@column", row(column))
' إذا لم يجد القيمة في الجدول الثاني
If comm2.ExecuteScalar = 0 Then
' إضافة السطر إلى الجدول الثاني
comm1.CommandText = " INSERT INTO [" & table2 & "] ( [" & column & "] ) VALUES ( @column ) "
' لابد من مسح البارامترات لتعبئته لبيانات جديدة
comm1.Parameters.Clear()
' تمرير البيانات من البيامترات إلى جملة الإضافة
comm1.Parameters.AddWithValue("@column", row(column))
' تنفيذ أمر الإضافة
comm1.ExecuteNonQuery()
End If
End Using
Next
End Using
' غلق الإتصال بقاعدة البيانات
cnn.Close()
End Using
End Using
Catch ex As Exception
' عرض رسالة بالخطأ الحاصل إن وجد
MsgBox(ex.Message)
End Try
End Subطريقة استخدام الدالة
كود :
Public connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|database1.accdb"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CopyOneColumnFromTableToAnother(connectionString, "table1", "column4", "table2")
End Sub.....



