السلام عليكم إخواني الكرام
عندي مشروع قاعدة بيانات من نوع اكسس
هذه جملة الاتصال
PHP كود :
Imports System.Data Imports System.Data.OleDb
Public Class Form1 Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=kofa.accdb;")
تعرض البيانات داخل داتا جريد فيو عن طريق الداتا سورس
PHP كود :
Dim da As New OleDbDataAdapter("SELECT * FROM student", con) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt
قد نحتاج لاستيراد بيانات من ملف اكسل داخل الداتا جريد فيو وبالفعل تمت العملية بنجاح وهذا هو الكود
PHP كود :
Private Sub Button13_Click_1(sender As Object, e As EventArgs) Handles Button13.Click
ofd.Filter = "Excel 2007|*.xlsx|Excel 2003|*.xls" If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then DataGridView1.DataSource = Nothing DataGridView1.Columns.Clear() Dim path As String = ofd.FileName Dim conn As New OleDbConnection("PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE=" & path & "; EXTENDED PROPERTIES=EXCEL 12.0;") Dim ds As New DataSet Dim da As New OleDbDataAdapter("SELECT * FROM [ورقة1$]", conn) da.Fill(ds, "[ورقة1$]") DataGridView1.DataSource = ds.Tables("[ورقة1$]")
Else End End If
End Sub
المشكلة التي حيرتني أريد حفظ هذه البيانات داخل قاعدة البيانات الاساسية الاكسس للبرنامج
وانا كل ثقة في اساتذتي في هذا المنتدى الجميل أن يجدوا حلا لهذه المشكلة المعقدة
تقبلوا تحياتي وشكرا مقدما على المساعدة وجزاكم الله خيرا
18-12-16, 05:00 AM (آخر تعديل لهذه المشاركة : 18-12-16, 05:03 AM {2} بواسطة zinom.)
(17-12-16, 01:43 PM)عمرو نجيب كتب : هل ممكن أخي تتفضل علينا وترفق لي الكود بارك الله فيك
اولا : الفضل لله وحده اخي
لكن الاخ الكريم ممكن يكون مشغول وكلنا كذلك
فاعزر له ذلك
تفضل اخي الكريم ده الكود كله لو محتاج تنسخو وخلاص
وكمان فيه مثال مرفق
لو محتاج تفهم الكود كمل الموضوع
كود :
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'هو صف من صفوف الجريد saf
For Each saf As DataGridViewRow In DataGridView1.Rows
If Not saf.IsNewRow Then
Dim Str As String
Dim Connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\zinom_db.accdb;Persist Security Info=Tru"
Dim newconnection As New OleDbConnection(Connectionstring)
Dim cmds As New OleDb.OleDbCommand
If Not newconnection.State = ConnectionState.Open Then
newconnection.Open()
End If
cmds.Connection = newconnection
Str = "insert into Table1(name,age,adress,phone)" & _
"values (@1,@2,@3,@4)"
cmds.CommandText = Str
cmds.Connection = newconnection
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@2", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@3", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@4", saf.Cells(3).Value.ToString)
cmds.ExecuteNonQuery()
cmds.Dispose()
newconnection.Close()
End If
Next
MsgBox("تمت عمليةالحفظ بناجح")
End Sub
سوف تستخدم دالة For Each
لعمل ال loop
وهي كالتالي
متغير اسمه saf اقصد بهصف هو صف من صفوف الجريد فيو
شرح الكود
لكل متغير صف الي هيكون من نوع صفوف الجريد فيو
في الجريد فيو رقم 1 . فئة الصفوف
كود :
For Each saf As DataGridViewRow In DataGridView1.Rows
ملحوظه : الكود الي فوق ده قسمين ده هو الكود الي تحت
كود :
Dim sadd As DataGridViewRow
For Each sadd In DataGridView1.Rows
Next
يعني sadd يا برنامج اعتبرو صف من صفوف الداتا جريد فيو
- لو الجريد فيو دي عربيه
يبقي sad باب من ابواب العربيه cells شبابيك الباب sad الي هوا باب العربيه
كود :
If Not saf.IsNewRow Then
شرحها :
اذا كان صف ده مش صف جديد
إذاً
ملحوظه : لان الصف الجديد بيكون فاضي
ملحوظه لو ماعملتش الجمله دي هتخرج رساله تقولك ان
الكائن ده مش متعرف او لا ينتمي الي فئه معرفه في برنامجك
زي الرساله دي
ملحوظه : الخطأ ده ممكن نتلاشاه بإننا نستخدم دالة try
لكن اعتقد ان القاعده هيكون فيها صفوف فاضيه مترقمه فقط
فطالما الحل موجود ليه نسيبو
كود :
Try
Catch ex As Exception
End Try
Try
بعد كده بيجي دور كود الحفظ
كود :
Dim Str As String
Dim Connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\zinom_db.accdb;Persist Security Info=Tru"
Dim newconnection As New OleDbConnection(Connectionstring)
Dim cmds As New OleDb.OleDbCommand
If Not newconnection.State = ConnectionState.Open Then
newconnection.Open()
End If
cmds.Connection = newconnection
Str = "insert into Table1(name,age,adress,phone)" & _
"values (@1,@2,@3,@4)"
cmds.CommandText = Str
cmds.Connection = newconnection
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@2", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@3", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@4", saf.Cells(3).Value.ToString)
cmds.ExecuteNonQuery()
cmds.Dispose()
newconnection.Close()
بنتعامل هنا مع المتغير صف
بنقولو هاتلي قيمة الخليه رقم صفر الموجوده في الصف الي اسمه صف
(17-12-16, 01:43 PM)عمرو نجيب كتب : هل ممكن أخي تتفضل علينا وترفق لي الكود بارك الله فيك
اولا : الفضل لله وحده اخي
لكن الاخ الكريم ممكن يكون مشغول وكلنا كذلك
فاعزر له ذلك
تفضل اخي الكريم ده الكود كله لو محتاج تنسخو وخلاص
وكمان فيه مثال مرفق
لو محتاج تفهم الكود كمل الموضوع
كود :
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'هو صف من صفوف الجريد saf
For Each saf As DataGridViewRow In DataGridView1.Rows
If Not saf.IsNewRow Then
Dim Str As String
Dim Connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\zinom_db.accdb;Persist Security Info=Tru"
Dim newconnection As New OleDbConnection(Connectionstring)
Dim cmds As New OleDb.OleDbCommand
If Not newconnection.State = ConnectionState.Open Then
newconnection.Open()
End If
cmds.Connection = newconnection
Str = "insert into Table1(name,age,adress,phone)" & _
"values (@1,@2,@3,@4)"
cmds.CommandText = Str
cmds.Connection = newconnection
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@2", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@3", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@4", saf.Cells(3).Value.ToString)
cmds.ExecuteNonQuery()
cmds.Dispose()
newconnection.Close()
End If
Next
MsgBox("تمت عمليةالحفظ بناجح")
End Sub
سوف تستخدم دالة For Each
لعمل ال loop
وهي كالتالي
متغير اسمه saf اقصد بهصف هو صف من صفوف الجريد فيو
شرح الكود
لكل متغير صف الي هيكون من نوع صفوف الجريد فيو
في الجريد فيو رقم 1 . فئة الصفوف
كود :
For Each saf As DataGridViewRow In DataGridView1.Rows
ملحوظه : الكود الي فوق ده قسمين ده هو الكود الي تحت
كود :
Dim sadd As DataGridViewRow
For Each sadd In DataGridView1.Rows
Next
يعني sadd يا برنامج اعتبرو صف من صفوف الداتا جريد فيو
- لو الجريد فيو دي عربيه
يبقي sad باب من ابواب العربيه cells شبابيك الباب sad الي هوا باب العربيه
كود :
If Not saf.IsNewRow Then
شرحها :
اذا كان صف ده مش صف جديد
إذاً
ملحوظه : لان الصف الجديد بيكون فاضي
ملحوظه لو ماعملتش الجمله دي هتخرج رساله تقولك ان
الكائن ده مش متعرف او لا ينتمي الي فئه معرفه في برنامجك
زي الرساله دي
ملحوظه : الخطأ ده ممكن نتلاشاه بإننا نستخدم دالة try
لكن اعتقد ان القاعده هيكون فيها صفوف فاضيه مترقمه فقط
فطالما الحل موجود ليه نسيبو
كود :
Try
Catch ex As Exception
End Try
Try
بعد كده بيجي دور كود الحفظ
كود :
Dim Str As String
Dim Connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\zinom_db.accdb;Persist Security Info=Tru"
Dim newconnection As New OleDbConnection(Connectionstring)
Dim cmds As New OleDb.OleDbCommand
If Not newconnection.State = ConnectionState.Open Then
newconnection.Open()
End If
cmds.Connection = newconnection
Str = "insert into Table1(name,age,adress,phone)" & _
"values (@1,@2,@3,@4)"
cmds.CommandText = Str
cmds.Connection = newconnection
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@2", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@3", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@4", saf.Cells(3).Value.ToString)
cmds.ExecuteNonQuery()
cmds.Dispose()
newconnection.Close()
بنتعامل هنا مع المتغير صف
بنقولو هاتلي قيمة الخليه رقم صفر الموجوده في الصف الي اسمه صف