16-10-18, 12:04 PM
16-10-18, 12:28 PM
جرب هذا
يمكنك إضافة الأعمدة في التصميم بدلا من الكود
أو
يمكنك إضافة الأعمدة في التصميم بدلا من الكود
أو
كود :
Imports System.Data.OleDb
Public Class Form1
Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB.mdb; "
Dim Conn As New OleDbConnection(ConStr)
Dim InfoCommand As OleDbCommand
Dim InfoAdapter As OleDbDataAdapter
Dim InfoTable As DataTable
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If Conn.State = ConnectionState.Closed Then
Conn.Open()
End If
InfoCommand = New OleDbCommand("SELECT * FROM Materials ORDER BY Materials_Id", Conn)
InfoAdapter = New OleDbDataAdapter()
InfoAdapter.SelectCommand = InfoCommand
InfoTable = New DataTable()
InfoAdapter.Fill(InfoTable)
DataGridView1.DataSource = InfoTable
DataGridView1.Columns(0).HeaderText = "التّرقيم"
DataGridView1.Columns(1).HeaderText = "السلعة"
DataGridView1.Columns(2).HeaderText = "الكمية"
Dim btn As New DataGridViewButtonColumn
btn.HeaderText = "العمود"
btn.DefaultCellStyle.NullValue = "Button"
btn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns.Add(btn)
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If TypeOf sender.Columns(e.ColumnIndex) Is DataGridViewButtonColumn Then
MsgBox("RowIndex: " & e.RowIndex)
End If
End Sub
End Class16-10-18, 12:36 PM
يسلمو اخي rnmr و الله هذا ما ريده بالضبط كثر الف خيرك.فقط لي طلب اخير بعد اذنك كيف لما اضغط على زر الامر على الصف الذي واقف عليه تخبرني رسالة اذا كنت اريد نقل السجل الى الجدول الاخر ( matrials_djerd ) اذا نعم يتم حذف السجل من جدول materials و ينتقل الى جدول matrials_djerd ربنا يبارك فيك اخي
16-10-18, 01:19 PM
جرب هذا
كود :
Imports System.Data.OleDb
Public Class Form1
Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB.mdb; "
Dim Conn As New OleDbConnection(ConStr)
Dim InfoAdapter As New OleDbDataAdapter("SELECT * FROM Materials ORDER BY Materials_Id", Conn)
Dim InfoTable As New DataTable
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
InfoTable.Clear()
InfoAdapter.Fill(InfoTable)
DataGridView1.DataSource = InfoTable
DataGridView1.Columns(0).HeaderText = "التّرقيم"
DataGridView1.Columns(1).HeaderText = "السلعة"
DataGridView1.Columns(2).HeaderText = "الكمية"
Dim btn As New DataGridViewButtonColumn
btn.HeaderText = "نقل للجدول الاخر"
btn.DefaultCellStyle.NullValue = "نقل"
btn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns.Add(btn)
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If TypeOf sender.Columns(e.ColumnIndex) Is DataGridViewButtonColumn Then
If MsgBox("هل تريد نقل السجل إالى الجدول الاخر", MsgBoxStyle.YesNo) <> MsgBoxResult.Yes Then Return
Try
If Conn.State <> ConnectionState.Open Then Conn.Open()
Dim row As DataGridViewRow = DataGridView1.CurrentRow
Dim trans As OleDbTransaction = Conn.BeginTransaction
Dim cmd As New OleDbCommand
cmd.Connection = Conn
cmd.Transaction = trans
cmd.CommandText = "INSERT INTO [Materials_Djerd] ([Djerd_Id], [Djerd_Name], [Djerd_Quantity]) VALUES(?,?,?)"
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Id", row.Cells(0).Value)
cmd.Parameters.AddWithValue("@Name", row.Cells(1).Value)
cmd.Parameters.AddWithValue("@Quantity", row.Cells(2).Value)
If cmd.ExecuteNonQuery > 0 Then ' إذا نجحت الإضافة في الجدول الثاني
cmd.CommandText = "DELETE FROM [Materials] WHERE [Materials_Id]=?"
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Id", row.Cells(0).Value)
If cmd.ExecuteNonQuery() > 0 Then ' إذا نجح الحذف من الجدول الأول
trans.Commit() ' اتمام العمليتين معا النقل والحذف
' إعادة تعبئة الداتاجريدفيو
InfoTable.Clear()
InfoAdapter.Fill(InfoTable)
MsgBox("تم النقل")
Else
trans.Rollback() ' التراجع عن العمليتين معا
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
Conn.Close()
End Try
End If
End Sub
End Class16-10-18, 04:02 PM
الله يبارك فيك و يمتعك بالصحة و الهناء اخي rnmr .كلو مضبوط منيش عارف كيف اشكرك.بقيت لي امسة بسيطة و ان شاء الله اغلق الموضوع .كيف يمكن استبدل هذا الرسالة
بحيث اذكر اسم السلعة داخل الرسالة هكذا مثلا لم اعرف كيف ابدل كلمة txtname بسطر الداتاجريد
كود :
If MsgBox("هل تريد نقل السجل إالى الجدول الاخر", MsgBoxStyle.YesNo) <> MsgBoxResult.Yes Then Returnكود :
If MsgBox(" هل أنت متأكّد من أنك تريد حذف هذه السلعة و نقلها لجدول الجرد : " & TxtName.Text & " ? ", MsgBoxStyle.YesNo + MsgBoxStyle.Critical, "تنبيه") = MsgBoxResult.No Then16-10-18, 04:41 PM
جرب هذا
أو حسب طلبك
كود :
Imports System.Data.OleDb
Public Class Form1
Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB.mdb; "
Dim Conn As New OleDbConnection(ConStr)
Dim InfoAdapter As New OleDbDataAdapter("SELECT * FROM Materials ORDER BY Materials_Id", Conn)
Dim InfoTable As New DataTable
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Me.DataGridView1.AllowUserToDeleteRows = False
Me.DataGridView1.AllowUserToAddRows = False
Me.DataGridView1.ReadOnly = True
InfoTable.Clear()
InfoAdapter.Fill(InfoTable)
DataGridView1.DataSource = InfoTable
DataGridView1.ClearSelection()
DataGridView1.Columns(0).HeaderText = "التّرقيم"
DataGridView1.Columns(1).HeaderText = "السلعة"
DataGridView1.Columns(2).HeaderText = "الكمية"
Dim btn As New DataGridViewButtonColumn
btn.HeaderText = "نقل للجدول الاخر"
btn.DefaultCellStyle.NullValue = "نقل"
btn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns.Add(btn)
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If TypeOf sender.Columns(e.ColumnIndex) Is DataGridViewButtonColumn Then
' قراءة السطر الحالي في الداتاجريدفيو
Dim row As DataGridViewRow = sender.CurrentRow
' إعدادات رسالة التأكيد
Dim msgstyle As MsgBoxStyle = &H180000 + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2 + MsgBoxStyle.Exclamation
Dim msgtext As String = _
"هل أنت متأكّد من أنك تريد حذف هذه السلعة ونقلها لجدول الجرد: ?" & vbNewLine & _
"رقم: " & row.Cells(0).Value & ": " & row.Cells(1).Value & " (كمية: " & row.Cells(2).Value & ")"
' عندما لا يكون الجواب ب(نعم) فقم بالتراجع
If MsgBox(msgtext, msgstyle, "تنبيه") <> MsgBoxResult.Yes Then Return
Try
If Conn.State <> ConnectionState.Open Then Conn.Open()
Dim trans As OleDbTransaction = Conn.BeginTransaction
Dim cmd As New OleDbCommand
cmd.Connection = Conn
cmd.Transaction = trans
cmd.CommandText = "INSERT INTO [Materials_Djerd] ([Djerd_Id], [Djerd_Name], [Djerd_Quantity]) VALUES(?,?,?)"
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Id", row.Cells(0).Value)
cmd.Parameters.AddWithValue("@Name", row.Cells(1).Value)
cmd.Parameters.AddWithValue("@Quantity", row.Cells(2).Value)
If cmd.ExecuteNonQuery > 0 Then ' إذا نجحت الإضافة في الجدول الثاني
cmd.CommandText = "DELETE FROM [Materials] WHERE [Materials_Id]=?"
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Id", row.Cells(0).Value)
If cmd.ExecuteNonQuery() > 0 Then ' إذا نجح الحذف من الجدول الأول
trans.Commit() ' اتمام العمليتين معا النقل والحذف
' إعادة تعبئة الداتاجريدفيو
InfoTable.Clear()
InfoAdapter.Fill(InfoTable)
sender.ClearSelection()
MsgBox("تم النقل")
Else
trans.Rollback() ' التراجع عن العمليتين معا
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
Conn.Close()
End Try
End If
End Sub
End Classأو حسب طلبك
كود :
If MsgBox(" هل أنت متأكّد من أنك تريد حذف هذه السلعة و نقلها لجدول الجرد : " & Me.DataGridView1.CurrentRow.Cells(1).Value & " ? ", MsgBoxStyle.YesNo + MsgBoxStyle.Critical, "تنبيه") = MsgBoxResult.No Then16-10-18, 07:47 PM
بجد كثر الف خيرك اخ rnmr كلو مضبوط بارك الله فيك و جزاك كل الخير