تقييم الموضوع :
  • 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 ك ب / التحميلات : 591)
اللهم صلي علي نبي (الرحمه) محمد رسول الله وبارك علي اله وصحابته والتابعين  واحقن دماء امتنا واجعل بأسنا علي اعدائنا يا ارحم الراحمين
[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 , اسامه الهرماوي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل من الممكن العمل على قاعدة بيانات اكسل على الفيجوال بيسك خالد كامل1 4 141 24-03-24, 02:00 AM
آخر رد: خالد كامل1
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 160 06-03-24, 07:49 PM
آخر رد: احمد خطاب
  حذف الاسطر الفارغه من الداتا جريد فيو اليوم السابع 3 2,378 03-03-24, 12:57 AM
آخر رد: مصمم هاوي
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 236 25-02-24, 11:26 PM
آخر رد: heem1986
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 168 25-02-24, 06:29 AM
آخر رد: loay775
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 162 21-02-24, 01:37 AM
آخر رد: heem1986
  انشاء قاعدة بيانات من ملف سكربت strongriseman 5 507 17-02-24, 02:57 PM
آخر رد: strongriseman
  سؤال عن عملية حذف سجل من قاعدة البيانات assuhimi 3 261 11-02-24, 08:43 PM
آخر رد: assuhimi
  فلترة datagridview بدون قاعدة بيانات صالح عبدالله 3 314 02-02-24, 04:07 PM
آخر رد: صالح عبدالله
  [VB.NET] مشكلة التاريخ في الداتا قريد فيو مبرمج صغير 1 6 404 24-01-24, 10:12 PM
آخر رد: annagui

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


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