اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

أواجه مشكلة تعارض في الكتابة رغم عدم وجود أي سبب لها


إذهب إلى أفضل إجابة Solved by أبو عبدالله الحلوانى,

الردود الموصى بها

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

أولا وصف الوضع:

أعمل علي تطوير البرنامج الحالي الذي نعمل عليه لربطه بقاعدة بيانات SQL server - وأنا الآن أجرب علي سرفر المنزل وهو غير متصل بأي جهاز آخر حتي الآن 

الفورم الذي أجرب عليه تعديل بيانات فورم مستمر متصل بجدول علي السرفر الوهمي الذي أعمل عليه

التجربة كانت عبارة عن رقم يتم تعديله من خلال الضغط علي الزر 

ثانيا المشكلة:

تظهر رسالة تعارض بالكتابة - ولا أدري ما السبب رغم ان الكتابة كانت من فورم واحد وليست أكثر من فورم - وكذلك لا يوجد مستخدمين سواي الآن يستخدمون قاعدة البيانات

ماسبب هذه المشكلة ؟؟!!!

ملاحظة:

قد وجدت هذا الكلام لاستاذنا أبو عمر في هذا الموضوع 

معلومة 1 : عند تحرير بيانات في جدول قاعدة بيانات SQL مرتبط بواسطة استخدام ODBC ، لا تؤمن قاعدة البيانات اكسيس السجلات، ولكن، تتحكم  قاعدة بيانات SQL في التأمين .

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

وبما أنني حديث عهد بالتعامل مع الـ SQL server لم أفهم جيدا هذا الكلام وكذلك لا أعرف كيف يمكنني تغير اعدادات ال SQL server لأتمكن من تجاوز هذه المشكلة - 

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

أفيدونا أفادكم الله  وجزاكم الله عنا خيرا

مشكلة تعارض الكتابة 1.png

مشكلة تعارض الكتابة 2.png

رابط هذا التعليق
شارك

15 دقائق مضت, ناقل said:

استخدم هذا الكود قبل تشغيل الاستعلام

شكرا علي اهتمامكم 

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

http://support.microsoft.com/kb/304181/ar

ولكن لم يفلح معي أي من هذه الاقتراحات.

يبدو أن المشكلة كما أظن بالنموذج المستمر ربما، وبانتظار رأي أساتذتني  

رابط هذا التعليق
شارك

السلام عليكم 🙂

 

 

رسالة Write Conflict:

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

 

والرابط التالي فيه كود ، ولكن تابع الكود وسترى اني كنت محتاج اجدد/احدّث معلومات النموذج ، ولكن صادفتني هذه الرساله ، فاضطررت ان استعمل كود وطريقة ثانية لحل الموضوع:

http://www.officena.net/ib/topic/65548-المساعدة-في-جمع-الدقائق-حسب-الشهر-للموظف/#comment-426706

 

جعفر

  • Thanks 1
رابط هذا التعليق
شارك

4 دقائق مضت, jjafferr said:

الرسالة هذه معناها ، انه في النموذج في أكثر من جهة تدخل البيانات منذ فتحه ، والبرنامج محتار

جزاكم الله عنا خيرا 

ولكن كما أسلفت سابقا أن النموذج واحد والزر الذي يتم من خلاله تعديل القيمة موجود علي نفس النموذج والكود المستخدم خلف الزر هو كود بسيط بهذا الشكل 

Me.EnzarKbl = Val(Nz(Me.EnzarKbl, 0)) + 1

فاعتقدت أنه لا يوجد جهات متعددة تعدل البيانات علي حسب ظني 

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

سأطلع علي الموضوع الذي أشرتم اليه وأوافيكم بالنتائج ان شاء الله

رابط هذا التعليق
شارك

2 دقائق مضت, أبو عبدالله الحلوانى said:

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

هل استعلام ثم تستعمل Recordset يستعمل الاستعلام ؟

 

اذا كان هناك كود / طريقة معينة دائما تحصل بها على الخطأ ، فجرب هذا الكود وشوف اذا تحصل به على خطأ :

Me.EnzarKbl = Me.EnzarKbl

 

جعفر

 

  • Thanks 1
رابط هذا التعليق
شارك

4 دقائق مضت, jjafferr said:

هل استعلام ثم تستعمل Recordset يستعمل الاستعلام ؟

لا Recordset تستعمل الاستعلام ولكن يوجد Recordset داخل الزر تستعمل جدول آخر مختلف تماما عن مصدر بيانات النموذج ولا حتي مرتبط به

8 دقائق مضت, jjafferr said:

فجرب هذا الكود وشوف اذا تحصل به على خطأ

نعم نفس المشكلة

رابط هذا التعليق
شارك

جرب التالي ، كل خطوة مستقلة عن الاخرى ، اعمل كل واحدة بطريقة مستقلة ، ثم مافي مانع تجمعهم مع يعض :

 

1. اوقف الـ Recordset وشوف اذا تأتيك الرسالة ،

 

