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

سؤال التعامل مع dataset لأكثر من مستخدم

مغلق
بدأه عبدالجليل العقوري في 8 نوفمبر 2005 · 5 رد · 790 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الاعزاء

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

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

مستخدم

يعدل في نفس الجدول وفي نفس الحقل وانا عارف ان dataset هي عبارة عن نسخة من قاعدة البيانات الاصلية يتم عليها العمل من

حفظ واللغاء .....الخ ثم حفظ هذه البيانات في قاعدة البيانات الاصلية .

وبالتالي انا لم افهم فكره العمل لأكثر من مستخدم اذا كان كل مستخدم يتعامل مع dataset ثم قام بتعديل وفي نفس اللحظه

هناك مستخدم اخر قام بالتعديل في نفس الحقل ثم قام اثنين معا بحفظ التعديلات في قاعدة البيانات الاصلية وربما تتعارض مع بعضها او

انهم في هذه الحالة "اي اكثر من مستخدم" يستخدمون dataset واحده!

وبالتالي كيف اقوم بتفادي هذه المشكلة وما هي الضوابط التي يتم وضعها اثنا كتابة الكود مع العلم انني استخدم قاعدة بيانات

sqlserver

وسؤالي الثاني هو :

كيف اقوم بعمل تحديث للdataset بشكل زمني اي بعد مرور فترة زمنيه .

الرجاء ابدا الملاحظات حول هذا الموضوع وذلك لحاجتي اليه واتمنى منكم ارفاق اكواد توضحيه

وانا اسف على اى سؤال لم يتضح وذلك لقلة خبرتي في vb.net والسلام عليكم ورحمة الله وبركاته

"نحن لا نستسلم... ننتصر أو نموت.... وهذه ليست النهاية... بل سيكون عليكم أن تحاربوا الجيل القادم والاجيال التي تليه... اما أنا... فإن عمري سيكون أطول من عمر شانقي."

عمر المختار

اللهم انعم على بلادي بالأمن والأمان

#2
اقتباس
اي اكثر من مستخدم" يستخدمون dataset واحده!

الـ DataSet تكون موجودة على الـ Client أي ان كل مستخدم يتعامل مع الـ DataSet الموجوده في ذاكرة الخاصة بالحاسب الذي يستخدمه، بمعنى آخر: كل مستخدم و له الـ DataSet الخاصه به، فالمشكلة تكمن في جملة الـ Update للـ DataAdapter ...

حسب علمي إن كنت تستخدم الـ SQL Server فليس هناك قلق من الـ Concurrency، فالـ SQL Server يستخدم الـ Interrupt أي انه يضع كل الـ Transactions القادمة له في طابور Queue فالقادم أولاً هو الذي يتم تفيذه ثم القادم ثانيةً و هكذا دواليك...

أن كنت تريد التعامل مع الـ Concurrency بنفسك (و هو الأضمن) فأمامك 3 أساليب:

Pessimistic Concurrency
Optimistic Concurrency
Last-In Wins

بالنسبة لحالتك فالطريقة الأنسب و التي ينصح بها دائماً من الطرق السابقة هي الطريقة الثانية: Optimistic Concurrency

تقوم هذه الطريقة بغلق الـ Row الذي يتم تحديثه الآن و لا يستطيع أي مستخم آخر التعامل معه في نفس توقيت التحديث..

إقرأ هذه المقالة جيداً التي تشرح الثلاثة طرق:

Handling Data Concurrency Using ADO.NET

رأس الحكمة الإيمان بالله

#3

hi

about the first question

u must lock in data base feild thats an database devloper soluation

so when u read the record u locking it then no one can see it or read or write on it

we have to type of locking

1.read lock

2. write lock

the first not allaw to read and write to the record

the secound allaw reading but not allaw writing

*but i see its not good soluation and so i have my won soluation but its very deficulte to use

but its very good to use in the large and profisonal system

note

thats soluation use in oracle and in sql server o any data base type

*****************************************************************

the second qestion

u can easy doing thats by using timer

set the interval of the timer to the period thats need to update dataset

Private Sub Splash_timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Splash_timer.Tick

datadapter1.updatedatset(dataset1,"tabelname")

end sub

am ready for another qestion or information

byeeeeeee

#5

أرجو أن تتأكد مرة أخرى يا حازم، فقد قمت بتجربته و هو يعمل..

رأس الحكمة الإيمان بالله

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…