Jump to content
أوفيسنا

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


Go to solution Solved by أبو عبدالله الحلوانى,

Recommended Posts

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

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

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

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

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

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

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

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

ملاحظة:

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

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

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

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

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

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

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

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

Link to post
Share on other sites
15 دقائق مضت, ناقل said:

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

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

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

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

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

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

Link to post
Share on other sites

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

 

 

رسالة Write Conflict:

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

 

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

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

 

جعفر

  • Thanks 1
Link to post
Share on other sites
4 دقائق مضت, jjafferr said:

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

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

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

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

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

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

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

Link to post
Share on other sites
2 دقائق مضت, أبو عبدالله الحلوانى said:

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

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

 

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

Me.EnzarKbl = Me.EnzarKbl

 

جعفر

 

  • Thanks 1
Link to post
Share on other sites
4 دقائق مضت, jjafferr said:

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

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

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

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

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

Link to post
Share on other sites

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

 

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

 

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

 

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

 

جعفر

  • Thanks 1
Link to post
Share on other sites
44 دقائق مضت, jjafferr said:

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

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

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

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

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

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

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

Edited by أبو عبدالله الحلوانى
Link to post
Share on other sites

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

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

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

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

والحل

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

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

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

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

me.RecordSource="query"

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

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

  • Like 1
Link to post
Share on other sites
10 دقائق مضت, حلبي said:

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

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

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

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

وبعد أخي 

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

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

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

Link to post
Share on other sites

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

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

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

  • Thanks 1
Link to post
Share on other sites
  • Solution

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

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

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

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
Link to post
Share on other sites

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

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

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

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

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

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

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

Edited by حلبي
Link to post
Share on other sites

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

 

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

 

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

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

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

2 Missing primary key or timestamp

 

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

اقتباس

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

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

اقتباس

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

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

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

 

جعفر

  • Like 1
Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   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.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...