تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] سؤال بخصوص oop
#1
السلام عليكم ورحمة الله وبركاته 

اخواني حبيت اسال كيف بإمكاني عمل اجراء لحفظ البيانات بشرط ان يستخدم لاكثر من مرة 

بمعنى اريد ان اقوم بعمل كود حفظ في قاعدة بيانات sql server 

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

وشكرا لكم
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمه الله وبركاته 

يمكنك استخدام الاجراء التالى 
وذلك بعد تعريفة فى مديول 

Sub SavaData(sql As String, para() As String, valus() As String)
        cmd = New SqlCommand(sql, Conn)
        For i As Integer = 0 To para.Count - 1
            cmd.Parameters.AddWithValue(para(i), valus(i))
        Next
        If Conn.State = ConnectionState.Open Then
            Conn.Close()
        End If
        Conn.Open()
        Try
            cmd.ExecuteNonQuery()
        Catch ex As Exception
        End Try
        Conn.Close()
    End Sub

حيث ان ال sql هو تعريف الجدول المراد الحفظ به 

تحياتى
الرد }}}
تم الشكر بواسطة: ay.alhaj
#3
جزاك الله كل خير لكن انا اريد الكود في وضع discdisconnecting mode 

اي باستخدام dataset
الرد }}}
تم الشكر بواسطة:
#4
لماذا لا يوجد رد
الرد }}}
تم الشكر بواسطة:
#5
(30-09-18, 02:38 PM)ay.alhaj كتب : جزاك الله كل خير لكن انا اريد الكود في وضع discdisconnecting mode 

اي باستخدام dataset


كل جدول له TableAdapter خاص به
ولا يمكن لهذا الـ TableAdapter تحديث بيانات جدول آخر
لماذا ؟ 
1 - لأنه يحتوي على جمل الإستعلام الخاصة بهذا الجدول 
2 - لأن هذا الـ TableAdapter يتحسس حالت السجلات في الجدول ( عند تنفيذ إجراء - الـ Update ) 
     بمعنى : إذا كان الجدول يحتوي على 50 سجل ,
                 10 سجلات محذوفين , 3 سجلات مضافين جدد , 7 سجلات تم تغيير بياناتهم , الباقي لم يتم المساس بهم.
                 ماذا يفعل  الـ TableAdapter الآن :
                                                   سيقوم بالتحقق من جميع السجلات قبل أي إجراء يتخذ ضد هذة السجلات
                                                   وسيسأل عن حالة السجل :
                                                                             1 - إذا كانت حالت السجل في الجدول المطلوب تحديثة = محذوف ( سينفذ جملة SQL الخاصة بالحذف ضد هذا السجل فقط )
                                                                                                                                                                                   DELETE FROM Table1 WHER ID = 1

                                                                             2 - إذا كانت حالت السجل في الجدول المطلوب تحديثة = جديد ( سينفذ جملة SQL الخاصة بالإدراج ضد هذا السجل فقط )
                                                                                         INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...)   0


                                                                             3 - إذا كانت حالت السجل في الجدول المطلوب تحديثة = معدل ( سينفذ جملة SQL الخاصة بالتحديث ضد هذا السجل فقط )
                                                                                                          UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;   0

                                                                             4 - إذا كانت حالت السجل في الجدول المطلوب تحديثة = لم يتغير ( لن يكون ضمن السجلات التي سيتم علية إجراء )


تذكر أن الـ tableadapter  سينشئ جميع الـ parameters لأغراض تفنيذ الإجراء , مما يعني أنه يجب أن يتعامل مع جدول محدد , 


كل هذا يتم عند إستدعاء الأمر Update
tableadapter.update(DataTable)    0
أو
tableadapter.update(DataSet)    0



لذلك من الظروري أن يكون لكل جدول tableadapter خاص به


إذا كنت تفكر في إستعمال شيئ يقلل عليك كتابة الكود 

أي tableadapter لديك موجود في الـ Dataset إنشئ Module أو Class ثم قم بعمل متغر لكل tableadapter لديك فيه
عندها يمكنك إستخدامها في أكثر من مكان .
MyClass.tableadapter1.update(Datatable1)    0

MyClass.tableadapter2.update(Datatable2)    0
MyClass.tableadapter3.update(Datatable3)    0


أو برجاء وضح ما الذي فكر فيه أكثر , لأن الذي تريدة لم تصل فكرتة بعد
ماذا تعني بـ  استدعي نفس الاجراء ولكن اقوم بتغيير اسم الجدول فقط
إشرح ما الذي يحدث داخل الإجراء لوصول الفكرة 
الواضح أن الإجراء الذي تفكر فية يستقبل متغير وهو اسم الجدول
لكن ماذا نتوقع من هذا الإجراء الذي ستقوم به ؟
الرد }}}
تم الشكر بواسطة:
#6
السلام عليكم 

ان شاء الله جارى تجهيز مثال لاستدعاء اجراء الحفظ 
واستعمالة فى شاشات مختلفة للحفظ بجدوال مختلفة 


تحياتى
الرد }}}
تم الشكر بواسطة: ay.alhaj
#7
شكرا لك اخي الفاضل لسرعتك في الرد 

المقصود انا اولا استخدم النظام المنفصل 
اريد عمل كلاس وليكن مثلا اسمه save 

ولنفرض ان عندي شاشات متعددة مثل الاصناف والموظفين والمبيعات 

انا عند الحفظ اولا اقواقوم بعمل جملة sql 
ثم اقوم بوضع الادابتر وامرر له جملة الاتصال وجملة sql 

ثم اقوم بتعبئة داتا ست 

ثم اعبئ الداتا ست في داتا تيبل 

انا اريد ان اضع هذا الكود في كلاس واحد واستخدمه في اي مكان اريده وقت ما اريد 

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

Save(table1)

Table1 اسم الجدول المراد الحفظ فيه كمثال جدول المشتريات او جدوجدول الاصناف 

ارجو ان اكون قد اوصلت الفكرة لك

شكرا لك اخي في انتظارك

في اخ كان يشرح على اليوتيوب عن مكتبة هوا عملها كان في زر الحفظ ما يكتب غير سطر واحد كمثال 

Save(table1,me,condition)

Tabl1 اسم الجدول المراد اضافة البيانات عليه
Me هو موقع كنترول في اي شاشة موجود 
Condition هو الشرط المراد اعطائهاعطائه
 

اريد ان اعمل مثل هذا حتى اختصر الوقت في الحفظ والتعديل والحذف والبحث الخ...
بدل ما اعمل في كل شاشة اكواد حفظ وتعديل وحذف اعملهم في class واستدعيه في كل شاشة
الرد }}}
تم الشكر بواسطة:
#8
ردي السابق كان يقصد إستخدام الـ Dataset بواسطة الـ Designer كمنظم لعملية إدارة البيانات في البرنامج .

أنت لا تقوم بإدارة البيانات من خلال الـ Dataset Designer كما في الصورة التالية ؟ ( صحيح )
   
الرد }}}
تم الشكر بواسطة:
#9
نعم اخي لا اقوم بذلك 

انا اقوم بملئها بالكود فقط بنظام 

Disconnecting mode
الرد }}}
تم الشكر بواسطة:
#10
(30-09-18, 09:53 PM)ay.alhaj كتب : نعم اخي لا اقوم بذلك 

انا اقوم بملئها بالكود فقط بنظام 

Disconnecting mode



المنتدى مليئ بمواضيع تتحدث عن ما تريد , فقط ابحث وستجد الكثير .
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم