منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
ادخال بيانات لقاعدة بيانات عن طريق عداد - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : ادخال بيانات لقاعدة بيانات عن طريق عداد (/showthread.php?tid=30713)



ادخال بيانات لقاعدة بيانات عن طريق عداد - bassant - 04-08-19

اقوم بادخال بيانات لقاعدة بيانات باستخدام الفيجوال بيسك وليس باستيرادها مباشرة الى sql حيث اقوم باستيرادها من جدول ايكسيل الى داتا جريد اولا ثم من الداتا جريد الى قاعدة البيانات sql 

اقوم بادخال البيانات بشكل يدوي حيث اقوم باختيار الصف ثم الضغط على زر الادخال

اريد عمل عداد يقوم بادخال البيانات من الداتا جريد الى قاعدة البيانات دفعة واحدة


RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - asemshahen5 - 04-08-19

ضع مثال بسيط لاعدله لك .


RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - bassant - 05-08-19

لا يوجد مثال ببساطة
اريد عمل عداد يحفظ البيانات معروضة في داتا جريد يحفظها في قاعدة بيانات السيكوال
العداد يعمل لكي يحفظ كل صف على حدة ولكن مرة واحدة
فما أقوم بفعله اختار كل صف على حدة والضغط على زر حفظ لكن ما أريده هو عند الضغط على الزر يقوم بحفظ جميع الصفوف مرة واحدة


RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - Rabeea Qbaha - 05-08-19

ببساطه صديقي ، قم بوضع جملة الاضافة في لوب فقط 

PHP كود :
       For i 0 To DataGridView1.Rows.Count 1
'جملة الاضافة
        Next 



RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - ابراهيم ايبو - 05-08-19

السلام عليكم اخي الكريم
لنفترض ان لديك في الداتاغرايد 3 حقول : ID ,Item,Total
والداتاغرايد فيها عدد من السجلات وتريد حفطها في جدول اسمه Table
الامر نفسه جملة الانسرت العادية لكن هنا ستأخذ قيم الحقول من الداتاغرايد وفق جملة For بدلا من مربعات الادخال
بحيث ياخذ الصفوف تباعا واحدا بلو الاخر ويقوم بالحفظ كالمعتاد
واليك الكود للحقول التي ذكرتها لك يبقى ان تغير الاسماء وعدد الحقول لما عندك
كود :
Dim Cmd As New OleDbCommand()
   Private Sub Btn_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Save.Click
'هنا ستقوم بتعريف هذه المتغيرات
       Dim Id As Integer
       Dim item As String
       Dim total As String
       Dim Cmd As New OleDbCommand("insert into Table (Id,Item,Total)values(@Id,@Item,@Total)", con)
       ' تحتاج الى هذه الفور زيادة على الحفظ العادي
       For i As Integer = 0 To Datagrid1.Rows.Count - 1
           Id = Datagrid1.Rows(i).Cells(0).Value
           item = Datagrid1.Rows(i).Cells(1).Value
           total = Datagrid1.Rows(i).Cells(2).Value
       Next

       Cmd.Parameters.Add(New OleDbParameter("@Id", OleDbType.Integer)).Value = Id
       Cmd.Parameters.Add(New OleDbParameter("@Item", OleDbType.VarWChar)).Value = item
       Cmd.Parameters.Add(New OleDbParameter("@Total", OleDbType.VarWChar)).Value = total
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)

   End Sub



RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - asemshahen5 - 06-08-19

(05-08-19, 10:54 PM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
لنفترض ان لديك في الداتاغرايد 3 حقول : ID ,Item,Total
والداتاغرايد فيها عدد من السجلات وتريد حفطها في جدول اسمه Table
الامر نفسه جملة الانسرت العادية لكن هنا ستأخذ قيم الحقول من الداتاغرايد وفق جملة For بدلا من مربعات الادخال
بحيث ياخذ الصفوف تباعا واحدا بلو الاخر ويقوم بالحفظ كالمعتاد
واليك الكود للحقول التي ذكرتها لك يبقى ان تغير الاسماء وعدد الحقول لما عندك
كود :
Dim Cmd As New OleDbCommand()
   Private Sub Btn_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Save.Click
'هنا ستقوم بتعريف هذه المتغيرات
       Dim Id As Integer
       Dim item As String
       Dim total As String
       Dim Cmd As New OleDbCommand("insert into Table (Id,Item,Total)values(@Id,@Item,@Total)", con)
       ' تحتاج الى هذه الفور زيادة على الحفظ العادي
       For i As Integer = 0 To Datagrid1.Rows.Count - 1
           Id = Datagrid1.Rows(i).Cells(0).Value
           item = Datagrid1.Rows(i).Cells(1).Value
           total = Datagrid1.Rows(i).Cells(2).Value
       Next

       Cmd.Parameters.Add(New OleDbParameter("@Id", OleDbType.Integer)).Value = Id
       Cmd.Parameters.Add(New OleDbParameter("@Item", OleDbType.VarWChar)).Value = item
       Cmd.Parameters.Add(New OleDbParameter("@Total", OleDbType.VarWChar)).Value = total
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)

   End Sub
بعد إذنك أخي ابراهيم يجب وضع الباراميتر داخل اللوب لانها ستاخذ فقط اخر سجل و لم تضيف السجلات التي قبله في حال كان عامل الغريد كاملا للإضافة .


RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - ابراهيم ايبو - 06-08-19

السلام عليكم اخي الكريم 
نعم كما اشار اخي عاصم مشكورا يجب ان تكون الباراميترات داخل جملة الفور
شي اخر انتبهت اليه وهو عملية الفتح والاغلاق بجب ان لاتكون داخل جملة الفور
لنتصور ان لدينا مثلا 100 سجل وهنا سيتم الفتح والاغلاق 100 مرة وهذا خطأ 
اليك الكود بعد التعديل
كود :
Dim Cmd As New OleDbCommand()
   Private Sub Btn_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Save.Click
       'هنا ستقوم بتعريف هذه المتغيرات
       Dim Id As Integer
       Dim item As String
       Dim total As String
       Dim Cmd As New OleDbCommand("insert into Table (Id,Item,Total)values(@Id,@Item,@Total)", con)
       ' تحتاج الى هذه الفور زيادة على الحفظ العادي
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       For i As Integer = 0 To Datagrid1.Rows.Count - 1
           Id = Datagrid1.Rows(i).Cells(0).Value
           item = Datagrid1.Rows(i).Cells(1).Value
           total = Datagrid1.Rows(i).Cells(2).Value

           Cmd.Parameters.Add(New OleDbParameter("@Id", OleDbType.Integer)).Value = Id
           Cmd.Parameters.Add(New OleDbParameter("@Item", OleDbType.VarWChar)).Value = item
           Cmd.Parameters.Add(New OleDbParameter("@Total", OleDbType.VarWChar)).Value = total

           Cmd.ExecuteNonQuery()
       Next
       con.Close()
       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)

   End Sub



RE: ادخال بيانات لقاعدة بيانات عن طريق عداد - Beginer - 07-08-19

إذا كان تعريف cmd خارج For والباراميترات داخل For فيجب إضافة سطر إفراغ الباراميترات في بداية For هكذا
PHP كود :
For As Integer 0 To Datagrid1.Rows.Count 1
    Cmd
.Parameters.Clear