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

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=29466)



اضافة صف جديد لدلتا جريد مرتبط - nourmandour - 23-04-19

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


RE: اضافة صف جديد لدلتا جريد مرتبط - حريف برمجة - 24-04-19

المشكلة لأن الداتاقريدفيو مرتبطة بمصدر بيانات ولا يمكن إضافة اسطر جديدة مباشرة للداتاقريدفيو ،،

الحل :

إضافة البيانات اولاً لمصدر البيانات داتاتيبل ومن ثم تحديث الداتاقريدفيو .


RE: اضافة صف جديد لدلتا جريد مرتبط - نادر منتصر - 24-04-19

مثل اجابة حريف برمجة فهي صحيحة 100%


RE: اضافة صف جديد لدلتا جريد مرتبط - elgokr - 24-04-19

فى البداية لا اعلم لماذا اللفة والدوران اللى انت عملته فى الكود
انشاء بيانات الداتا يدوي
ومن ثم تفريغه ومن ثم تعبئته من الداتا سيت

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

ولكن كل ما يمكننى افادتك به هو فتح عرض الكود الخاص Form1

وحذف جميع الاسطر بها ليتم ادراج الكود التالى
كود :
Public Class Form1
   Private Sub vgrid()
       dgrid.Columns(0).Visible = True
       dgrid.Columns(0).HeaderText = "مسلسل"
       dgrid.Columns(0).Width = 60
       dgrid.Columns(1).Visible = True
       dgrid.Columns(1).HeaderText = "مجموعه"
       dgrid.Columns(1).Width = 150
       dgrid.Columns(2).Visible = True
       dgrid.Columns(2).HeaderText = "الصنف"
       dgrid.Columns(2).Width = 175
       dgrid.Columns(3).Visible = True
       dgrid.Columns(3).HeaderText = "الكمية"
       dgrid.Columns(3).Width = 80
       dgrid.Columns(4).Visible = True
       dgrid.Columns(4).HeaderText = "السعر"
       dgrid.Columns(4).Width = 80
       dgrid.Columns(5).Visible = True
       dgrid.Columns(5).HeaderText = "الاجمالي"
       dgrid.Columns(5).Width = 80
       Me.dgrid.RowHeadersVisible = False
   End Sub
   Private Sub itmcost()
       Dim sqlitm = "select s1,s3,s4 from sanf where sm0= " & Chr(39) & "" & ComboBox1.Text & "" & Chr(39) & " group by s1,s3,s4"
       Dim itmds As New DataSet
       conn.Open()
       Dim dat As New OleDb.OleDbDataAdapter(sqlitm, conn)
       itmds.Clear()
       dat.Fill(itmds, "sanf")
       conn.Close()
       DataGridView1.DataSource = itmds
       DataGridView1.DataMember = "sanf"
       DataGridView1.Columns(0).Visible = True
       DataGridView1.Columns(0).HeaderText = "اســـم الصنــف"
       DataGridView1.Columns(0).Width = 150
       DataGridView1.Columns(1).Visible = False
       DataGridView1.Columns(2).Visible = False
   End Sub
   Private Sub itmcostcrsh()
       Dim sqlit = "select s1,s3,s4 from sanf where sm0= " & Chr(39) & "" & ComboBox1.Text & "" & Chr(39) & " and s1 like '" & TextBox4.Text & "%'"
       Dim itm As New DataSet
       conn.Open()
       Dim dats As New OleDb.OleDbDataAdapter(sqlit, conn)
       itm.Clear()
       dats.Fill(itm, "sanf")
       conn.Close()
       DataGridView1.DataSource = itm
       DataGridView1.DataMember = "sanf"
       DataGridView1.Columns(0).Visible = True
       DataGridView1.Columns(0).HeaderText = "اســـم الصنــف"
       DataGridView1.Columns(0).Width = 150
       DataGridView1.Columns(1).Visible = False
       DataGridView1.Columns(2).Visible = False
   End Sub
   Private Sub TOTALrow()
       Dim total1 As String = 0
       For s As Integer = 0 To dgrid.Rows.Count - 1
           total1 += dgrid.Rows(s).Cells(5).Value
       Next s
       total.Text = total1
   End Sub
   Private Sub combmgma()
       Try
           ComboBox1.Items.Clear()
           Dim Cmd As New OleDb.OleDbCommand
           With Cmd
               .CommandType = CommandType.Text
               .CommandText = (" Select * From mgma ")
               .Connection = conn
           End With
           Dim DA As New OleDb.OleDbDataAdapter(Cmd)
           Dim DT As New DataTable()
           DA.Fill(DT)
           For Each AddData In DT.Rows
               ComboBox1.Items.Add(AddData.item(1))
           Next
           With ComboBox1
               .AutoCompleteMode = AutoCompleteMode.SuggestAppend
               .AutoCompleteSource = AutoCompleteSource.ListItems
           End With
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub
   Private Sub comboname()
       Try
           ComboBox2.Items.Clear()
           Dim Cmd As New OleDb.OleDbCommand
           With Cmd
               .CommandType = CommandType.Text
               .CommandText = (" Select * From amel ")
               .Connection = conn
           End With
           Dim DA As New OleDb.OleDbDataAdapter(Cmd)
           Dim DT As New DataTable()
           DA.Fill(DT)
           For Each AddData In DT.Rows
               ComboBox2.Items.Add(AddData.item(1))
           Next
           With ComboBox2
               .AutoCompleteMode = AutoCompleteMode.SuggestAppend
               .AutoCompleteSource = AutoCompleteSource.ListItems
           End With
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       If TextBox1.Text = "" Then Exit Sub
       dgrid.Rows.Clear()
       TextBox1.Text = Format(Val(TextBox1.Text), "00000000")
       ComboBox2.DataBindings.Clear()
       TextBox10.DataBindings.Clear()
       TextBox2.DataBindings.Clear()
       Dim sqlit = "select numb,mgma,sanf,kmea,sar,agmale from fat_ba where id= " & Chr(39) & "" & TextBox1.Text & "" & Chr(39) & "and sanf<>" & Chr(39) & "" & Chr(39) & " and sanf<>" & Chr(39) & "" & Chr(39) & " group by numb,mgma,sanf,kmea,sar,agmale"
       Dim sqlit1 = "SELECT id, numb, format(date,'yyyy/MM/dd')as[date], sdad, amel, mgma, sanf, kmea, sar, agmale,mdfa FROM fat_ba where id= " & Chr(39) & "" & TextBox1.Text & "" & Chr(39) & " group by id, numb, date, sdad, amel, mgma, sanf, kmea, sar, agmale, mdfa"
       Dim itm As New DataSet
       Dim tabl As New DataSet
       Dim dats As New OleDb.OleDbDataAdapter(sqlit1, conn)
       Dim dats1 As New OleDb.OleDbDataAdapter(sqlit, conn)
       itm.Clear()
       dats1.Fill(itm, "fat_ba")
       dats.Fill(tabl, "fat_ba")
       TextBox10.DataBindings.Add("Text", tabl, "fat_ba.sdad")
       If TextBox10.Text = "نقدي" Then
           RadioButton1.Checked = True
       ElseIf TextBox10.Text = "اجل" Then
           RadioButton2.Checked = True
       ElseIf TextBox10.Text = "جزء نقدي" Then
           RadioButton3.Checked = True
           TextBox3.DataBindings.Add("Text", tabl, "fat_ba.mdfa")
       Else
           ComboBox2.Text = "" : TextBox2.Text = ""
           RadioButton1.Checked = False : RadioButton2.Checked = False : RadioButton3.Checked = False
           Exit Sub
       End If
       ComboBox2.DataBindings.Add("Text", tabl, "fat_ba.amel")
       TextBox2.DataBindings.Add("Text", tabl, "fat_ba.date")
       For ii As Integer = 0 To itm.Tables("fat_ba").Rows.Count - 1
           dgrid.Rows.Add(itm.Tables("fat_ba").Rows(ii).ItemArray)
       Next
       vgrid()
       TOTALrow()
   End Sub

   Private Sub dgrid_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrid.CellContentClick
       ComboBox1.Text = dgrid.Rows(e.RowIndex).Cells(1).Value
       TextBox5.Text = dgrid.Rows(e.RowIndex).Cells(2).Value
       TextBox6.Text = dgrid.Rows(e.RowIndex).Cells(3).Value
       TextBox7.Text = dgrid.Rows(e.RowIndex).Cells(4).Value
       Me.dgrid.Rows(e.RowIndex).Selected = True
       Dim rowdlet As Integer = e.RowIndex
       Me.dgrid.CurrentCell = Me.dgrid.Rows(e.RowIndex).Cells(1)
       dgrid.Rows.RemoveAt(rowdlet)
       For Each R As DataGridViewRow In dgrid.Rows
           R.Cells(0).Value = (R.Index + 1).ToString
       Next
       TOTALrow()
   End Sub

   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       Dim addRow(6) As String
       addRow(0) = dgrid.Rows.Count
       addRow(1) = ComboBox1.Text
       addRow(2) = TextBox5.Text
       addRow(3) = TextBox6.Text
       addRow(4) = TextBox7.Text
       addRow(5) = Val(TextBox6.Text) * Val(TextBox7.Text)
       dgrid.Rows.Add(addRow)
       TOTALrow()
   End Sub

   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
       itmcost()
       GroupBox4.Visible = True
       If DataGridView1.Rows.Count <= 0 Then GroupBox4.Visible = False : MsgBox("هــذة المجـمـوعــه فارغــة " & vbCrLf & "" & vbCrLf & "أختــار مجمــوعـة أخـري", MsgBoxStyle.OkOnly, "تحــــــذيــر")
       TextBox5.Text = ""
       TextBox6.Text = ""
       TextBox7.Text = ""
       TextBox4.Focus()
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       vgrid()
       comboname()
       combmgma()
   End Sub

   Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
       TextBox5.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value
       TextBox7.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value
       TextBox6.Focus()
   End Sub
