اضافة صف جديد لدلتا جريد مرتبط - 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
الشكر لله والحمد لله
والحمد لله على كل حال
تحياتى لك
وتمنياتى لك التوفيق
|