أخي نوري هذا كود ملف FACTVENTE
واعتذر لانه لا يمكنني رفع ملف المشروع
اتبع نفس الطريقة في الكود
اضف زر جديد في الفورم باسم Button2
ستجد في الكود حدث الكلك الخاص به ووظيفته انشاء تاب جديد ويحتوي على داتا جريد فيو منسوخة من التاب الأول
يمكنك الآن حذف صفحات التاب الموجودة مع شرط الابقاء على الأولى
كود :
Public Class FACTVENTE
Private Sub FACTVENTE_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'// fillDGV(DataGridView1, "select * from PRODUITS order by CODEPRODUIT")
' TEXTVENTECODE.Text = CODE_GEN("FACTVENTE", "VENTECODE") + 1
TEXTTOTALVENTE.Text = "0.00"
End Sub
Sub retour_FACTVENTE(ByVal CODE_)
DataGridView2.Rows.Clear()
Dim DT As New DataTable
Dim da As New SqlClient.SqlDataAdapter("SELECT * FROM FACTVENTE where VENTECODE = " & CODE_ & "", sqlConn)
da.Fill(DT)
'If DT.Rows.Count = 0 Then
' MessageBox.Show("الرجاء التأكد من رقم الفاتورة", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error)
'Else
Dim dr = DT.Rows(0)
TEXTVENTECODE.Text = dr!VENTECODE
TEXTVENTETYPE.Text = dr!VENTETYPE
TEXTNOMCLIENT.Text = dr!NOMCLIENT
VENTEDATE.Value = dr!VENTEDATE
TEXTTOTALVENTE.Text = dr!TOTALVENTE
Dim DS As New DataSet
da = New SqlClient.SqlDataAdapter("SELECT * FROM DETFACTVENTE where FACTVENTECODE = " & CODE_ & "", sqlConn)
DS = New DataSet
da.Fill(DS)
DT = DS.Tables(0)
For I = 0 To DT.Rows.Count - 1
DataGridView2.Rows.Add()
DataGridView2.Rows(I).Cells(0).Value = DT.Rows(I).Item("CODEPRODUIT")
DataGridView2.Rows(I).Cells(1).Value = DT.Rows(I).Item("NOMPRODUIT")
DataGridView2.Rows(I).Cells(3).Value = DT.Rows(I).Item("PRIXACHATPRODUIT")
DataGridView2.Rows(I).Cells(4).Value = DT.Rows(I).Item("PRIXVENTEPRODUIT")
DataGridView2.Rows(I).Cells(5).Value = DT.Rows(I).Item("TOTALE")
DataGridView2.Rows(I).Cells(6).Value = DT.Rows(I).Item("QTTVENDUE")
Dim DT1 As New DataTable
Dim DA1 As New SqlClient.SqlDataAdapter("SELECT * FROM PRODUITS WHERE NOMPRODUIT LIKE N'" & DataGridView2.Rows(I).Cells(1).Value & "'", sqlConn)
DA1.Fill(DT1)
Dim BAR As Integer
BAR = DataGridView2.Rows.Count - 1
DataGridView2(2, BAR).Value = DT1.Rows(0).Item("QTTPRODUIT")
Next
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If DataGridView1(0, DataGridView1.CurrentRow.Index).Selected = True Then
'For I = 0 To SALEPIL.DataGridView2.Rows.Count - 1
textBcode.Text = DataGridView2.CurrentRow.Cells(1).Value
textBcode_Leave(sender, e)
End If
End Sub
Private Sub textBcode_TextChanged(sender As Object, e As EventArgs) Handles textBcode.TextChanged
End Sub
Sub calc()
Dim SelecedGridView As DataGridView
For Each ctrl As Control In TabControl1.SelectedTab.Controls
Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
If dgv IsNot Nothing Then
SelecedGridView = dgv
Exit For
End If
Next
' الان للتعامل مع الداتا جريد المحددة استخدم المتغير SelecedGridView
'
'
For i As Integer = 0 To SelecedGridView.Rows.Count - 1
SelecedGridView.Rows(i).Cells(5).Value = Val(SelecedGridView.Rows(i).Cells(4).Value) * Val(SelecedGridView.Rows(i).Cells(6).Value)
'SelecedGridView.Rows(i).Cells(7).Value = Val(SelecedGridView.Rows(i).Cells(2).Value) - Val(SelecedGridView.Rows(i).Cells(6).Value)
Next
Dim tot As Double
For i = 0 To SelecedGridView.Rows.Count - 1
tot = Val(tot) + Val(SelecedGridView.Rows(i).Cells(5).Value)
'disc = Val(disc) + Val(DataGridView1.Rows(i).Cells(5).Value)
'qttin = Val(qttin) + Val(DataGridView1.Rows(i).Cells(4).Value)
'numeroitem = DataGridView1.Rows.Count
Next
TEXTTOTALVENTE.Text = Val(tot)
'textsale_ITEM_COUNT.Text = numeroitem
'TOTALQTT.Text = qttin
'fauxsaletotale.Text = Val(saleTOTAL.Text)
'Dim r As Decimal
'r = Convert.ToDecimal(fauxsaletotale.Text)
End Sub
Private Sub textBcode_Leave(sender As Object, e As EventArgs) Handles textBcode.Leave
Dim SelecedGridView As DataGridView
For Each ctrl As Control In TabControl1.SelectedTab.Controls
Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
If dgv IsNot Nothing Then
SelecedGridView = dgv
Exit For
End If
Next
' الان للتعامل مع الداتا جريد المحددة استخدم المتغير SelecedGridView
'
'
'For M As Integer = 0 To DataGridView2.Rows.Count - 1
' DataGridView2.Rows(M).Cells(5).Value = Date.Now
'Next
'For g As Integer = 0 To DataGridView1.Rows.Count - 1
' 'Dim textdate1 As Date = DataGridView1.Rows(g).Cells(8).Value
' Dim textdate2 As Date = DataGridView1.Rows(g).Cells(10).Value
' Dim result As TimeSpan = textdate1 - textdate2
' Label12.Text = CInt(result.Days)
' DataGridView1.Rows(g).Cells(10).Value = Label12.Text
'Next
If textBcode.Text <> Nothing Then
Dim DT As New DataTable
Dim DA As New SqlClient.SqlDataAdapter("SELECT * FROM PRODUITS WHERE NOMPRODUIT LIKE N'" & textBcode.Text & "'", sqlConn)
DA.Fill(DT)
If DT.Rows.Count > 0 Then
'______________________التحقق من كود الصنف
For I = 0 To SelecedGridView.Rows.Count - 1
If SelecedGridView.Rows(I).Cells(0).Value = DT.Rows(0).Item("CODEPRODUIT") Then
SelecedGridView.Rows(I).Cells(6).Value = SelecedGridView.Rows(I).Cells(6).Value + 1
calc()
textBcode.Clear()
Exit Sub
End If
Next
'______________________إضافة سجل للداتا قريد
Dim BAR As Integer
SelecedGridView.Rows.Add()
BAR = SelecedGridView.Rows.Count - 1
SelecedGridView(0, BAR).Value = DT.Rows(0).Item("CODEPRODUIT")
SelecedGridView(1, BAR).Value = DT.Rows(0).Item("NOMPRODUIT")
SelecedGridView(2, BAR).Value = DT.Rows(0).Item("QTTPRODUIT")
SelecedGridView(3, BAR).Value = DT.Rows(0).Item("PRIXACHATPRODUIT")
SelecedGridView(4, BAR).Value = DT.Rows(0).Item("PRIXVENTEPRODUIT")
'SelecedGridView(7, BAR).Value = DT.Rows(0).Item("QTTPRODUIT")
'SelecedGridView(5, BAR).Value = DT.Rows(0).Item("TOTALE")
'SelecedGridView(7, BAR).Value = DT.Rows(0).Item("ITEM_TAKLOFA")
SelecedGridView(6, BAR).Value = 1
SelecedGridView(6, BAR).Selected = True
calc()
Else
'FRM_ITEMS.Show()
'Clipboard.SetText(textBcode.Text.Trim())
'FRM_ITEMS.textBarecode.Paste()
Console.Beep()
End If
End If
textBcode.Clear()
textBcode.Focus()
calc()
'If DataGridView1.Rows.Count > 0 Then
' GroupBox17.Visible = False
'Else
' GroupBox17.Visible = True
'End If
End Sub
Private Sub textBcode_KeyDown(sender As Object, e As KeyEventArgs) Handles textBcode.KeyDown
If e.KeyCode = Keys.Enter Then
textBcode_Leave(sender, e)
End If
End Sub
Private Sub btnsave_Click(sender As Object, e As EventArgs) Handles btnsave.Click
Dim SelecedGridView As DataGridView
For Each ctrl As Control In TabControl1.SelectedTab.Controls
Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
If dgv IsNot Nothing Then
SelecedGridView = dgv
Exit For
End If
Next
' الان للتعامل مع الداتا جريد المحددة استخدم المتغير SelecedGridView
'
'
If SelecedGridView.Rows.Count = 0 Then
MessageBox.Show("لا توجد اصناف لحفظها", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
For I As Integer = 0 To SelecedGridView.Rows.Count - 1
If SelecedGridView.Rows(I).Cells(6).Value = 0 Then
MessageBox.Show("الرجاء التحقق من الكمية", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Next
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter("select * from FACTVENTE where VENTECODE = " & TEXTVENTECODE.Text & "", sqlConn)
da.Fill(dt)
'If dt.Rows.Count > 0 Then
' TEXTVENTECODE.Text = CODE_GEN("SALEPIL", "SALE_CODE") + 1
'Else
Dim DR = dt.NewRow
DR!VENTECODE = TEXTVENTECODE.Text
DR!VENTETYPE = TEXTVENTETYPE.Text
DR!NOMCLIENT = TEXTNOMCLIENT.Text
DR!VENTEDATE = VENTEDATE.Value
DR!TOTALVENTE = TEXTTOTALVENTE.Text
'DR!SALE_ITEM_COUNT = textsale_ITEM_COUNT.Text
' DR!SALE_TOTAL_ARABIC = TOTALARABIC.Text
' DR!SALE_TOTAL_QTT = TOTALQTT.Text
' DR!SALE_USER = TOOLUSER.Text
' DR!CUST_FAREK = Val(TextBox5.Text)
' DR!SALE_STATE = True
dt.Rows.Add(DR)
Dim save As New SqlClient.SqlCommandBuilder(da)
da.Update(dt)
'End If
da = New SqlClient.SqlDataAdapter("select * from DETFACTVENTE", sqlConn)
da.Fill(dt)
For I As Integer = 0 To SelecedGridView.Rows.Count - 1
Dim DR1 = dt.NewRow
DR1!FACTVENTECODE = TEXTVENTECODE.Text
DR1!VENTEDATE = VENTEDATE.Value
DR1!CODEPRODUIT = SelecedGridView.Rows(I).Cells(0).Value
DR1!NOMPRODUIT = SelecedGridView.Rows(I).Cells(1).Value
'DR1!ITEM_UNITE = SelecedGridView.Rows(I).Cells(2).Value
DR1!QTTVENDUE = Val(SelecedGridView.Rows(I).Cells(6).Value)
DR1!PRIXVENTEPRODUIT = Val(SelecedGridView.Rows(I).Cells(4).Value)
DR1!PRIXACHATPRODUIT = Val(SelecedGridView.Rows(I).Cells(3).Value)
DR1!TOTALE = Val(SelecedGridView.Rows(I).Cells(5).Value)
DR1!QTTPRODUITINITIAL = Val(SelecedGridView.Rows(I).Cells(7).Value)
'DR1!SALE_ITEM_COUNT = textsale_ITEM_COUNT.Text
'DR1!SALE_USER = TOOLUSER.Text
DR1!QTTPRODUIT = SelecedGridView.Rows(I).Cells(2).Value
'DR1!ITEM_BARE = SelecedGridView.Rows(I).Cells(8).Value
'DR1!ITEM_TAKLOFA = SelecedGridView.Rows(I).Cells(9).Value
'DR1!ITEM_PLACE = SelecedGridView.Rows(I).Cells(5).Value
'DR1!SALE_DET_STATUS = True
dt.Rows.Add(DR1)
Dim cmd As New SqlClient.SqlCommandBuilder(da)
da.Update(dt)
Next
'__________________________________طرح الكمية
For M As Integer = 0 To SelecedGridView.Rows.Count - 1
Dim newqtt As Integer
newqtt = Val(SelecedGridView.Rows(M).Cells(2).Value) - Val(SelecedGridView.Rows(M).Cells(6).Value)
Dim cmd1 As New SqlClient.SqlCommand
cmd1.Connection = sqlConn
cmd1.CommandText = " UPDATE PRODUITS SET QTTPRODUIT = " & newqtt & " where NOMPRODUIT = N'" & SelecedGridView.Rows(M).Cells(1).Value & " '"
cmd1.ExecuteNonQuery()
Next
'b_Click(sender, e)
MessageBox.Show("تم حفظ الفاتورة بنجاح", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)
'End If
'SelecedGridView.Rows.Clear()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
''Dim r As Decimal
''r = Convert.ToDecimal(TEXTTOTALVENTE.Text)
'TEXTTOTALVENTE.Text = Format(TEXTTOTALVENTE, "currency")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RETOURFACTVENTE.Show()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
''''
''''كود اضافة تاب جديد واضافة داتاجريدفيو له
''''
'References to source and target grid.
Dim sourceGrid As DataGridView = Me.DataGridView2
'بناء datagridview جديدة في كل مرة
Dim NewGrid As DataGridView = New DataGridView
' يمكنك التحكم في خصائص الجريد الجديدة مثل الخط واللون وشكل وارتفاع الاعمدة وغيرها
' NewGrid.AllowUserToAddRows = False
'Clear target columns and then clone all source columns.
NewGrid.Columns.Clear()
For Each column As DataGridViewColumn In sourceGrid.Columns
NewGrid.Columns.Add(CType(column.Clone(), DataGridViewColumn))
Next
' بناء صفحة تاب جديدة
Dim newTabPage As TabPage = New TabPage
newTabPage.Name = TabControl1.TabCount + 1
newTabPage.Text = "فاتورة " & TabControl1.TabCount + 1
newTabPage.Controls.Add(NewGrid)
NewGrid.Dock = DockStyle.Fill
Me.TabControl1.TabPages.Add(newTabPage)
TabControl1.SelectTab(newTabPage)
End Sub
End Class