تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ما هو كود حفظ البيانات من الداتا جريد فيو إلى قاعدة البيانات
#1
السلام عليكم إخواني الكرام
عندي مشروع قاعدة بيانات من نوع اكسس
هذه جملة الاتصال

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 ObjectAs EventArgsHandles 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 

المشكلة التي حيرتني  أريد حفظ هذه البيانات داخل قاعدة البيانات الاساسية الاكسس للبرنامج
وانا كل ثقة في اساتذتي في هذا المنتدى الجميل أن يجدوا حلا لهذه المشكلة المعقدة
تقبلوا تحياتي وشكرا مقدما على المساعدة وجزاكم الله خيرا
الرد
تم الشكر بواسطة:
#2
اعمل Loop لداتا قريد
الرد
تم الشكر بواسطة: zinom
#3
(10-12-16, 03:22 AM)abid كتب : اعمل Loop لداتا قريد

هل ممكن أخي تتفضل علينا وترفق لي الكود بارك الله فيك
الرد
تم الشكر بواسطة: zinom
#4
هل ممكن أخي تتفضل علينا وترفق لي الكود بارك الله فيك
الرد
تم الشكر بواسطة: zinom
#5
(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()


بنتعامل هنا مع المتغير صف

بنقولو هاتلي قيمة الخليه رقم صفر الموجوده في الصف الي اسمه صف
كود :
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)

هذا وما كان من خطأ فمني ومن الشيطان

والله اعلي واعلم

اعتز لكم اخواني عن الشرح المطول
ولكن كنت اجتهد لايصال الفكره بابسط صورها حتي لا انساها
ويسهل عليا تذكرها

في المثال المرفق
طريقة اضافة صف واحد فقط
كذلك إضافة كل الصفوف دفعه واحده

بالتوفيق للجميع



الملفات المرفقة
.rar   from DataGridView to msaccess by zinom.rar (الحجم : 97.64 ك ب / التحميلات : 355)
اللهم صلي علي نبي (الرحمه) محمد رسول الله وبارك علي اله وصحابته والتابعين  واحقن دماء امتنا واجعل بأسنا علي اعدائنا يا ارحم الراحمين
[b]امين [/b]



الرد
#6
(18-12-16, 05:00 AM)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()


بنتعامل هنا مع المتغير صف

بنقولو هاتلي قيمة الخليه رقم صفر الموجوده في الصف الي اسمه صف
كود :
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)

هذا وما كان من خطأ فمني ومن الشيطان

والله اعلي واعلم

اعتز لكم اخواني عن الشرح المطول
ولكن كنت اجتهد لايصال الفكره بابسط صورها حتي لا انساها
ويسهل عليا تذكرها

في المثال المرفق
طريقة اضافة صف واحد فقط
كذلك إضافة كل الصفوف دفعه واحده

بالتوفيق للجميع


احسنت وبارك الله فيك . شرح مميزا وسهل جدا. Heart
الرد
تم الشكر بواسطة: elgokr , اسامه الهرماوي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كود تعبئة الكومبو داخل الداتا قريد فيو عمور2016 30 594 17-09-20, 11:13 PM
آخر رد: asemshahen5
  استفسار بخصوص حجم قاعدة بيانات سيكوال سيرفر momani33 0 33 16-09-20, 02:22 PM
آخر رد: momani33
  [VB.NET] تعديل البيانات من خلال فورم آخر EbrNaj00 6 159 16-09-20, 12:42 AM
آخر رد: EbrNaj00
  المساعدة في التعديل على كود تعديل البيانات في قاعدة سيكوال سيرفر momani33 3 66 15-09-20, 08:10 PM
آخر رد: Anas Mahmoud
  ربط قاعدة البيانات محمود احمد سعد 1 66 14-09-20, 03:49 PM
آخر رد: اسامه الهرماوي
  ربط قاعدة البيانات محمود احمد سعد 1 70 14-09-20, 03:00 PM
آخر رد: Anas Mahmoud
  حاجة غريبة بتحصل فى قاعدة البيانات mostafa nada 4 87 14-09-20, 08:41 AM
آخر رد: الوايلي
  هل الاستعلام وعرض البيانات عن طريق الكويري أسرع وأفضل new_programer 2 242 10-09-20, 04:58 PM
آخر رد: new_programer
  [VB.NET] احتاج الى كود ترحيل البيانات بنت الشام 2 135 08-09-20, 09:42 PM
آخر رد: Anas Mahmoud
  مشكلة عند حفظ البيانات في قاعدة بيانات SQL Server momani33 4 171 08-09-20, 03:44 PM
آخر رد: Hasaneen

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم