(31-03-17, 03:19 AM)أبووسم كتب : اخي حريف اطال الله عمرك على طاعته.
لا اعرف كيف إستيراد البيانات بالكود. ممكن شرح مبسط او برنامج يوضح الطريقة. شاكر لك مرورك
آمين وياك والأعظاء جميع ،،،
هناك مصطلحات لابد الاتفاق على تسميتها .
البرنامج القديم = البرنامج المعمول قبل عشرة سنوات على كلامك .
البرنامج الجديد = اللي انته سويته وبعد كل فترة تستورد البيانات من القديم له .
على كلامك بعد كل فترة تستورد البيانات من القديم للجديد واقصد بالبيانات هنا اسماء الموظفين فقط محدثة بعد الفصل والتقاعد وإضافة اسماء جديدة عليه .
طيب ،،، الكود يجب ان يكون في كوماند واحد (زر واحد)
الخطوة الأولى تتصل بقاعدة البيانات القديمة ،، وتخزن بيانات جدول الموظفين في داتاسيت وهذا الكود :
'قاعدة بيانات البرنامج القديم لنفرض اسمها db1.accdb وموجودة في القرص D
'جدول الموظفين في البرنامج القديم لنفرض اسمه tableold
كود :
Dim conn1 As New OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0; Data Source=D:\db1.accdb")
Dim dp As New OleDbDataAdapter("select * from tableold", conn1)
Dim ds As New DataSet
dp.Fill(ds)
الآن بيانات جدول الموظفين للبرنامج القديم موجودة في الداتا سيت .
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
الخطوة الثانية تمسح بيانات الموظفين من جدول الموظفين في البرنامج الجديد (جدول الصور لا تمسح بياناته) .
'قاعدة بيانات البرنامج الجديد لنفرض اسمها db2.accdb وموجودة في القرص D
'جدول الموظفين في البرنامج الجديد لنفرض اسمه tablenew
كود :
Dim conn2 As New OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0; Data Source=D:\db2.accdb")
Dim cmd As New OleDbCommand
cmd.Connection = conn2
conn2.Open()
'مسح بيانات جدول الموظفين في قاعدة بيانات البرنامج الجديد
كود :
cmd.CommandText = "delete from tablenew"
cmd.ExecuteNonQuery()
الآن مسحنا بيانات جدول الموظفين في قاعدة البرنامج الجديد .
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
الخطوة الثالثة تحفظ بيانات الداتا سيت في جدول الموظفين الجديد .
'استيراد بيانات جدول الموظفين من قاعدة البرنامج القديم لقاعدة البرنامج الجديد
كود :
For i = 0 To ds.Tables.Count - 1
cmd.CommandText = "insert into tablenew (a1,a2,a3,a4) values (@a1,@a2,@a3,@a4)"
cmd.Parameters.AddWithValue("@a1", ds.Tables(0).Rows(i).Item(0))
cmd.Parameters.AddWithValue("@a2", ds.Tables(0).Rows(i).Item(1))
cmd.Parameters.AddWithValue("@a3", ds.Tables(0).Rows(i).Item(2))
cmd.Parameters.AddWithValue("@a4", ds.Tables(0).Rows(i).Item(3))
cmd.ExecuteNonQuery()
Next
cmd.Dispose()
conn2.Close()
MsgBox("تم")
الآن حفظنا بيانات جدول الموظفين في قاعدة البرنامج الجديد ، واظهرنا رسالة تفيد بالإنتهاء .
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ملاحظة
a1,a2,a3,a4 = أسماء الحقول في جدول بيانات الموظفين الجديد .
ولو حبيت تظيف اكثر من حقل ممكن تظيف ،، لنفرض سته حقول حيكون الكود كالتالي :
كود :
For i = 0 To ds.Tables.Count - 1
cmd.CommandText = "insert into tablenew (id,name,phone,email,address,city) values (@id,@name,@phone,@email,@address,@city)"
cmd.Parameters.AddWithValue("@id", ds.Tables(0).Rows(i).Item(0))
cmd.Parameters.AddWithValue("@name", ds.Tables(0).Rows(i).Item(1))
cmd.Parameters.AddWithValue("@phone", ds.Tables(0).Rows(i).Item(2))
cmd.Parameters.AddWithValue("@email", ds.Tables(0).Rows(i).Item(3))
cmd.Parameters.AddWithValue("@address", ds.Tables(0).Rows(i).Item(4))
cmd.Parameters.AddWithValue("@city", ds.Tables(0).Rows(i).Item(5))
cmd.ExecuteNonQuery()
Next
وهكذا ....
طيب حيكون في موظفين تقاعدو او فصلو ومازالت صورهم مخزنة في جدول الصور للبرنامج الجديد ،، هنا ممكن نعمل كود يقارن برقم الهوية بين الجدولين ورقم الهوية الموجود في جدول الصور وغير موجود في جدول الموظفين يقوم بحذف صورتة من جدول الصور للبرنامج الجديد ،،،
وحيكون ايضاً في موظفين جدد تقوم بإدراج صورهم من جديد .
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
الكود كامل :
كود :
Dim conn1 As New OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0; Data Source=D:\db1.accdb")
Dim dp As New OleDbDataAdapter("select * from tableold", conn1)
Dim ds As New DataSet
dp.Fill(ds)
Dim conn2 As New OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0; Data Source=D:\db2.accdb")
Dim cmd As New OleDbCommand
cmd.Connection = conn2
conn2.Open()
cmd.CommandText = "delete from tablenew"
cmd.ExecuteNonQuery()
For i = 0 To ds.Tables.Count - 1
cmd.CommandText = "insert into tablenew (a1,a2,a3,a4) values (@a1,@a2,@a3,@a4)"
cmd.Parameters.AddWithValue("@a1", ds.Tables(0).Rows(i).Item(0))
cmd.Parameters.AddWithValue("@a2", ds.Tables(0).Rows(i).Item(1))
cmd.Parameters.AddWithValue("@a3", ds.Tables(0).Rows(i).Item(2))
cmd.Parameters.AddWithValue("@a4", ds.Tables(0).Rows(i).Item(3))
cmd.ExecuteNonQuery()
Next
cmd.Dispose()
conn2.Close()
MsgBox("تم")