2. بعد ان تعمل تحديث او تغيير في الـ Recordset ، مباشرة الخطوة التالية احفظ السجل : DoCmd.RunCommand acCmdSaveRecord ،

 

3. بعد ان تعمل العملية الحسابية ، مباشرة الخطوة التالية احفظ السجل : DoCmd.RunCommand acCmdSaveRecord

 

جعفر

  • Thanks 1
رابط هذا التعليق
شارك

44 دقائق مضت, jjafferr said:

1. اوقف الـ Recordset وشوف اذا تأتيك الرسالة ،

نعم المشكلة كما هي والخطأ يظهر علي سطر كود العملية الحسابية

44 دقائق مضت, jjafferr said:

3. بعد ان تعمل العملية الحسابية ، مباشرة الخطوة التالية احفظ السجل : DoCmd.RunCommand acCmdSaveRecord

تظهر رسالة تعارض الكتابة

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

آسف علي تعب حضرتك كنت أريد رفع مرفق ولكن الظاهر أني محتاج أرفع الجهاز كله 😀 🤔

تم تعديل بواسطه أبو عبدالله الحلوانى
رابط هذا التعليق
شارك

مشاركة مع الاساتذة الكبار 

لا تستهين بان طالب مبتدأ مثلى دخل وعنده الحل ارجو من حضراتكم التركيز فيما اقول لعل وعسى يضغ سره فى اضعف حلقه

لقد انحنى ظهرى من الجلوس امام هذه المشكلة والدخول على المواقع الاجنبية 

مشكلة تعارض الكتابة تأتى عندما يكون هناك نموذج فرعى مصدره استعلام فاكسس يعتبر الاستعلام مفتوح وعند التعديل عليه يعتبر مستخدم اخر دخل 

والحل

عند الضغط على الزر الموجود لديكم لتعديل حقل الرقم قم بالتالى :

اجعل مصدر النموذج الفرعى  فارغ  غير الاستعلام المرغوب فيه باستخدام الكود التالى

اسم النموذج الفرعى.RecordSource=""

ثم السطر الذى يلى هذا الكود مباشرا اجعل مصدر النموذج الاستعلام المرغوب فيه

me.RecordSource="query"

وطالما ان قاعدة البيانات متصلة بـ sql فلا فائدة بان تجعل تأمين السجل : سجل محرر  ولكن افعلها لعل وعسى

جزاكم الله خيرا
 

  • Like 1
رابط هذا التعليق
شارك

10 دقائق مضت, حلبي said:

لا تستهين بان طالب مبتدأ مثلى دخل وعنده الحل ارجو من حضراتكم التركيز فيما اقول لعل وعسى يضغ سره فى اضعف حلقه

لقد انحنى ظهرى من الجلوس امام هذه المشكلة والدخول على المواقع الاجنبية 

ياهلا ويا مرحبا بأخي وأستاذي وجعل الله أجر ما سطرتم وما تعبتم في موازين حسناتكم 

ومن باب الاعتراف بالحق أني أنا هنا طالب العلم بساحة أساتذتي الكرام الأفاضل 

وبعد أخي 

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

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

وجزاكم الله عنا خيرا أتعبتاكم كثيرا معي.

رابط هذا التعليق
شارك

واياكم ان شاء الله 

احسنت القول والتعبير فلا يكون بعيدا عن استاذ فاضل مثل حضرتك

كل الاحترام والتقدير

  • Thanks 1
رابط هذا التعليق
شارك

  • أفضل إجابة

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

الحمد لله وحده تم حل المشكلة 

وجدت هذا الكلام 

2 Missing primary key or timestamp

Make sure the SQL-Server table has a primary key as well as a timestamp column.

The timestamp column helps Access to determine if the record has been edited since it was last selected. Access does this by inspecting all fields, if no timestamp is available. Maybe this does not work well with null entries if there is no timestamp column (see 3 Null bits issue).

The timestamp actually stores a row version number and not a time.

Don't forget to refresh the table link in access after adding a timestamp column, otherwise Access won't see it. (Note: Microsoft's Upsizing Wizard creates timestamp columns when converting Access tables to SQL-Server tables.)

في هذا الرابط

https://stackoverflow.com/questions/13993301/editing-record-issues-in-access-sql-write-conflict

وخلاصة الموضوع أنه كان يجب وضع عمود يسمي الطابع الزمني بالجدول الموجود بالسرفر 

يبدو أن التحول الي الـ SQL server ليس بالأمر السهل كما كنت أتوقع - ربنا يستر علي اللي جاي 😀 🙃 -

وأشكر جميع أساتذتي الأفاضل وجزاكم الله عني خيرا

  • Like 1
  • Haha 1
رابط هذا التعليق
شارك

استاذى الفاضل / @أبو عبدالله الحلوانى

هذا الحل هو نفس الحل الذى ذكرته لحضرتك اعلاه ـ ارجو النظر الى الفقرة التالية من الرابط الذى وضعته حضرتك لانى قدر مررت عليه سابقا واخذت الحل منه كما فعلت حضرتك وقد ترجمته بترجمه جوجل وهو كالتالى:

 Subroutine حيث أسمي تحديث الجدول المباشر. قبل استدعاء التحديث ، قمت بتعيين متغير السلسلة هذا على قيمة مصدر السجلات خلف النموذج المرتبط ، وبالتالي التقاط عبارة SQL الدقيقة المستخدمة في ذلك الوقت. بعد ذلك ، قمت بتعيين Recordsource للنموذج على سلسلة فارغة ("") لفصله عن البيانات. بعد ذلك ، أقوم بتحديث البيانات. بعد ذلك ، قمت بتعيين مصدر السجلات للنموذج مرة أخرى على القيمة المحفوظة في متغير السلسلة ، مع إعادة إنشاء الربط والسماح له بالتقاط القيمة (القيم) الجديدة في الجدول. إذا كان هناك نموذج فرعي واحد أو أكثر متضمن في هذا النموذج ، فيجب عندئذٍ معالجة حقول "الارتباط" بطريقة مماثلة لمصدر السجلات. عند تعيين Recordsource إلى سلسلة فارغة ، قد ترى #Name في الحقول غير المنضمة الآن. ما أفعله هو ببساطة تعيين الخاصية المرئية إلى خطأ على أعلى مستوى ممكن (قسم التفاصيل ، النموذج الفرعي ، إلخ) أثناء الوقت الذي يكون فيه مصدر التسجيل فارغًا ،

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

اما عملية : الطابع الزمنى ليس الا التعارض وقت تسجيل المستخدمين فى وقت واحد

على كلا الحمد لله لما توصلت اليه واشكرك جزيلا لانك وضعت هذا الرابط لانى بحثت عليه ولم اجده مرة ثانية

كل الاحترام والتقدير

تم تعديل بواسطه الحلبي
  • Thanks 1
رابط هذا التعليق
شارك

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

 

الحمدلله انك حصلت على الجواب الشافي 🙂

 

4 ساعات مضت, أبو عبدالله الحلوانى said:

الحمد لله وحده تم حل المشكلة 

وجدت هذا الكلام 

2 Missing primary key or timestamp

 

هذا اللي دائما اذكره :

اقتباس

كل جدول يجب ان يحتوي على رقم تلقائي (وتاريخ تلقائي ، حيث نضع القيمة الافتراضية = ()Now ) ، مفهرس ، ومفتاح اساس ،

الرقم التلقائي لإستعمال البرنامج ، وليس لإستعمال المبرمج ،

اقتباس

وانا دائما يكون عندي حقلين في جميع الجداول اللي اعملها:

Auto_ID : ترقيم تلقائي ،

Auto_Date : نوع تاريخ ، ونضع القيمة الافتراضية التالية في الجدول: Now

 

جعفر

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

  • 1 month later...
9 ساعات مضت, AliAli47 said:

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

من فضلك حدد أين تحدث المشكلة ومتي وكيف؟!!  يعني:

1- الجدول الذي تحدث به المشكلة هل جدول يتم استخدامة في وقت واحد من عدة مستخدمين سضيفون نفس الحقول؟

2-هل الواجهة المستخدمة للادخال فورم أكسس؟

3-هل حدثت المشكلة عند ادخال مستخدمين مختلفين للبيانات من جهازين مختلفين؟

4- كيف يتم الاتصال بالسرفر - هل بمستخدم وكلمة سر؟

5- هل لهذا المستخدم صلاحيات القراءة والكتابة علي كافة حقول الجدول المحدد الذي تحدث به المشكلة؟

أولا- جرب هذا الحل في شاشة عرض التصميم للفوم الأكسس 

ووافنا بالنتائج - وفي انتظار الرد علي الاستفسارات أعلاه

 

123.png

رابط هذا التعليق
شارك

1 minute ago, أبو عبدالله الحلوانى said:

من فضلك حدد أين تحدث المشكلة ومتي وكيف؟!!  يعني:

1- الجدول الذي تحدث به المشكلة هل جدول يتم استخدامة في وقت واحد من عدة مستخدمين سضيفون نفس الحقول؟

2-هل الواجهة المستخدمة للادخال فورم أكسس؟

3-هل حدثت المشكلة عند ادخال مستخدمين مختلفين للبيانات من جهازين مختلفين؟

4- كيف يتم الاتصال بالسرفر - هل بمستخدم وكلمة سر؟

5- هل لهذا المستخدم صلاحيات القراءة والكتابة علي كافة حقول الجدول المحدد الذي تحدث به المشكلة؟

أولا- جرب هذا الحل في شاشة عرض التصميم للفوم الأكسس 

ووافنا بالنتائج - وفي انتظار الرد علي الاستفسارات أعلاه

 

123.png

تم حل المشكلة 

المشكلة كانت في عمود timestamp 

تغير الداتا تايب واصبج varbinary 

  • Thanks 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information