منتديات روكشا     َولَوْلَا إِذْ دَخَلْتَ جَنَّتَكَ قُلْتَ مَا شَاءَ اللَّهُ لَا قُوَّةَ إِلَّا بِاللَّه

الرئيسية |  التسجيل  |  مركز رفع الملفات  |  الاتصال بنا  

 



العودة   منتديات روكشا > المنتدي التخصصي > قسم التصاميم والبرمجة والجرافيكس والميديا > انشاء وتصميم وبرمجة البرامج

الملاحظات

انشاء وتصميم وبرمجة البرامج برنامج الوورد اكسس اكسيل بوربوينت فيجوال بيسك برامج محاسبة برامج ادارة وتنظيم حسابات تنسيق الملفات

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-23-2019, 12:45 AM

الصورة الرمزية الفارس

الفارس

.:: عضـو متميز ::.

 
تاريخ التسجيل: Feb 2019
الدولة: مصر
المشاركات: 837
معدل تقييم المستوى: 12
الفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالى
الفارس غير متواجد حالياً
جديد فتح كلاس جديد على مستوى المشروع سنقوم بادراج دوال عامة

 



السلام عليكم ورحمه الله وبركاته


فتح كلاس جديد على مستوى المشروع سنقوم بادراج دوال عامة

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





في البداية ننشأ مشروع جديد
نضيف كلاس للمشروع و نسميه DbGo او سميه ما شئت ستكون وضيفة هذا الكلاس تجميع كل ما نحتاجه من دوال و اجراءات عامة يمكن لكل الكائنات ان تستفيد منها و تعيد تطبيقها بما يناسبها




ساضيف لهذا الكلاس بعض التمهيدات الاولية كما يلي
PHP كود

كود PHP:
:
   Protected 
Shared MyConnectionString As String ""
    
Protected Shared ConSql As New SqlClient.SqlConnection(MyConnectionString)


    
Shared Sub New(ByVal ConnectionString As String)
        
SetConnectionString ConnectionString
        
If ConSql.ConnectionString Nothing Then ConSql.ConnectionString MyConnectionString
    End Sub 




عند انشاء اي نسخة جديدة منه سيطلب منك تمرير نص الاتصال الخاص بالسيرفر


PHP كود :

كود PHP:
   ''' <summary>
    ''' 
Set Or Get ConnectionString
    
''' </summary>
    ''' 
<returns></returns>
    Public 
Shared Property SetConnectionString() As String
        Set
(value As String)
            
MyConnectionString value
        End Set
        Get
            
Return MyConnectionString
        End Get
    End Property


    
''' <summary>
    ''' 
Close Connection To Data Base
    
''' </summary>
    Protected Shared Sub CloseConnect()
        If ConSql.State = ConnectionState.Open Then
            ConSql.Close()
        End If
    End Sub

    ''' 
<summary>
    
''' Open Connection To Datat Base
    ''' 
</summary>
    Protected 
Shared Sub OpenConnect()
        If 
ConSql.State ConnectionState.Closed Then
            
If ConSql.ConnectionString Nothing Then ConSql.ConnectionString MyConnectionString
            ConSql
.Open()
        
End If
    
End Sub 




خاصية لاسناد نص الاتصال او الحصول عليه و هي محصورة على الكائنات التي تشتق هذا الكلاس
اجراء لفتح الاتصال , و اجراء لغلق الاتصال





PHP كود :


كود PHP:
   ''' <summary>
    ''' 
اضافة سجل جديد الى جدول
    
''' </summary>
    ''' 
<param name="TableName">اسم الجدول</param>
    
''' <param name="Table">الجدول الذي يحوي الحقول و قيمها وهو مصفوفة</param>
    ''' 
<param name="KeyFiled">اسم حقل المفتاح الرئيسي ليتم استثنائه من جملة الاضافة</param>
    
''' <param name="Msg">رسالة الاضافة وهي اختيارية</param>
    ''' 
<returns>يعود بقيمة الحقل المضاف للمفتاح الرئيسي</returns>
    Protected Function 
Add_New(ByVal TableName As StringByVal Table As Dictionary(Of StringObject), ByVal KeyFiled As StringOptional ByVal Msg As Boolean False) As Integer

        Dim Resuilt 
As Integer 0
        Dim Insert_Statement 