End Class

وستجد ان الاضافة تعمل معك وعرض البيانات
تعمل كما كنت تريد تماماً وبدون اى مشكلة او تاخر فى الاستعلام ايضاً

تحياتى لك
وتمنياتى لك التوفيق



RE: اضافة صف جديد لدلتا جريد مرتبط - nourmandour - 24-04-19

(24-04-19, 05:57 AM)elgokr كتب :
فى البداية لا اعلم لماذا اللفة والدوران اللى انت عملته فى الكود
انشاء بيانات الداتا يدوي
ومن ثم تفريغه ومن ثم تعبئته من الداتا سيت

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

ولكن كل ما يمكننى افادتك به هو فتح عرض الكود الخاص Form1

وحذف جميع الاسطر بها ليتم ادراج الكود التالى
كود :
Public Class Form1
   Private Sub vgrid()
       dgrid.Columns(0).Visible = True
       dgrid.Columns(0).HeaderText = "مسلسل"
       dgrid.Columns(0).Width = 60
       dgrid.Columns(1).Visible = True
       dgrid.Columns(1).HeaderText = "مجموعه"
       dgrid.Columns(1).Width = 150
       dgrid.Columns(2).Visible = True
       dgrid.Columns(2).HeaderText = "الصنف"
       dgrid.Columns(2).Width = 175
       dgrid.Columns(3).Visible = True
       dgrid.Columns(3).HeaderText = "الكمية"
       dgrid.Columns(3).Width = 80
       dgrid.Columns(4).Visible = True
       dgrid.Columns(4).HeaderText = "السعر"
       dgrid.Columns(4).Width = 80
       dgrid.Columns(5).Visible = True
       dgrid.Columns(5).HeaderText = "الاجمالي"
       dgrid.Columns(5).Width = 80
       Me.dgrid.RowHeadersVisible = False
   End Sub
   Private Sub itmcost()
       Dim sqlitm = "select s1,s3,s4 from sanf where sm0= " & Chr(39) & "" & ComboBox1.Text & "" & Chr(39) & " group by s1,s3,s4"
       Dim itmds As New DataSet
       conn.Open()
       Dim dat As New OleDb.OleDbDataAdapter(sqlitm, conn)
       itmds.Clear()
       dat.Fill(itmds, "sanf")
       conn.Close()
       DataGridView1.DataSource = itmds
       DataGridView1.DataMember = "sanf"
       DataGridView1.Columns(0).Visible = True
       DataGridView1.Columns(0).HeaderText = "اســـم الصنــف"
       DataGridView1.Columns(0).Width = 150
       DataGridView1.Columns(1).Visible = False
       DataGridView1.Columns(2).Visible = False
   End Sub
   Private Sub itmcostcrsh()
       Dim sqlit = "select s1,s3,s4 from sanf where sm0= " & Chr(39) & "" & ComboBox1.Text & "" & Chr(39) & " and s1 like '" & TextBox4.Text & "%'"
       Dim itm As New DataSet
       conn.Open()
       Dim dats As New OleDb.OleDbDataAdapter(sqlit, conn)
       itm.Clear()
       dats.Fill(itm, "sanf")
       conn.Close()
       DataGridView1.DataSource = itm
       DataGridView1.DataMember = "sanf"
       DataGridView1.Columns(0).Visible = True
       DataGridView1.Columns(0).HeaderText = "اســـم الصنــف"
       DataGridView1.Columns(0).Width = 150
       DataGridView1.Columns(1).Visible = False
       DataGridView1.Columns(2).Visible = False
   End Sub
   Private Sub TOTALrow()
       Dim total1 As String = 0
       For s As Integer = 0 To dgrid.Rows.Count - 1
           total1 += dgrid.Rows(s).Cells(5).Value
       Next s
       total.Text = total1
   End Sub
   Private Sub combmgma()
       Try
           ComboBox1.Items.Clear()
           Dim Cmd As New OleDb.OleDbCommand
           With Cmd
               .CommandType = CommandType.Text
               .CommandText = (" Select * From mgma ")
               .Connection = conn
           End With
           Dim DA As New OleDb.OleDbDataAdapter(Cmd)
           Dim DT As New DataTable()
           DA.Fill(DT)
           For Each AddData In DT.Rows
               ComboBox1.Items.Add(AddData.item(1))
           Next
           With ComboBox1
               .AutoCompleteMode = AutoCompleteMode.SuggestAppend
               .AutoCompleteSource = AutoCompleteSource.ListItems
           End With
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub
   Private Sub comboname()
       Try
           ComboBox2.Items.Clear()
           Dim Cmd As New OleDb.OleDbCommand
           With Cmd
               .CommandType = CommandType.Text
               .CommandText = (" Select * From amel ")
               .Connection = conn
           End With
           Dim DA As New OleDb.OleDbDataAdapter(Cmd)
           Dim DT As New DataTable()
           DA.Fill(DT)
           For Each AddData In DT.Rows
               ComboBox2.Items.Add(AddData.item(1))
           Next
           With ComboBox2
               .AutoCompleteMode = AutoCompleteMode.SuggestAppend
               .AutoCompleteSource = AutoCompleteSource.ListItems
           End With
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       If TextBox1.Text = "" Then Exit Sub
       dgrid.Rows.Clear()
       TextBox1.Text = Format(Val(TextBox1.Text), "00000000")
       ComboBox2.DataBindings.Clear()
       TextBox10.DataBindings.Clear()
       TextBox2.DataBindings.Clear()
       Dim sqlit = "select numb,mgma,sanf,kmea,sar,agmale from fat_ba where id= " & Chr(39) & "" & TextBox1.Text & "" & Chr(39) & "and sanf<>" & Chr(39) & "" & Chr(39) & " and sanf<>" & Chr(39) & "" & Chr(39) & " group by numb,mgma,sanf,kmea,sar,agmale"
       Dim sqlit1 = "SELECT id, numb, format(date,'yyyy/MM/dd')as[date], sdad, amel, mgma, sanf, kmea, sar, agmale,mdfa FROM fat_ba where id= " & Chr(39) & "" & TextBox1.Text & "" & Chr(39) & " group by id, numb, date, sdad, amel, mgma, sanf, kmea, sar, agmale, mdfa"
       Dim itm As New DataSet
       Dim tabl As New DataSet
       Dim dats As New OleDb.OleDbDataAdapter(sqlit1, conn)
       Dim dats1 As New OleDb.OleDbDataAdapter(sqlit, conn)
       itm.Clear()
       dats1.Fill(itm, "fat_ba")
       dats.Fill(tabl, "fat_ba")
       TextBox10.DataBindings.Add("Text", tabl, "fat_ba.sdad")
       If TextBox10.Text = "نقدي" Then
           RadioButton1.Checked = True
       ElseIf TextBox10.Text = "اجل" Then
           RadioButton2.Checked = True
       ElseIf TextBox10.Text = "جزء نقدي" Then
           RadioButton3.Checked = True
           TextBox3.DataBindings.Add("Text", tabl, "fat_ba.mdfa")
       Else
           ComboBox2.Text = "" : TextBox2.Text = ""
           RadioButton1.Checked = False : RadioButton2.Checked = False : RadioButton3.Checked = False
           Exit Sub
       End If
       ComboBox2.DataBindings.Add("Text", tabl, "fat_ba.amel")
       TextBox2.DataBindings.Add("Text", tabl, "fat_ba.date")
       For ii As Integer = 0 To itm.Tables("fat_ba").Rows.Count - 1
           dgrid.Rows.Add(itm.Tables("fat_ba").Rows(ii).ItemArray)
       Next
       vgrid()
       TOTALrow()
   End Sub

   Private Sub dgrid_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrid.CellContentClick
       ComboBox1.Text = dgrid.Rows(e.RowIndex).Cells(1).Value
       TextBox5.Text = dgrid.Rows(e.RowIndex).Cells(2).Value
       TextBox6.Text = dgrid.Rows(e.RowIndex).Cells(3).Value
       TextBox7.Text = dgrid.Rows(e.RowIndex).Cells(4).Value
       Me.dgrid.Rows(e.RowIndex).Selected = True
       Dim rowdlet As Integer = e.RowIndex
       Me.dgrid.CurrentCell = Me.dgrid.Rows(e.RowIndex).Cells(1)
       dgrid.Rows.RemoveAt(rowdlet)
       For Each R As DataGridViewRow In dgrid.Rows
           R.Cells(0).Value = (R.Index + 1).ToString
       Next
       TOTALrow()
   End Sub

   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
       Dim addRow(6) As String
       addRow(0) = dgrid.Rows.Count
       addRow(1) = ComboBox1.Text
       addRow(2) = TextBox5.Text
       addRow(3) = TextBox6.Text
       addRow(4) = TextBox7.Text
       addRow(5) = Val(TextBox6.Text) * Val(TextBox7.Text)
       dgrid.Rows.Add(addRow)
       TOTALrow()
   End Sub

   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
       itmcost()
       GroupBox4.Visible = True
       If DataGridView1.Rows.Count <= 0 Then GroupBox4.Visible = False : MsgBox("هــذة المجـمـوعــه فارغــة " & vbCrLf & "" & vbCrLf & "أختــار مجمــوعـة أخـري", MsgBoxStyle.OkOnly, "تحــــــذيــر")
       TextBox5.Text = ""
       TextBox6.Text = ""
       TextBox7.Text = ""
       TextBox4.Focus()
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       vgrid()
       comboname()
       combmgma()
   End Sub

   Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
       TextBox5.Text = DataGridView1.Rows(e.RowIndex).Cells(0).Value
       TextBox7.Text = DataGridView1.Rows(e.RowIndex).Cells(1).Value
       TextBox6.Focus()
   End Sub
End Class

وستجد ان الاضافة تعمل معك وعرض البيانات
تعمل كما كنت تريد تماماً وبدون اى مشكلة او تاخر فى الاستعلام ايضاً

تحياتى لك
وتمنياتى لك التوفيق
ممتاز جدا جدا طريقة جميلة جدا 
وكمان استفدت كتير جدا جدا من 
انشاء الداتا بدل الف الكتير 
الف الف شكر


RE: اضافة صف جديد لدلتا جريد مرتبط - elgokr - 24-04-19

الشكر لله والحمد لله
والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق