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

رسالة خطأ تلاحقني دائما

بدأه king_baghdad في 28 يوليو 2008 · 9 رد · 906 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

الرجاء هذا الخطأ دائماً يظهر ولم افهم كيف علاجه ومن أين المشكلة هل لكم مساعدتي خصوصاً على ما اعتقد إن هذا الخطأ شائع بين الجميع

post-85619-1217246027_thumb.jpg

#2

وعليكم السلام

بالفعل هو خطأ شائع

وهو يظهر عند الحفظ Post وعلى ما أذكر انه يظهر عندما تقوم بإعادة تعيين قيم بعض الحقول برمجيا من كويري آخر غير الكويري او الجدول الذي تظهر رسالة الخطأ عند محاولة حفظه.

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

تحياتي.

#3

شكرا على الاجابة ولكن هل من علاج لهذا الخطأ

#4

Row Cannot be located for updating. Some values may have been changed since it was last read.

رسالة مزعجة فعلاً و قد واجهتها سابقا,المشكلة من ADO اي من مايكروسوفت وليس لدلفي علاقة بها لا من قريب ولا بعيد, و سببها هو عدم تطابق القيم التي في Database مع القيم التي في الDataset اي (AdoTable أو AdoQuery).

لماذا تحصل المشكلة؟!

عندما تريد ال Dataset نقل التعديل إلى ال Database فلا تستطيع إيجاد الصف الذي تقوم بتعديله و ذلك لعدم تطابقه مع القيم التي في قاعدة البيانات.

اسباب تغير القيم هي:

1- كما قال TopSec, وجود قيم افتراضية في قاعدة البيانات.

2- استخدام Triggers أو قوادح تقوم بتعديل القيم في قاعدة البيانات.

لحل المشكلة:

1- نتأكد من وجود Primary key اي مفتاح اساسي للجدول, إذا لم يكن نقوم بوضع له مفتاح اساسي. هذه سوف تحل مشكلة وجود قيم افتراضية ولم تواجهني المشكلة بعد ذلك ولكنها لم تحل مشكلة ال Triggers نهائيا.

2- إذا لم تفلح قصة وضع مفتاح اساسي للجدول, نقوم بإزالة أو تعطيل ال Triggers و نقوم بالتجربة إذا كانت المشكلة من ال Triggers. عندها يجب اتباع طريقة اخرى غير ال Dataset للتعامل مع البيانات كاستخدام اوامر SQL بشكل مباشر, أو عليك تعطيل ال Trigger.

ملاحظة: هناك أكواد نقوم بإضافتها على Dataset لكي تعدل طريقة التعديل قد تجدها في الانترنت قمت بتجربتها و لم تفيد نهائيا.

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#5

الرسالة تظهر من ADO لكن ليس معناه أن المشكلة منها فهذه تسمى مشاكل الـ Concurrency Violation وهي خاصه بالداتا بيس بغض النظر عن الـ Provider ويوجد موضوع حولها

/index.ph...t=0&start=0

#6
hazzoom كتب:
الرسالة تظهر من ADO لكن ليس معناه أن المشكلة منها فهذه تسمى مشاكل الـ Concurrency Violation وهي خاصه بالداتا بيس بغض النظر عن الـ Provider ويوجد موضوع حولها

/index.ph...t=0&start=0

أخي العزيز حازم,

المشكلة من Ado وليس لها علاقة بأي شيئ أخر, لأنّ المشكلة تحدث لمستخدم واحد فقط يستخدم البيانات ولا يوجد غيره نهائيا, و السبب هو Default Values أو ال Triggers. فلم يتم معالجتها من قبل Ado, و ذلك بسبب أنّ تعديل السجل لا يعتمد على المفتاح الاساسي و إنما على جميع قيم الحقول المتوفرة.

و في حال تعديل مستخدم أخر يعالج DBMS ذلك بالمناقلات Transactions, و التحكم المتزامن Concurrency Control و الامر يختلف من DBMS لأخر في معالجته لمثل هذه المواضيع.

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#7

أخي وائل.. هل تقصد أنها ADO Bug الموجوده بدلفي؟؟

ان كانت كذلك فالبطبع أنت أدرى مني فأنا لا أستخدم دلفي.

تم تعديل هذه المشاركة بواسطة hazzoom في 28 يوليو 2008 في 19:22

#8
اقتباس
أخي وائل.. هل تقصد أنها ADO Bug الموجوده بدلفي؟؟

ان كانت كذلك فالبطبع أنت أدرى مني فأنا لا أستخدم دلفي.

نعم اخي حازم فهي كذلك, و على ما اظن تم معالجة هذه المشكلة في ADO dot net.

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#9

ممكن تضع لنا صورة لرسالة الخطء................

____________________________________

حاليا انا موجود بالمنتدى يمكنني الجابة عنها

#10

ياخي البرنامج الذي كنت تبرمج به ان كانت به قاعدة بينات فاعرف بانه تغير اتجاهه ويلزمك اعادنت انشاء alias

جديد

----------------

اما اذكنت تبرمج دون قاعدة بينات يعني ان برنامج فقد معلومات ناتجة عن عدم حفض البرنامج جيدا او انك غيرت فيه دون شعور

----------------

حياك الله وارجو ان اكون وفقت والسلام

--------------

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