تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مثال للتعامل مع الجداول المرتبطة - عن طريق الكلاسات
#2
الان مع جملة تحديث الجدول وفق حقل المفتاح الرئيسي

PHP كود :
       ''' <summary>
    ''' 
تحديث سجل في جدول وفق قيمة حقل المفتاح الرئيسي
    
''' </summary>
    ''' 
<param name="TableName">اسم الجدول المراد تحديثه</param>
    ''' <param name="Table">الجدول الذي يحوي الحقول و قيمها وهو مصفوفة</param>
    ''' 
<param name="FiledKey">اسم حقل المفتاح الرئيسي</param>
    ''' <param name="ID">قيمة حقل المفتاح الرئيسي</param>
    ''' 
<param name="Msg">رسالة حفظ اختيارية</param>
    Protected Sub Update_Table(ByVal TableName As StringByVal Table As Dictionary(Of StringObject), ByVal FiledKey As StringID As IntegerOptional ByVal Msg As Boolean False)

        If FiledKey String.Empty Then
            MessageBox
.Show("حدد حقل المفتاح الرئيسي من فضلك""تنبيه"MessageBoxButtons.OKMessageBoxIcon.StopMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign)
            Exit Sub
        End 
If

        If Table.ContainsKey(FiledKeyThen
            Table
.Remove(FiledKey)
        End If


        Dim Resuilt As Integer 0
        Dim UpdatetStr 
As String "Update " TableName " Set "

        Dim Column As String String.Empty
        For As Integer 0 To Table.Count 1
            Column 
Table.Keys.ElementAt(X)
            UpdatetStr += Column "=" "@" Column ","
        Next
        
'
        If UpdatetStr.EndsWith(",") Then UpdatetStr = UpdatetStr.Remove(UpdatetStr.Count - 1, 1)
        UpdatetStr += " Where (" & FiledKey & " = " & "@" & FiledKey & ")"
        '
        '
        Using Cmd As New SqlClient.SqlCommand(UpdatetStr, Con)

            For i As Integer = 0 To Table.Count - 1
                Cmd.Parameters.AddWithValue("@" + Table.Keys.ElementAt(i), Table.Values.ElementAt(i))
            Next
            Cmd.Parameters.AddWithValue("@" & FiledKey, ID)

            For Each parm As SqlClient.SqlParameter In Cmd.Parameters
                If IsNothing(parm.Value) Or IsDBNull(parm.Value) Then
                    parm.Value = DBNull.Value
                End If
            Next
            '
            OpenConnect()
            Resuilt Cmd.ExecuteNonQuery()
            CloseConnect()

            If Msg True Then
                
If Resuilt 0 Then
                    MessageBox
.Show("تم التعديل بنجاح""حفظ التعديلات"MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign)
                Else
                    MessageBox.Show("فشلت عملية التعديل""حفظ التعديلات"MessageBoxButtons.OKMessageBoxIcon.StopMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign)
                End If

            End If
        End Using
    End Sub 
نفس الكلام السابق سوى انها تقوم بتحديث الجدول بالمعطيات الجديدة

و في نفس الاطار يمكننا التحديث وفق مجموعة شروط , اذ يصادفك احياناً انك تريد التحديث وفق اكثر من شرط كأن تحدث طالب ما في صف محدد و شعبة محددة و كوننا لا نعرف كم عدد الشروط التي يمكن ان نحدث عن طريقها لذا رايت ان تكون لدينا مصفوفة اخرى خاصة بالشروط تحمل اسماء الاعمدة في الصف الاول و قيم الاعمدة في الصف الثاني كما يلي

PHP كود :
   ''' <summary>
    ''' 
تحديث جدول وفق مجموعة شروط جدول مصفوفة
    
''' </summary>
    ''' 
<param name="TblNmae">اسم الجدول</param>
 
   ''' <param name="Table"> جدول يحتوي على الحقول المراد تحديثها مع قيمها - مصفوفة</param>
    ''' 
<param name="CondFileds">جدول يحتوي على الشروط المراد التحديث وفقها مع قيمها مصفوفة</param>
 
   ''' <param name="Msg"></param>
    Protected Sub Update_TableByMultiCounditions(ByVal TblNmae As String, ByVal Table As Dictionary(Of String, Object), ByVal CondFileds As Dictionary(Of String, Object), Optional ByVal Msg As Boolean = False)

        If Table.Count = 0 Then
            MessageBox.Show("املئ جدول الحقول")
            Exit Sub
        End If
        If CondFileds.Count = 0 Then
            MessageBox.Show("املئ جدول الحقول الشرطية")
            Exit Sub
        End If
        ' 
 ملئ الحقول و بارمتراتها
        Dim UpdatetStr 
As String "Update " TblNmae " Set "
 
       Dim Column As String String.Empty
 
       For X As Integer 0 To Table.Count 1
            Column 
Table.Keys.ElementAt(X)
 
           UpdatetStr += Column "=" "@" Column ","
 
       Next
        If UpdatetStr
.EndsWith(","Then UpdatetStr UpdatetStr.Remove(UpdatetStr.Count 11)
 
       'ملئ الشروط و بارمتراتها
        UpdatetStr += " Where ("
        For p As Integer = 0 To CondFileds.Count - 1
            UpdatetStr += "(" + CondFileds.Keys.ElementAt(p) & " = @" & CondFileds.Keys.ElementAt(p) + ")" + "And"
        Next
        If UpdatetStr.EndsWith("And") Then UpdatetStr = UpdatetStr.Remove(UpdatetStr.Count - 3, 3)
        '
 
       Dim Resuilt As Integer 0

        Using Cmd 
As New SqlClient.SqlCommand(UpdatetStrCon)

 
           For i As Integer 0 To Table.Count 1
                Cmd
.Parameters.AddWithValue("@" Table.Keys.ElementAt(i), Table.Values.ElementAt(i))
 
           Next
            
'
            For p As Integer = 0 To CondFileds.Count - 1
                Cmd.Parameters.AddWithValue("@" + CondFileds.Keys.ElementAt(p), CondFileds.Values.ElementAt(p))
            Next

            For Each parm As SqlClient.SqlParameter In Cmd.Parameters
                If IsNothing(parm.Value) Or IsDBNull(parm.Value) Then
                    parm.Value = DBNull.Value
                End If
            Next
            '
 
           OpenConnect()
 
           Resuilt Cmd.ExecuteNonQuery()
 
           CloseConnect()

 
           If Msg True Then
                If Resuilt 
0 Then
                    MessageBox
.Show("تم التعديل بنجاح""حفظ التعديلات"MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign)
 
               Else
                    MessageBox
.Show("فشلت عملية التعديل""حفظ التعديلات"MessageBoxButtons.OKMessageBoxIcon.StopMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign)
 
               End If
 
           End If

 
       End Using

    End Sub 

حذف سجل من جدول وفق شرط واحد (قيمة المفتاح الرئيسي)

PHP كود :
   ''' <summary>
    ''' 
حذف سجل من جدول وفق قيمة المفتاح الرئيسي
    
''' </summary>
    ''' 
<param name="TableName">اسم الجدول المراد الحذف منه</param>
 
   ''' <param name="FiledKey">اسم حقل المفتاح الرئيسي</param>
    ''' 
<param name="ID">قيمة حقل المفتاح الرئيسي</param>
 
   ''' <param name="Msg">رسالة تأكيد الحذف اختيارية</param>
    Protected Sub Delete_Table(ByVal TableName As String, ByVal FiledKey As String, ByVal ID As Integer, Optional ByVal Msg As Boolean = False)

        If FiledKey = String.Empty Then
            MessageBox.Show("حدد حقل المفتاح الرئيسي من فضلك", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
            Exit Sub
        End If

        Dim DeletetStr As String = "Delete From " & TableName & "  Where " & FiledKey & " = " & "@" & FiledKey

        Dim Result As Integer = 0

        OpenConnect()

        Using Cmd As New SqlClient.SqlCommand(DeletetStr, Con)
            Cmd.Parameters.AddWithValue("@" & FiledKey, ID)
            Result = Cmd.ExecuteNonQuery()
        End Using
        CloseConnect()

        If Msg = True Then
            If Result > 0 Then
                MessageBox.Show("تم الحذف بنجاح", "حذف", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
            Else
                MessageBox.Show("فشلت عملية الحذف", "حذف", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
            End If
        End If
    End Sub 
و كذلك الحذف وفق مجموع شروط كما هو حال التحديث

PHP كود :
   ''' <summary>
    ''' 
حذف مجموعة سجلات من جدول وفق مجموعة شروط
    
''' </summary>
    ''' 
<param name="TableName">اسم الجدول المراد الحذف منه</param>
 
   ''' <param name="CondFileds">مصفوفة الشروط مع قيمها</param>
    ''' 
<param name="Msg">رسالة تأكيد الحذف اختيارية</param>
 
   Protected Sub Delete_TableByMultiCounditions(ByVal TableName As StringByVal CondFileds As Dictionary(Of StringObject), Optional ByVal Msg As Boolean False)


 
       If CondFileds.Count 0 Then
            MessageBox
.Show("قائمة الشروط فارغة حاول ملئها اولاً""تنبيه"MessageBoxButtons.OKMessageBoxIcon.StopMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign)
 
           Exit Sub
        End 
If
 
       '
        If TableName = String.Empty Then
            MessageBox.Show("حدد اسم الجدول من فضلك", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
            Exit Sub
        End If
        ' 
 ملئ الحقول و بارمتراتها
        Dim DeletetStr 
As String "Delete From " TableName "  Where "
 
       Dim Column As String String.Empty
 
       For X As Integer 0 To CondFileds.Count 1
            Column 
CondFileds.Keys.ElementAt(X)
 
           DeletetStr += "(" Column "=" "@" Column ")" " And "
 
       Next
        If DeletetStr
.EndsWith("And "Then DeletetStr DeletetStr.Remove(DeletetStr.Count 55)
 
       'مصفوفة بارمترات لكوماند الحذف
        Dim parms As New List(Of SqlClient.SqlParameter)
        For i As Integer = 0 To CondFileds.Count - 1
            Dim parm As New SqlClient.SqlParameter("@" & CondFileds.Keys.ElementAt(i), CondFileds.Values.ElementAt(i))
            parms.Add(parm)
        Next
        '
 
       Dim Result As Integer 0
        
'
        Using Cmd As New SqlClient.SqlCommand(DeletetStr, Con)
            '
تزويد الكوماند بالبارمترات
            For Each Parm 
As SqlClient.SqlParameter In parms
                Cmd
.Parameters.Add(Parm)
 
           Next
            
'
            OpenConnect()
            Result = Cmd.ExecuteNonQuery()
            CloseConnect()

            If Msg = True Then
                If Result > 0 Then
                    MessageBox.Show("تم الحذف بنجاح", "حذف", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
                Else
                    MessageBox.Show("فشلت عملية الحذف", "حذف", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
                End If
            End If

        End Using

    End Sub 
الان ناتي الى عمليات تعبئة الجدول بالبيانات , وله عدة انواع مثل الملئ العادي او الملئ وفق ترتيب محدد و بشرط او بدونه او وفق مجموع شروط 

اولاً الملئ بترتيب او بدونه بدون شروط
PHP كود :
   ''' <summary>
    ''' 
تعبئة جدول بكامل الصفوف مع ترتيب
    
''' </summary>
    ''' 
<param name="TblNmae">اسم الجدول</param>
 
   ''' <param name="Table">الجدول الذي يحوي الحقول و قيمها وهو مصفوفة</param>
    ''' 
<param name="OrderBy">اسم الحقل الذي على اساسه يتم الترتيب</param>
 
   ''' <returns>يعود بجدول معبئ بالبيانات</returns>
    Protected Overloads Shared Function Fill_Table(ByVal TblNmae As String, ByVal Table As Dictionary(Of String, Object), Optional OrderFiled As String = Nothing, Optional OrderBy As Boolean = False) As DataTable

        If Table.Count = 0 Then
            MessageBox.Show("املئ جدول الحقول")
            Return Nothing
        End If

        If Table.Count = 0 Then
            MessageBox.Show("املئ جدول الحقول ")
            Return Nothing
        End If


        Dim SelectStatement As String = "Select "

        Dim Column As String = String.Empty
        For X As Integer = 0 To Table.Count - 1
            Column = Table.Keys.ElementAt(X)
            SelectStatement += Column + ","
        Next

        If SelectStatement.EndsWith(",") Then SelectStatement = SelectStatement.Remove(SelectStatement.Count - 1, 1)
        SelectStatement += " From " & TblNmae
        If OrderBy = True Then
            If Not IsNothing(OrderFiled) Then
                SelectStatement += " Order By " & OrderFiled
            Else
                ' 
MsgBox("حقل الترتيب معدوم القيمة")
 
           End If
 
       End If


 
       Dim Dt As New DataTable
        Dt
.Clear()

 
       Using Cmd As New SqlClient.SqlCommand(SelectStatementCon)
 
           Using Da As New SqlClient.SqlDataAdapter(Cmd)
 
               Da.Fill(Dt)
 
           End Using
        End Using

        Return Dt
    End 
Function 
الدالة تعيد كائن جدول معبئ بالبيانات 

ثانياً الملئ وفق شرط
PHP كود :
   ''' <summary>
    ''' 
تعبئة جدول بحقول محددة وفق شرط
    
''' </summary>
    ''' 
<param name="TblNmae">اسم الجدول</param>
 
   ''' <param name="Fileds">مصفوفة الحقول</param>
    ''' 
<param name="CondFiled">شرط المطابقة حقل</param>
 
   ''' <param name="id">قيمة الحقل الشرطي</param>
    ''' 
<returns>القيمة المعادة جدول بيانات</returns>
 
   Protected Overloads Function Fill_TableWithCoundition(ByVal TblNmae As StringByVal Fileds As Dictionary(Of StringObject), ByVal CondFiled As StringByVal ID As Object) As DataTable

        If Fileds
.Count 0 Then
            MessageBox
.Show("تاكد من ملئ مصفوفة الحقول")
 
           Return Nothing
        ElseIf TblNmae 
"" Or CondFiled "" Then
            MessageBox
.Show("تاكد من ملئ اسم الجدول او اسم الحقل الشرطي")
 
           Return Nothing
        ElseIf IsNothing
(IDThen
            MessageBox
.Show("قيمة الحقل الشرطي معدومة")
 
           Return Nothing
        End 
If


 
       Dim SelectStatement As String "Select "

 
       Dim Column As String String.Empty
 
       For X As Integer 0 To Fileds.Count 1
            Column 
Fileds.Keys.ElementAt(X)
 
           SelectStatement += Column ","
 
       Next


        If SelectStatement
.EndsWith(","Then SelectStatement SelectStatement.Remove(SelectStatement.Count 11)
 
       SelectStatement += " From " TblNmae " Where " CondFiled " = @" CondFiled

        Dim Dt 
As New DataTable
        Dt
.Clear()

 
       Using Cmd As New SqlClient.SqlCommand(SelectStatementCon)
 
           Cmd.Parameters.AddWithValue("@" CondFiledID)
 
           Using Da As New SqlClient.SqlDataAdapter(Cmd)
 
               Da.Fill(Dt)
 
           End Using
        End Using

        Return Dt
    End 
Function 

ثالثاً الملئ وفق مجموعة شروط
PHP كود :
   ''' <summary>
    ''' 
تعبئة جدول بالبيانات وفق مجموعة شروط 
    
''' </summary>
    ''' 
<param name="TableName">اسم الجدول</param>
 
   ''' <param name="CondFileds">قائمة الشروط</param>
    ''' 
<returns>يعيد جدول بيانات مملوء وفق الشروط المحددة</returns>
 
   Protected Overloads Function Fill_TableWithMultiCounditions(ByVal TableName As StringByVal CondFileds As Dictionary(Of StringObject)) As DataTable
        If TableName 
"" Then
            MessageBox
.Show("تاكد من ملئ اسم الجدول")
 
           Return Nothing
        End 
If

 
       If CondFileds.Count 0 Then
            MessageBox
.Show("املئ مصفوفة الحقول")
 
           Return Nothing
        End 
If

 
       Dim Serch As String "Select "
 
       Dim Column As String String.Empty
 
       For X As Integer 0 To CondFileds.Count 1
            Column 
CondFileds.Keys.ElementAt(X)
 
           Serch += Column ","
 
       Next


        If Serch
.EndsWith(","Then Serch Serch.Remove(Serch.Count 11)
 
       Serch += " From " TableName " Where "

 
       For X As Integer 0 To CondFileds.Count 1
            Column 
CondFileds.Keys.ElementAt(X)
 
           Serch += "(" Column "=" "@" Column ")" " And "
 
       Next

        If Serch
.EndsWith("And "Then Serch Serch.Remove(Serch.Count 55)
 
       '
        Dim Dt As New DataTable
        Dt.Clear()
        '
 
       Dim parms As New List(Of SqlClient.SqlParameter)
 
       For i As Integer 0 To CondFileds.Count 1
            Dim parm 
As New SqlClient.SqlParameter("@" CondFileds.Keys.ElementAt(i), CondFileds.Values.ElementAt(i))
 
           parms.Add(parm)
 
       Next

        Using Cmd 
As New SqlClient.SqlCommand(SerchCon)
 
           For Each Parm As SqlClient.SqlParameter In parms
                Cmd
.Parameters.Add(Parm)
 
           Next

            Using Da 
As New SqlClient.SqlDataAdapter(Cmd)
 
               Da.Fill(Dt)
 
           End Using
        End Using
        Return Dt

    End 
Function 
كل دوال الملئ تعود بجدول بيانات DataTable
ساكتفي بهذا العدد من الدوال حتى الان و اذا اردت التوسع يمكنك ذلك

الخطوة التالية هي العمل على قاعدة البيانات في جانب السيرفر

يتبع...
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


الردود في هذا الموضوع
RE: مثال للتعامل مع الجداول المرتبطة - عن طريق الكلاسات - بواسطة ابو ليلى - 09-04-17, 02:58 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ابسط كود لرفع الملفات عن طريق سيرفر FTP Basil Abdallah 2 4,277 20-11-20, 07:21 PM
آخر رد: walihn
  لفهم كيفية الربط الذي يتم بين الجداول viv 4 5,408 03-10-20, 05:34 PM
آخر رد: Arfat007
  العلاقات بين الجداول-الاضافة و الحذف و التعديل-برنامج لحفظ مصادر الموقع ابو ليلى 12 18,134 04-04-19, 10:08 PM
آخر رد: اباذر
  مثال القراءة والكتابه على ملف تيكست Txt على الانترنت + مثال + شرح m.sami.ak 11 9,063 02-06-18, 09:46 PM
آخر رد: YousefOkasha
Exclamation [VB.NET] التعامل مع ال CMD عن طريق ال TextBox YousefOkasha 5 5,492 02-06-18, 09:34 PM
آخر رد: YousefOkasha
  [درس فيديو] مثال بسيط لبرنامج إجازات فقط لأغراض الشرح (الدرس الأول) عبدالله الدوسري 7 12,085 28-04-18, 06:55 PM
آخر رد: moniam
  موضوع الاستاذ رامي مثال \ لطريقة تفعيل برنامجك عند العميل وتغيير كلمة مرور اRamilove سعود 8 8,154 06-10-17, 01:43 AM
آخر رد: حمادة دراز
  الترقيم التلقائي في الجداول مشاكل و حلول ابو ليلى 4 4,142 09-04-17, 01:35 AM
آخر رد: ابو ليلى
  صمم الكلاس الخاص بك - كلاس للتعامل مع SQL SERVER ابو ليلى 11 9,607 03-09-16, 07:43 PM
آخر رد: tryold
  [درس فيديو] تشغيل اوامر Run من البرنامج & مثال غلق الويندوز بعد وقت محدد باستخدام VB.net أحمد النجار 1 4,105 23-12-15, 04:26 AM
آخر رد: الماجيك مسعد

التنقل السريع :


يقوم بقرائة الموضوع: