الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مالحل مع Data Set وتحديث البيانات ؟

بدأه visual6.0 في 4 مايو 2013 · 6 رد · 742 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

مشيت تمام جدا في مشروعي التعليمي للانتقال إلى ado.net ولكن وصلت لمرحلة أيقنت بأنها فعلاً مشكلة وهي :

 

عندما نعمل  Fill إلى DataSet فإن البيانات تصبح جامدة داخل Data Set أي أن أي تغيير يطرأ على قاعدة البيانات لا تتأثر به  Data Set ، بمعنى أنه تم فصلها عن قاعدة البيانات.

 

هل من حل لكيفية تحديث البيانات بدلا من إعادة فتح الجدول من جديد من قاعدة البيانات ؟

 

هذه المشكلة لا علاقة لها بالبرامج التي من طرف واحد أقصد برامج غير شبكية لأنه كما هو معلوم تستطيع تحديث Data Set برمجيا داخل الذاكرة ، ولكن الأطراف الأخرى لن تتحدث البيانات لهم

#2

يا أخي الداتا سيت هي في الاصل قاعدة بيانات بمعني الكلمه وفي ديناميكيه عاليه جدا وتتأثر بالبيانات التي تغيرت في datatable وتستطيع ارجاع جميع البيانات المضافة لها بكل سهوله

#3

جميل جدا لكن كما يبدوا لم تفهم سؤالي ورغم أن الداتا سيت تفتح جدول مرتبط فكيف يقوم بتحديثه وهو أساساً بداخله Inner JoIn?

 

سؤالي ياغالي : أنا لما اضيف سجل جديد سيضاف في الداتا سيت تمام ؟

طيب والأطراف الأخرى كيف يوصلهم هذا السجل الجديد بما أنهم فاتحين البرنامج أساساً ؟

إذا لابد من فتح الداتا سيت من جديد وتعبئتها بالبيانات الجديدة ، وهذا لا أريده لأن حجم الجدول كبير عند فتحه وبعلق الجهاز.

تم تعديل هذه المشاركة بواسطة visual6.0 في 4 مايو 2013 في 21:09

#4

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

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

هذا ان كنت استوعبت ما تريد

#5

شاكر لك استمرارك معي في المشكل

 

ولكن أخي حتى توضح أكثر الصورة

 

الآن يوجد شخصان متصلان بقاعدة البيانات من خلال البرنامج ، الأول قام بإضافة سجل جديد في القاعدة ، طيب الثاني كيف يشوف السجل هذا؟

طبعاً أنا كما ذكرت سابقاً أنني جعلت الاتصال منفصل أي يعمل المستخدم ويستعلم من DATA SET وليس من قاعدة البيانات لسرعة تنفيذ العمليات .

تم تعديل هذه المشاركة بواسطة visual6.0 في 4 مايو 2013 في 23:54

#6

عفواً على التدخل

لقد بحثت قبلك عن هذا الموضوع ... ولم أتوصل إلى حل سهل ..

فما معي إلا أن أقوم باستدعاء البيانات مرة أخرى عند كل انتقال إلى سجل أو حفظ ...!!!! عملية متعبة للشبكة ولكن ما باليد حيلة .. ومنتظرين من يسهل لنا هذه العملية

كذلك في فورم البحث مثلاً تأتي هذه المشكلة حيث من المحتمل أن يضاف سجل جديد يحتوي على المعلومة التي نبحث عنها بعد أن ننفذ البحث الأول وقبل تنفيذ البحث الثاني ...

#7

الحل هو بإستخدام Notification services في SQL server و هي موضوع صعب قليلاً و انا لم أجربه كي أساعدك فيه .. على العموم قد تجد في هذا الرابط ما يفيدك..

http://www.codeproject.com/Articles/144344/Query-Notification-using-SqlDependency-and-SqlCach

و بعد ان تقوم بإنشاء message,contract,queue, service  في service broker  في قاعدة بياناتك و (هي عناصر لازمة لإنشاء الإشعارات و إرسالها لبرنامجك)  تقوم بكتابة كود معين في برنامجك يتيح للداتا جريد أن تحدث تلقائيا بمجرد وقوع أي تغيير في الجدول في قاعدة البيانات .. و ذلك بإستدعاء كائن من النوع SQLNotification  و هو يحتوي على 2 methods: Start()  و Stop() ..

كما قلت لك الموضوع لم اجربه قط و أنا فقط أعرفه من خلال قرائتي لأحد مراجع الSQL Server  و الحقيقة أنه موضوع مشوق و سأحاول دراسته جيداً ..

مواضيع مشابهة