تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مثال للتعامل مع الجداول المرتبطة - عن طريق الكلاسات
#21
حسنا لقد يتم تعبئة جدول Pa بكل البيانات لكل الطلاب هذه ملاحظة اذا لم تكن مشكلة فهي اذا ليست مشكلة
مع انني ارى ولست بمنزلة خبرتكم ان يتم احظار بيانات فقط اول سجل .

ايضا عند  النقر على زر الحركة يتم الدخول للاجراء Fill_TableWithCoundition مرتين وليس مرة واحدة ولازلت ابحث عن سبب المشكلة ولماذا ومن اين جاء الامر او الايعاز بتعبئة البيانات مرة اخرى .

عفوا تصحيح جدول PayMents_TB لايوجد خيار تعديل

المشكلة في الحدث BnStudant_CurrentChanged وايضا BnStudant_CurrentChanged هما المسؤلان عن هذا التكرار لتعبئة الجدول مرتين
طبعا ان وجود الامر DS.clear يحل المشكلة ولكن المفترض ان يتم توحيد الحدثين وما فيهما يكون بحدت واحد منهما فقط لاجل كود نظيف

PositionChange يتشارك مع الحدث CurrentChanged هنا تكمن المشكلة 

وعندما الغيت الحدث PositionChange  سار كل شئ على مايرام الان 

ايضا في زر الحفظ اجد اعادة ملئ البيانات من جديد
PHP كود :
 'اعادة لملئ
            Dt_Studant = Studant.FillTable 

سواء في الاضافة او التعديل ، اليس من الافضل هو اضافة السجل الجديد الى الـ Table دون الحاجة الى ارسال امر تحديث او تعبئة من جديد .
طبعا لا مشكلة هنا على برنامج صغير وعلى جهاز محلي ولكن بحال كان الجهاز هذا جهاز طرفي ويتصل بسيرفر على بعد عدة حجرات بسلك طوله 20 متر ويجلب بيانات 100 ألف سجل فارى انها مشكلة والمفروض ان ننتج مثال جيد يصلح لكل الاحوال

في الحذف ايضا يوجد امر التعبئة

PHP كود :
  'حذف الطالب
            Pos = BnStudant.Position
            Studant.Delete(CType(Lb_ID.Text, Integer))
            '
اعادة لملئ
            Dt_Studant 
Studant.FillTable 

عند حذف سجل من جدول المؤشر يتوقف تلقائيا على اخر سجل فيه .
يعني ايضا لا حاجة للتعبئة ، وان كان هناك ما يحتاج الى ضبط يتم ضبطه يدويا .

بالنسبة لعملية الحذف من الممكن الغاء امر التعبئة واستخدام هذا الامر
PHP كود :
Dt_Studant.Rows(BnStudant.Position).Delete() 

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

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

PHP كود :
      'اعادة لملئ
        Dt_Studant = Studant.FillTable

       


        BnStudant.DataSource = Dt_Studant
            '
اعادة التوجيه
        If Add_Edit 
True Then
            BnStudant
.MoveLast()
 
       Else
            BnStudant
.Position Pos
        End 
If 

