![]() |
|
[VB.NET] رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41) +--- الموضوع : [VB.NET] رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# (/showthread.php?tid=29593) الصفحات:
1
2
|
رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - sniperjawadino - 10-05-19 لطالما أرقني هذا المشكل و أرهق الكثير من الإخوة في المنتدى ------------------------------------------------------------------------------------------------- رسالة خطأ عند الحذف أو تعديل بيانات جديدة ------------------------------------------------------------------------------------------------- تعددت الأسباب لكن الحل لم أجده في أي موضوع اليوم و بعد بحث طويل و التدقيق و التجربة . إقتربت من معرفة المشكل حتى نجد الحل إكتشفت أن سبب المشكل هو المفتاح الرئيسي في قاعدة البيانات بحيث عند جعله "AutoNumber" يحدث المشكل ما رأيكم و ما هو العلاج ؟ RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - asemshahen5 - 10-05-19 الغ خاصية الترقيم التلقائي و ضع هذا الكود : PHP كود : Dim T As Long, n As LongRE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - elgokr - 11-05-19 ضع الكود المستخدم
لتوضح الطريقة التى تستخدمها فى التعديل والحذف
حتى اوضح لماذا تحدث هذه المشكلة تماماً
لان عملية AutoNumber ما هى الا ترقيم تلقائي
وليس له اى مشكلة او دخل فى الامر
احياناً المشكلة تكون بسبب
كون البرنامج يستخدم اكثر من شخص
وخصوصاً فى كود فتح واغلاق الاتصال
أو ان عمود الترقيم التلقائي لا يحتوى على مفتاح
حتى يجبر العمود انه قيمة اجبارية وليس يقبل ان يكون فارغ
تحياتى لك
وتمنياتى لك التوفيق
RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - asemshahen5 - 11-05-19 لو أن عندي عامود ترقيم تلقائي و حذفت منه السجلات التالية 2-4-6 عند إضافة سجل جديد للعامود يعطينى 7 مثلا هل هناك طريقة أجبره على أخذ الرقم 2 أو 4 أو 6 إذا كان هناك أرجو كتابتها . RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - elgokr - 11-05-19 (11-05-19, 05:40 PM)asemshahen5 كتب : لو أن عندي عامود ترقيم تلقائي و حذفت منه السجلات التالية 2-4-6 عند إضافة سجل جديد للعامود يعطينى 7 مثلا هل هناك طريقة أجبره على أخذ الرقم 2 أو 4 أو 6 لا يوجد طريقة مع الترقيم التلقائي
نعم يمكنك عمل كود تحقق وادخال القيمة يدوياً
ولكن سيتم تخزين هنا 7 فارغاً كما لو انه تم الاستخدام
الحل الوحيد هنا هو الطريقة الترقيم اليدوي
ولكن ما اراه من سؤال وبخصوص هذا الامر مع الججميع
الترقيم التلقائي يجب ان لا يستخدم ولا هو للعرض
الاستخدام الوحيد فقط فى التعديل والحذف فقط
وليس لعرض كا تسلسل فى الداتا جريد وما شبه
ولحل مشكلة هذا فى العرض مثل الداتا جريد
فقط كل ما عليك عمل كود For لتعديل لانشاء عمود
او تغيير / عادة ترقيم العمود التسلسلى
لاعطاء ترقيم من 1 الى اخر رقم
وهو ارسال قيمة i+1 لقيمة العمود التسلسلي
تحياتى لك
وتمنياتى لك التوفيق
RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - sniperjawadino - 12-05-19 أخي asemshahen5 شكرا لك على المساعدة لكن لا يمكن الغاء خاصية الترقيم التلقائي في البرامج التي تسجل معلومات كثيرة مثل المطعم لأنه سيكون الأمر متعب للحاسوب أضن ذلك أخي elgokr شكرا لك على المتابعة مرة أخرى سأضع لك مثال صغير هنا حتى ترى بعينيك عسى أن تكتشف لي الخطأ وكما قلت أنت فبالبرنامج في الشبكة يستخدمه تلاث أشخاص RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - elgokr - 13-05-19 الشكر لله والحمد لله
والحمد لله على كل حال
اذا كان قاعدة البيانات من نوع Access
فهنا انت لا تحتاج لجعل السورس على الشبكة ويعمل عليها كل منهم من خلالها
ستجعل على كل جهاز لكل شخص نسخة من مجلد البرنامج
وستقوم بعمل قاعدة البيانات مشاركة وتطبق الشرح الموجود هنا
واذا كان قاعدة البيانات من نوع Sql
فسيكون الامر فقط كما اشرت اليه مسبقاً
وهو كود الفتح والاغلاق لقاعدة البيانات اثناء التنفيذ
على العموم انا فى انتظار المثال حتى افيدك بالاجابة تحل الامر مباشراً
تحياتى لك
وتمنياتى لك التوفيق
RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - sniperjawadino - 15-05-19 (13-05-19, 02:13 AM)elgokr كتب : حقا أخي elgokr الطريقة اللتي شرحت في الرابط هي اللتي إستعملت فشكرا لك على هذا لقد وضعت مثال مصغر على العملية هنا و أنا أقوم بنسخ الأكواد في هذا المثال وجدت شيئ أشك في أمره وهو هذا الكود كود : dttt.Rows(0).Item("Qté") = dttt.Rows(0).Item("Qté") - DataGridView1.Rows(i).Cells("Qté").Valueستجده بالمثال فهذا الكود هو لتعديل قيمة في قاعدة البيانات ماذا لو ضغط الكل من في الشبكة في نفس اللحظة على الزر قد يسبب هذا المشكل ----------- أنا لا أستخدم فتح و غلق القاعدة في برامجي فقط استعلامات فهل هذا مضر حتى إني لم أرى مثال لفتح و غلق القاعدة ولا أعرف ما الفائدة ----------- بالنسبة للأعضاؤ الذين يستخدمون SQLSERVER أو MYSQL لماذا لا يوجد لديهم هده المشاكل في الشبكة يعني ما الفرقي الجوهري بينهم و بين ACCES في التعديل و الحدف ---------- أعتذر أخي elgokr على كثرة الأسئلة لكن كل جواب منك فهو يريني الطريق الصحيح فأشكرك على مساعدتنا والشكر أقل شيئ يا رب يجعله لك في ميزان حسناتك RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - elgokr - 16-05-19 قبل ان اقوم بالاطلاع على المرفق
تعال نتحدث قليلاً لما هو لديك فى الكود من مشكلة
انت الان قمت بعمل الاستعلام لتعبئة الداتا جريد
والى هنا جميل ولا يوجد مشكلة
ولكن المشكلة تقع فى قيمة الكمية فتعال نتخيلها ان الكمية 100
عند عمل الاستعلام عند المستخدم الاول
فاتا الشخص الثاني قام بفتح نفس الشاشة واصبح الكمية لديه 100 ايضاً
طيب تعال نقول ان المستخدم الثاني قام بتحديث الكمية واصبح الكمية لديه بعد التحديث 90
السؤال هنا واللى هو نقطة مهمة جداً جداً جداً تعتقد ان الكمية خاصة الـ 90 من المستخدم الثاني
سمعت عن المستخدم الاول اللى كانت عنده 100 حتى فتح الشاشة
كا قاعدة بيانات ايوة سمعت ولكن على الشاشة
وفى قيمة dttt لا وهى 100 حتى هذه اللحظة
ايه ده يعنى لو المستخدم الاول عمل تحديث الان على الكمية لينقص 20
بدل ما تكون القيمة 70 هتصبح 80
بكل تاكيد لان عند عملية التحديث تتم من خلال DataTable وليس من خلال كود
كالاستعلام لتحديث بقاعدة البيانات
طيب الحل هنا ايه
الحل هو بدلاً من استخدام هذا الجزؤ كما توقعت وشرحت بالاعلى بعد فتح المرفق كود : daaa = New OleDbDataAdapter("select * from TABLE_STOCK_FINAL WHERE Code = '" & dt1.Rows(i).Item("Code") & "' ", cn)ان تجعله كود PHP كود : update query يتم الامر ازاي بناءاً على المرفق
انظر داخل حلقة For فى كود زر الحفظ
وقم بمسح الكود التالى كود : Dim dttt As New DataTableواستبدله بهذا الكود ليكون بدل ما تم مسحه كود : ' Start Update To Databaseوبكدة سيتم حل المشكلة تماماً بامر الله
وسيصبح قاعدة بيانات Access كما لو انها Sql فى التعامل
الان للنقطة الاخيرة إقتباس :بالنسبة للأعضاؤ الذين يستخدمون SQLSERVER أو MYSQL طبعاً يوجد فارق كبير جداً بين Access و Sql
قاعدة بيانات Access
هى للعوامل الفردية الصغيرة ولهذا لم تخصص للتعامل عبر الشبكات
والطريقة لجعلها كذلك هو فى الموضوع لشرحى كيف التعامل مع Access خلال الشبكة
بينما Sql من اى نوع فهو للتعامل مع الاحجام المتوسطة ولاكثر من 5 افراد فاكثر
طبعاً يوجد قواعد بيانات اضخم ولا نحتاج للنقاش عنها هنا
يمكنك الان اختبارا الكود
وابشر بان اصبح الامر معك افضل من الاول
وان تكون الصورة وضحت لديك كاملاً
وعفواً انا كنت قصرت لكونى لم اطلع على المرفق كاملاً
خلاف نقطة كود الحفظ سريعاً بسبب ضيق الوقت فقط
فسامحنى على ذلك
تحياتى لك
وتمنياتى لك التوفيق
RE: رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# - sniperjawadino - 17-05-19 مهما كتبت و شكرت فلن يصلك شكري وامتناني الكلي لك على شرحك ووقتك الذي تمنحه لنا لمساعداتنا شكرا كثيييرا جزاك الله على تعبك _______________________________________________ سنين وأنا أستخدم أكسس لكن ما فسرته لي جعلني أستوعب أخطاء قمت بها لخصت أسئلتي في هذه النقط لأني حسيت أني تقلت عليك فاعذرني أخي فأنا متلهف لأفهم أخطائي في الحقيقة ليست أسئلة فقط أريد أن تأكد لي أن تفكيري صحيح 1/ فهمت جيدا المثال الذي شرحت لي لكن في هذا المثال هل يمكن أن نقول أن هذا الخطأ في الحساب قد يقع في لحضة أقل من ثانية يعني المدة بين جلب الاستعلام و حفض التعديل عن طريق DataTable يعني هل هذا هو مكان الخطأ فقط من باب الفهم أخي أما أنا فبعد شرحك فقد استخدمت الطريقة التي منحتني ______________ 2/ هل الكود الذي منحتني update query هل يمكنني أن أقول أن هذا هو الوضع المتصل ؟ وما كنت أقوم به هو الوضع المنفصل ؟ و الوضع متصل لا يصلح في الشبكة ؟ ______________ 3/ بالنسبة ل If Not cn.State = ConnectionState.Open Then هل فتح القاعدة قبل الاستعلام يلعب دور datatable التي كنت استعملها ؟ لأني لم أقم يوما بفتح القاعدة قبل الاستعلام والكل كان شغال حتى باستعمال update query لكن باستخدام datatable طبعا ______________ 4/ هل هناك ضرر للقاعدة بسبب كثرة الاسعلامات ؟ وبالتالي كثرة فتح القاعدة و غلقها القاعدلة فتح...غلق..فتح...غلق...فتح...غلق..فتح...غلق ______________ 5/ قمت بااطلاع على موضوعك الكبير و الجميل ▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية فقط أريد أن أعرف ما الفرق بين أني أقوم بعمل مشاركة لقاعدة البيانات بصورة مباشرة في الشبكة يعني أعطي كل مستخدم رابط القاعدة التي وضعت في الخادم وبين الطريقة التي قمت أنت بها في الموضوع يعني تقسيم القاعدة .... ما الفرق أو ما الإجابيات ______________ |