اضافة زر امر للداتاجريد - محمد خيري - 16-10-18
السلام عليكم.اخواني الهي يكرمكم ان شاء الله.كيف يمكن ان اضيف عمود للداتاجريد ( العمود 3 الاخير ) من نوع button .بارك الله فيكم
RE: اضافة زر امر للداتاجريد - rnmr - 16-10-18
جرب هذا
يمكنك إضافة الأعمدة في التصميم بدلا من الكود
أو
كود :
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 Class
RE: اضافة زر امر للداتاجريد - محمد خيري - 16-10-18
يسلمو اخي rnmr و الله هذا ما ريده بالضبط كثر الف خيرك.فقط لي طلب اخير بعد اذنك كيف لما اضغط على زر الامر على الصف الذي واقف عليه تخبرني رسالة اذا كنت اريد نقل السجل الى الجدول الاخر ( matrials_djerd ) اذا نعم يتم حذف السجل من جدول materials و ينتقل الى جدول matrials_djerd ربنا يبارك فيك اخي
RE: اضافة زر امر للداتاجريد - rnmr - 16-10-18
جرب هذا
كود :
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 Class
RE: اضافة زر امر للداتاجريد - محمد خيري - 16-10-18
الله يبارك فيك و يمتعك بالصحة و الهناء اخي rnmr .كلو مضبوط منيش عارف كيف اشكرك.بقيت لي امسة بسيطة و ان شاء الله اغلق الموضوع .كيف يمكن استبدل هذا الرسالة
كود :
If MsgBox("هل تريد نقل السجل إالى الجدول الاخر", MsgBoxStyle.YesNo) <> MsgBoxResult.Yes Then Return
بحيث اذكر اسم السلعة داخل الرسالة هكذا مثلا لم اعرف كيف ابدل كلمة txtname بسطر الداتاجريد
كود :
If MsgBox(" هل أنت متأكّد من أنك تريد حذف هذه السلعة و نقلها لجدول الجرد : " & TxtName.Text & " ? ", MsgBoxStyle.YesNo + MsgBoxStyle.Critical, "تنبيه") = MsgBoxResult.No Then
RE: اضافة زر امر للداتاجريد - rnmr - 16-10-18
جرب هذا
كود :
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 Then
RE: اضافة زر امر للداتاجريد - محمد خيري - 16-10-18
بجد كثر الف خيرك اخ rnmr كلو مضبوط بارك الله فيك و جزاك كل الخير
|