سواء للحفظ او الاضافة
الرد
تم الشكر بواسطة: ابو ليلى , تعليموه
#23
السلام عليكم و رحمة الله و بركاته 
متابعة حثيثة و جيدة منك , كونك وضعت المثال تحت مجهرك.
كان الشرح الغاية منه التركيز على مبدأي الوراثة و التغليف تحديداً و لم اكن انوي المتابعة للوصول الى مثال.
بالنسبة لما تم اكتشافه من اخطاء (ان جاز و سميناها اخطاء) لان المثال تعليمي بحت و ليس للعمل.
و في هذا النوع من الامثلة و من اجل المشاهدة و المعاينة المباشرة للتغيرات و مايطرأ عليها فكان لزاماً ادراج مثل هذه الكائنات (BindigSource) و كذلك الدوال المسؤولة عن تشكيل الحقول و غيرها التي سببت لك الريبة في ان الكود يكرر نفسه.
في البرامج العملية كما تعلم يجب العمل باسلوب احترافي يعتمد معايير مجربة و موثوقة , و كما قلت سابقاً انا احبذ الفصل بين ما يخص السيرفر و الواجهات , و بالتالي اغلب هذه الامور الخاصة بالتعامل مع الجداول (اغلب العمليات تقريباً) ستجدها في جانب السيرفر و كل ما احتاجه في البرنامج هو تشغيل العمليات في السيرفر عن طريق طبقة خاصة تستقبل المدخلات و ترسل المخرجات.... ...الخ
---------------------------------------------
بحثك المتواصل يدل على خبرتك العميقة , و هذا ما اسميه الدماغ النظيف (لا يهتم كثيراً بلغة البرمجة بقدر ما يهتم بمنطقية العمل).
تحياتي لك و بالتوفيق .
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد
تم الشكر بواسطة: viv , viv , Sajad
#24
و عليكم السلام  و رحمة الله و بركاته

لا لم اقصد انها اخطاء ، فانا اعلم ان بين طلب الاخوة وبين عداد المثال وقت قصير وهو لغرض تعليمي فقط .
وأنما هي فرصة ان اتحصل على مثال ممن له خبرة فهي فرصة لا تعوض بالنسبة لي احاول استغلالها في فهم ما يجب فهمه .
وفهم البرمجة بهذه الطريقة على اصولها الصحيحة .
بالنسبة لهذه العلميات اجل اعلم انها تكون موجودة على السيرفر بشكل اجراءات مخزنة او استعلامات او ما شابه .
ولكن اعتقد احيانا لا غنى عن استخدام بعض هذه الكائنات مثل عرض قائمة او ما شابه .
افضل من تعبئتها يديويا في ListView او غيرها .
الرد
تم الشكر بواسطة:
#25
جزاك الله كل خير على هالجهد والعلم وعوضك الجنة ووالديك
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لفهم كيفية الربط الذي يتم بين الجداول viv 3 500 14-03-19, 01:53 PM
آخر رد: تعليموه
  العلاقات بين الجداول-الاضافة و الحذف و التعديل-برنامج لحفظ مصادر الموقع ابو ليلى 11 4,939 14-03-19, 01:44 PM
آخر رد: تعليموه
  مثال القراءة والكتابه على ملف تيكست Txt على الانترنت + مثال + شرح m.sami.ak 11 4,049 02-06-18, 09:46 PM
آخر رد: YousefOkasha
Exclamation [VB.NET] التعامل مع ال CMD عن طريق ال TextBox YousefOkasha 5 634 02-06-18, 09:34 PM
آخر رد: YousefOkasha
  [درس فيديو] مثال بسيط لبرنامج إجازات فقط لأغراض الشرح (الدرس الأول) عبدالله الدوسري 7 1,485 28-04-18, 06:55 PM
آخر رد: moniam
  موضوع الاستاذ رامي مثال \ لطريقة تفعيل برنامجك عند العميل وتغيير كلمة مرور اRamilove سعود 8 3,509 06-10-17, 01:43 AM
آخر رد: حمادة دراز
  الترقيم التلقائي في الجداول مشاكل و حلول ابو ليلى 6 997 09-04-17, 01:35 AM
آخر رد: ابو ليلى
  ابسط كود لرفع الملفات عن طريق سيرفر FTP Basil Abdallah 0 542 06-01-17, 03:23 PM
آخر رد: Basil Abdallah
  صمم الكلاس الخاص بك - كلاس للتعامل مع SQL SERVER ابو ليلى 16 3,498 03-09-16, 07:43 PM
آخر رد: tryold
  [درس فيديو] تشغيل اوامر Run من البرنامج & مثال غلق الويندوز بعد وقت محدد باستخدام VB.net أحمد النجار 1 1,267 23-12-15, 04:26 AM
آخر رد: الماجيك مسعد

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


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