السلام عليكم أحبائي
في مشروعي أعاني من مشكلتين بما أني جديد و لأول مرة أعمل على البرمجة
و بما أن المنتدى لا يسمح بأكثر من سؤال سأطرح المشكلتين في موضوعين مختلفين
المشكلة الأولى
أنشأت فورم لتحكم بالأصناف لكني لا أجد سبيل لكود الفلتر في الداتا غريد
فقد وضعت أزرار كل زر من شأنه إظهار فئة معينة من الأصناف و أريد عند الضغط عليه أن يظهر فقط الفئة المحددة في الزر
لم أتمكن من رفع المشروع بسبب الحج
سأضع هنا الكود المستخدم في الفورم
و لكم جزيل الشكر أرجوا الدعم
Imports System.Data, System.Data.OleDb
Imports System.Collections
Public Class frm_stouk
Dim cmd As New OleDbCommand
Private Where_SQL, SQLTemp As String : Dim Temp As String = " AND "
Private Sub grid()
' كود التحكم في عرض الخلايا
DataGridView2.Columns(3).Width = 75
DataGridView2.Columns(0).Width = 40
DataGridView2.Columns(4).Width = 75
DataGridView2.Columns(1).Width = 100
' الكود التالي لتوسيط الأعمدة
DataGridView2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView2.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
' توسيط الهيدر
DataGridView2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
' كود جعل ثاني خليه 'الاسم' تأخذ باقي عرض الداتا جريد
DataGridView2.Columns(2).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
' تلوين سطر وسطر
DataGridView2.AlternatingRowsDefaultCellStyle.BackColor = Color.LavenderBlush
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If MsgBox("هل أنت متأكد من عملية التعديل ? ", MsgBoxStyle.OkCancel, "تأكيد تعديل / إضافة") = MsgBoxResult.Cancel Then
Exit Sub
End If
Try
CreateConn()
Dim blnAdd As New OleDb.OleDbCommand
blnAdd.Connection = getConn()
blnAdd.CommandType = CommandType.Text
'-----------------
'حذف قيمة السجل الذي يتم تحديده
'DGview.Item(0, DGview.CurrentCellAddress.Y).Value
blnAdd.CommandText = "add FROM stouks WHERE الرقم =" & CType(DataGridView2.Item(0, DataGridView2.CurrentCellAddress.Y).Value, Integer) & ""
'---------------
OpenConn()
If blnAdd.ExecuteNonQuery() Then
'إذا تم حذف السجل بنجاخ من قاعدة البيانات
'يتم ايضا حذفه من الداتاقريد مباشرة
If Not DataGridView2.CurrentRow.IsNewRow Then
DataGridView2.Rows.Add(DataGridView2.CurrentRow)
End If
Else
MsgBox("فشلت عملية الإضافة حاول مرة أخرى ", MsgBoxStyle.MsgBoxRight, "فشل العملية")
End If
CloseConn()
Catch ex As Exception
MsgBox("لا يوجد أي سجلات للتحديث ", MsgBoxStyle.MsgBoxRight, "فشل العملية")
End Try
End Sub
Private Sub frm_stouk_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SQLTemp = ""
'تعبئة الداتاقريد بالبيانات
FillDG(SQLTemp)
Call grid()
panel.Hide()
txtno.Enabled = False
txtname.Enabled = False
txtFee.Enabled = False
txtpris.Enabled = False
txtsize.Enabled = False
BtnSave.Enabled = False
BtnAndo.Enabled = False
BtnDelet.Enabled = False
BtnUpdate.Enabled = False
DataGridView2.Hide()
TableLayoutPanel3.Hide()
TableLayoutPanel4.Hide()
TableLayoutPanel5.Hide()
TableLayoutPanel6.Hide()
TableLayoutPanel7.Hide()
TableLayoutPanel8.Hide()
TableLayoutPanel9.Hide()
End Sub
Sub FillDG(ByVal SQL)
CreateConn()
OpenConn()
cmd.Connection = getConn()
DataGridView2.Columns.Clear()
cmd.CommandType = CommandType.Text
'------------------
cmd.CommandText = "select stouks.الرقم,الفئة,اسم_الصنف,السعر_الإفرادي,وحدة_القياس from stouks " & SQL
dr = cmd.ExecuteReader
DataGridView2.ColumnCount = 5
DataGridView2.Columns(0).HeaderText = "رقم"
DataGridView2.Columns(1).HeaderText = "الفئة"
DataGridView2.Columns(2).HeaderText = "اسم الصنف"
DataGridView2.Columns(3).HeaderText = "السعر الإفرادي"
DataGridView2.Columns(4).HeaderText = "وحدة القياس"
Dim n As Integer
n = -1
Do While dr.Read
n += 1
DataGridView2.RowCount += 1
DataGridView2.Item(0, n).Value = dr.Item("الرقم") '
DataGridView2.Item(1, n).Value = dr.Item("الفئة")
DataGridView2.Item(2, n).Value = dr.Item("اسم_الصنف")
DataGridView2.Item(3, n).Value = dr.Item("السعر_الإفرادي")
DataGridView2.Item(4, n).Value = dr.Item("وحدة_القياس")
Loop
dr.Close()
CloseConn()
End Sub
Private Sub BtnAdd_Click(sender As Object, e As EventArgs) Handles BtnAdd.Click
'---Add max number---------
Me.txtno.Text = AddMaxID("الرقم", "stouks")
'----clear text-------
Me.txtFee.Clear()
Me.txtname.Clear()
Me.txtpris.Clear()
Me.txtsize.Clear()
txtno.Enabled = False
txtFee.Enabled = True
txtname.Enabled = True
txtpris.Enabled = True
txtsize.Enabled = True
BtnAndo.Enabled = True
BtnSave.Enabled = True
BtnDelet.Enabled = False
BtnUpdate.Enabled = False
End Sub
Function AddMaxID(ByVal columname As String, ByVal tblcolumn As String) As Integer
'---------------------
Dim SavInto As New OleDb.OleDbCommand
CreateConn()
Dim intMaxID As Integer
Dim objCommand As OleDbCommand = New OleDbCommand()
Dim maxIdCommand As OleDbCommand = New OleDbCommand _
("SELECT MAX( " & columname & " ) AS MaxID FROM " & tblcolumn & " ", getConn)
' Open the connection, execute the command
Try
OpenConn()
Dim maxId As Object = maxIdCommand.ExecuteScalar()
' If the MaxID column is null...
If maxId Is DBNull.Value Then
' Set a default value of 1000...
intMaxID = 1
Else
' Get the integer part of the string...
' intMaxID = CType(maxId, Integer)
' Increment the value...
intMaxID = maxId + 1
End If
CloseConn()
Return intMaxID
Catch ex As Exception
MsgBox("لقد صادفت مشكله حاول مرة آخرى " & ex.Message, MsgBoxStyle.OkOnly, "تحذير")
End Try
'----------------------
End Function
Private Sub BtnUpdate_Click(sender As Object, e As EventArgs) Handles BtnUpdate.Click
'عرض النافذة الصغيرة الخاصة بالتعديل
'(panel)
Me.panel.Visible = True
Me.BtnUpdate.Enabled = False
'تعيين قيمة الحقوق بنفس قيم السجل الذي تم تحديده
Me.IDTextBox.Text = DataGridView2.Item(0, DataGridView2.CurrentCellAddress.Y).Value
Me.txtfee2.Text = DataGridView2.Item(1, DataGridView2.CurrentCellAddress.Y).Value
Me.txt_name1.Text = DataGridView2.Item(2, DataGridView2.CurrentCellAddress.Y).Value
Me.txt_address1.Text = DataGridView2.Item(3, DataGridView2.CurrentCellAddress.Y).Value
Me.TextBox1.Text = DataGridView2.Item(4, DataGridView2.CurrentCellAddress.Y).Value
End Sub
Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
Try
Dim SavInto As New OleDb.OleDbCommand
CreateConn()
SavInto.Connection = getConn()
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "INSERT INTO stouks(الرقم,الفئة,اسم_الصنف,السعر_الإفرادي,وحدة_القياس)" & _
"values ('" & Me.txtno.Text & "','" & Me.txtFee.Text & "','" & Me.txtname.Text & "','" & Me.txtpris.Text & "','" & Me.txtsize.Text & "') "
OpenConn()
If SavInto.ExecuteNonQuery() Then
'إذا تمت عملية الإضافة بنجاح يتم اضافة الحقول إلى الداتا قريد مباشرة بدل استراجاعها من الداتابيس
DataGridView2.Rows.Add()
DataGridView2.Item(0, DataGridView2.Rows.Count - 1).Value = Me.txtno.Text
DataGridView2.Item(1, DataGridView2.Rows.Count - 1).Value = Me.txtFee.Text
DataGridView2.Item(2, DataGridView2.Rows.Count - 1).Value = Me.txtname.Text
DataGridView2.Item(3, DataGridView2.Rows.Count - 1).Value = Me.txtpris.Text
DataGridView2.Item(4, DataGridView2.Rows.Count - 1).Value = Me.txtsize.Text
Me.txtno.Clear()
Me.txtFee.Clear()
Me.txtname.Clear()
Me.txtpris.Clear()
Me.txtsize.Clear()
txtno.Enabled = False
txtname.Enabled = False
txtFee.Enabled = False
txtpris.Enabled = False
txtsize.Enabled = False
Else
MsgBox("فشلت عملية الإضافة", MsgBoxStyle.MsgBoxRight, "رسالة خطأ")
End If
CloseConn()
Catch ex As Exception
MsgBox("صادف مشكله أثناء القيام بعمليه الإضافه , الرجاء المحاولة لاحقا", MsgBoxStyle.OkOnly, "تنبيه")
End Try
End Sub
Private Sub BtnDelet_Click(sender As Object, e As EventArgs) Handles BtnDelet.Click
If MsgBox("هل أنت متأكد من عملية الحذف ? ", MsgBoxStyle.OkCancel, "تأكيد حذف") = MsgBoxResult.Cancel Then
Exit Sub
End If
Try
CreateConn()
Dim SavInto As New OleDb.OleDbCommand
SavInto.Connection = getConn()
SavInto.CommandType = CommandType.Text
'-----------------
'حذف قيمة السجل الذي يتم تحديده
'DGview.Item(0, DGview.CurrentCellAddress.Y).Value
SavInto.CommandText = "DELETE FROM stouks WHERE الرقم =" & CType(DataGridView2.Item(0, DataGridView2.CurrentCellAddress.Y).Value, Integer) & ""
'---------------
OpenConn()
If SavInto.ExecuteNonQuery() Then
'إذا تم حذف السجل بنجاخ من قاعدة البيانات
'يتم ايضا حذفه من الداتاقريد مباشرة
If Not DataGridView2.CurrentRow.IsNewRow Then
DataGridView2.Rows.Remove(DataGridView2.CurrentRow)
End If
Else
MsgBox("فشلت عملية الحذف حاول مرة أخرى ", MsgBoxStyle.MsgBoxRight, "فشل العملية")
End If
CloseConn()
Catch ex As Exception
MsgBox("لا يوجد أي سجلات للحذف ", MsgBoxStyle.MsgBoxRight, "فشل العملية")
End Try
End Sub
Private Sub BtnAndo_Click(sender As Object, e As EventArgs) Handles BtnAndo.Click
SQLTemp = ""
'تعبئة الداتاقريد بالبيانات
Me.txtno.Clear()
Me.txtFee.Clear()
Me.txtname.Clear()
Me.txtpris.Clear()
Me.txtsize.Clear()
FillDG(SQLTemp)
panel.Hide()
txtno.Enabled = False
txtname.Enabled = False
txtFee.Enabled = False
txtpris.Enabled = False
txtsize.Enabled = False
Me.BtnAdd.Enabled = True
Me.BtnSave.Enabled = False
Me.BtnUpdate.Enabled = True
Me.BtnDelet.Enabled = True
End Sub
Private Sub BtnExit_Click(sender As Object, e As EventArgs) Handles BtnExit.Click
Me.Close()
End Sub
Private Sub btn_savesedit_Click(sender As Object, e As EventArgs) Handles btn_savesedit.Click
If MsgBox("تأكيد عملية التعديل ؟ ", MsgBoxStyle.OkCancel, "تعديل الأصناف") = MsgBoxResult.Cancel Then
Exit Sub
End If
Try
Dim SavInto As New OleDb.OleDbCommand
CreateConn()
SavInto.Connection = getConn()
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "UPDATE stouks SET الفئة = '" & Trim(Me.txtfee2.Text) & "' , اسم_الصنف = '" & Trim(Me.txt_name1.Text) & "' , السعر_الإفرادي= '" & Trim(Me.txt_address1.Text) & "' , وحدة_القياس= '" & Trim(Me.TextBox1.Text) & "' WHERE الرقم = " & CType(IDTextBox.Text, Integer) & ""
OpenConn()
If SavInto.ExecuteNonQuery() Then
'إذا تم تعديل قاعدة البيانات بنجاح يتم تعديل الداتاقريد مباشرة
MsgBox("تم تعديـــل بنجاح", MsgBoxStyle.MsgBoxRight, "نجاح العملية")
DataGridView2.Item(1, DataGridView2.CurrentCellAddress.Y).Value() = txtfee2.Text
DataGridView2.Item(2, DataGridView2.CurrentCellAddress.Y).Value() = txt_name1.Text
DataGridView2.Item(3, DataGridView2.CurrentCellAddress.Y).Value() = txt_address1.Text
DataGridView2.Item(4, DataGridView2.CurrentCellAddress.Y).Value() = TextBox1.Text
'اخفاء نافذة التعديل
Me.panel.Visible = False
Me.BtnUpdate.Enabled = True
Else
MsgBox("لم يتم تعديل ", MsgBoxStyle.MsgBoxRight, "رسالة خطأ")
End If
CloseConn()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
Me.panel.Visible = False
Me.BtnUpdate.Enabled = True
End Sub
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
Me.panel.Visible = False
Me.BtnUpdate.Enabled = True
End Sub
Private Sub DataGridView2_Click(sender As Object, e As EventArgs) Handles DataGridView2.Click
BtnDelet.Enabled = True
BtnUpdate.Enabled = True
End Sub