As String "insert Into " TableName " ("

        
If Table.ContainsKey(KeyFiledThen
            Table
.Remove(KeyFiled)
        
End If


        
Dim Column As String String.Empty
        For 
As Integer 0 To Table.Count 1
            Column 
Table.Keys.ElementAt(X)
            
Insert_Statement += Column ","
        
Next
        
'
        If Insert_Statement.EndsWith(",") Then Insert_Statement = Insert_Statement.Remove(Insert_Statement.Count - 1, 1)
        Insert_Statement += ")" & " Values ("
        '
        
For As Integer 0 To Table.Count 1
            Column 
Table.Keys.ElementAt(X)
            
Insert_Statement += "@" Column ","
        
Next

        
If Insert_Statement.EndsWith(","Then Insert_Statement Insert_Statement.Remove(Insert_Statement.Count 11)
        
Insert_Statement += ")"

        '
        OpenConnect()
        Using Cmd As New SqlClient.SqlCommand(Insert_Statement, ConSql)
            For i As Integer = 0 To Table.Count - 1
                Cmd.Parameters.AddWithValue("@" + Table.Keys.ElementAt(i), Table.Values.ElementAt(i))
            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

            Resuilt = Cmd.ExecuteNonQuery

            '
تحصيل رقم السجل
            Cmd
.CommandText "Select @@IDENTITY"
            
Resuilt CType(Cmd.ExecuteScalar(), Integer)

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

    End 
Function 




شرح الدالة الخاصة بالاضافة

وسائط الدالة هي
TableName : اسم الجدول الذي سنتعامل معه
Table As Dictionary : جدول البيانات الذي سنتعامل معه و هو عبارة عن مصفوفه من النوع Dictionary تحتوي على عمودين واحد اخزن فيه اسماء الاعمدة و الثاني اخزن فيه قيمة كل عمود (ستتضح اليتها مع العمل و هي بسيطة جداً)
KeyFiled : اسم حقل المفتاح الرئيسي الخاص بالجدول ليتم استثنائه في عملية الاضافة
Msg : متغير منطقي (بولياني) اتحكم عن طريقه بعرض رسالة الاضافة من عدمها






PHP كود :
كود PHP:

       Dim Resuilt 
As Integer 0
        Dim Insert_Statement 
As String "insert Into " TableName " ("

        
If Table.ContainsKey(KeyFiledThen
            Table
.Remove(KeyFiled)
        
End If


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






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





PHP كود :
كود PHP:

       
If Insert_Statement.EndsWith(","Then Insert_Statement Insert_Statement.Remove(Insert_Statement.Count 11)
        
Insert_Statement += ")" " Values ("
        '
        For X As Integer = 0 To Table.Count - 1
            Column = Table.Keys.ElementAt(X)
            Insert_Statement += "@" & Column + ","
        Next

        If Insert_Statement.EndsWith(",") Then Insert_Statement = Insert_Statement.Remove(Insert_Statement.Count - 1, 1)
        Insert_Statement += ")" 



نزيل الفاصلة اخر جملة الاضافة و بعدها نمر مرة اخرى على حقول المصفوفة لنكون بارميتر لكل حقل و نضيفه لجملة الاضافة
و نزيل بعدها الفاصلة الاخيرة و نكون بذلك قد كونا جملة اضافة لكل الحقول الموجودة في المصفوفة و التي تمثل حقول الجدول




PHP كود :
كود PHP:

       OpenConnect
()
        
Using Cmd As New SqlClient.SqlCommand(Insert_StatementConSql)
            For 
As Integer 0 To Table.Count 1
                Cmd
.Parameters.AddWithValue("@" Table.Keys.ElementAt(i), Table.Values.ElementAt(i))
            
Next

            
For Each parm As SqlClient.SqlParameter In Cmd.Parameters
                
If IsNothing(parm.Value) Or IsDBNull(parm.ValueThen
                    parm
.Value DBNull.Value
                End 
If
            
Next

            Resuilt 
Cmd.ExecuteNonQuery 


:55(:55(:55(:55(:55(:55
نفتح الاتصال و نعرف كائن Command مع الوسائط المطلوبة
نضيف بارمترات لكائن الـ Command عبر المرور على عناصر المصفوفة حيث نضيف اسم البارمتر موافق لاسم الحقل و نعطيه القيمة المخزنة في العمود الثاني الخاص بقيمة العمود
بعدها نقوم بالمرور على بارمترات الكائن Command و نسند القيمة Null لكل القيم الفارغة ان وجدت حتى لا نقع في مشاكل الادخالات الفارغة
و اخيراً ننفذ عملية الاضافة




PHP كود :

كود PHP:

           
'تحصيل رقم السجل
            Cmd.CommandText = "Select @@IDENTITY"
            Resuilt = CType(Cmd.ExecuteScalar(), Integer)

            If Msg = True Then
                If Resuilt > 0 Then
                    MessageBox.Show("تمت الاضافة بنجاح", "حفظ التعديلات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
                Else
                    MessageBox.Show("فشلت عملية الاضافة", "حفظ التعديلات", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
                    Resuilt = 0
                End If
            End If
        End Using
        CloseConnect()
        Return Resuilt 



بعد العملية السابقة سنقوم بتحصيل رقم السجل المضاف
و سنفحص قيمة المتغير البولياني و على اساسه نعرض رسالة الاضافة
اخيراً نعود بقيمة السجل المضاف لنستفيد منها و نورثها للابناء


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


اتمنى ان تكون الدالة مفهومة و سهلة الادراك





رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
برنامج جديد برنامج عرض صفحتين في كل مرة في مستند Word الفارس انشاء وتصميم وبرمجة البرامج 0 03-21-2019 06:26 AM
طرق انزال تعريف الطابعة وطرق معرفة مستوى الحبر بها وشرح طباعة اجزاء من صفحة الويب ابن الوليد برامج الحاسب 1 03-12-2019 09:31 PM
كتاب شرح دوال إكسيل 2019 الجديدة ifs, maxifs, minifs, switch, concat, textjoin, الفارس انشاء وتصميم وبرمجة البرامج 0 02-06-2019 05:05 AM
كتاب Excel تحميل كتاب شرح اهم دوال برنامج إكسل مهرة النجدية انشاء وتصميم وبرمجة البرامج 0 02-05-2019 02:51 AM
كتاب برنامج حسابات عامة سهل الاستخدام ابن الوليد انشاء وتصميم وبرمجة البرامج 0 12-09-2018 07:36 PM

 

RSS RSS 2.0 XML MAP HTML

الساعة الآن 10:43 PM

نبذة عن المنتدى

روابط مفيدة

إعلانات نصية

روابط الموقع

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



Powered by vBulletin® Copyright ©2000 - 2019,