اذهب الي المحتوي
أوفيسنا

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

قام بنشر (معدل)

الاصدقاء الاكارم تحية طيبة

في المثال التالي كود لعدم تكرار التاريخ في النموذج الفرعي

في حال التكرار تظهر رسالة و يتم تنفيذ الامر Undo

لكن المشكلة انه بعد التراجع عن الادخال يذهب الاكسس الى السجل التالي

هل من حل لهذه المشكلة ؟؟

قاعدة بيانات1.rar

تم تعديل بواسطه محمد ايمن
قام بنشر
17 ساعات مضت, محمد ايمن said:

الاصدقاء الاكارم تحية طيبة

في المثال التالي كود لعدم تكرار التاريخ في النموذج الفرعي

في حال التكرار تظهر رسالة و يتم تنفيذ الامر Undo

لكن المشكلة انه بعد التراجع عن الادخال يذهب الاكسس الى السجل التالي

هل من حل لهذه المشكلة ؟؟

قاعدة بيانات1.rar

اتفضل جرب كده:fff:

قاعدة بيانات2.rar

  • Like 2
قام بنشر

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

الحل الذي قدمه الأستاذ أبا جودي ممتاز جدا، و لدي محاولة بسيطة رغم أنها أقل من محاولة أستاذي أبا جودي لكن لا بأس بالمحاولة

 

 

قاعدة بيانات1.rar

  • Like 2
قام بنشر
9 ساعات مضت, صالح حمادي said:

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

الحل الذي قدمه الأستاذ أبا جودي ممتاز جدا، و لدي محاولة بسيطة رغم أنها أقل من محاولة أستاذي أبا جودي لكن لا بأس بالمحاولة

 

 

قاعدة بيانات1.rar

هههههههه :clapping::clapping::clapping:

عحبتنى الفكرة حيلة رائعه لو فى اكتر من اعجاب كنت عملت بس للاسف هى اعجاب واحده بس الموجودة :fff:

انا من وجهة نظرى اللى حابب يشتغل وينجح  فى التكويد والبرمجة شخص بيعرف يفكر وبيحاول دايما بتخيل مش شخص عارف البرمجة وخلاص 

  • Like 2
قام بنشر

جرب حذف الكود الزائد التالي

 

Private Sub CustName_AfterUpdate()
Dim StrSql As String
StrSql = "SELECT OrderTbl.CustName, OrderTbl.OrderDate, OrderTbl.OrderID " & vbCrLf & _
"FROM OrderTbl " & vbCrLf & _
"WHERE (((OrderTbl.CustName) In (SELECT [Forms]![MainFrm]![CustName] FROM [OrderTbl] As Tmp GROUP BY [CustName],[OrderDate] HAVING Count(*)>1  And [OrderDate] = [OrderTbl].[OrderDate])) AND ((OrderTbl.OrderDate)=[Forms]![MainFrm]![OrderDate])) " & vbCrLf & _
"ORDER BY OrderTbl.CustName, OrderTbl.OrderDate;"
If StrSql > 1 Then
MsgBox "fdffffffffffff"
End If

End Sub

حيث لايوجد عنصر بهذا الاسم

تحياتي

 

  • Like 1
قام بنشر
9 ساعات مضت, محمد ايمن said:

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

تحية طيبة اصدقائي وشكرا على الحلول هذا هو المطلوب بعينه

استاذي رمهان المشكلة في النموذج الفرعي وليس الاساسي

خيركم سابق استاذنا الحبيب 

لن نستطيع رد جميلكم وحسن صنيعكم معنا جزاكم الله عنا خيرا :fff:

قام بنشر
21 ساعات مضت, محمد ايمن said:

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

تحية طيبة اصدقائي وشكرا على الحلول هذا هو المطلوب بعينه

استاذي رمهان المشكلة في النموذج الفرعي وليس الاساسي

اخي الاستاذ محمد ايمن

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

سارفع الملف عندما اجلس امام الكمبيوتر

تحياتي

  • Like 1
قام بنشر
منذ ساعه, رمهان said:

اخي الاستاذ محمد ايمن

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

سارفع الملف عندما اجلس امام الكمبيوتر

تحياتي

بارك الله فيك استاذي الكريم

قام بنشر (معدل)

السلام عليكم

احبتي 

بعد التمعن قليلا نتج معي التالي :

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

2. كانت هي ليست مشكلة وانما من الطبيعي انه عند الوصول للسجل الاخير بالنموذج الفرعي ثم الضغط على انتر ان يتقل التركيز للرئيسي ومن ثم سجلا جديدا لان الخيارات في الاكسس ومن خيار اعدادات العميل تجد الانتقال للحقل التالي لسلوك مفتاح الادخال . كما يمكن اظهار نافذة tab order لمعرفة تسلسل التاب فالنموذج الفرعي هو احد العناصر للنموذج الرئيسي .

المقترحات :

1. وضع خاصية دورة للنموذج الرئيسي ومن التاب غير ذلك الى = السجل الحالي . فهنا عند الضغط على انتر بعد الرسالة وانت في السجل الاخير لا يذهب للرئيسي وسجل جديد الا اذا كنت محتاج وعمدا انه بالضغط على الانتر باستمرار ان يلف على سجلات الفرعي وعند الاخير يبدا بسجل تالي في الرئيسي وهكذا 

2. الاستاذ اباجودي قام بتغيير موقع الحدث وعلى مستوى النموذج الفرعي وقبل التحديث فلافضل الاستفادة من الباراميتر cancel  وبوضع cancel=true  بديلا للتراجع والغاء الحدث

3. الاستاذ صالح حمادي استخدم الانتقال للسجل الاخير مما اجبر الاكسس عدم الذهاب للنموذج الرئيسي وهنا لو كان التعديل في وسط السجلات سيذهب دائما للاخير مما يجعلك تعيد البحث عن السجل الآنف تعديله وبصعوبة قليلا

اتمنى ان ظهر السبب استاذنا محمد ايمن لعله يبطل العجب ولكم اجمل التحايا

تم تعديل بواسطه رمهان
  • Like 2
قام بنشر
9 ساعات مضت, رمهان said:

السلام عليكم

احبتي 

بعد التمعن قليلا نتج معي التالي :

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

2. كانت هي ليست مشكلة وانما من الطبيعي انه عند الوصول للسجل الاخير بالنموذج الفرعي ثم الضغط على انتر ان يتقل التركيز للرئيسي ومن ثم سجلا جديدا لان الخيارات في الاكسس ومن خيار اعدادات العميل تجد الانتقال للحقل التالي لسلوك مفتاح الادخال . كما يمكن اظهار نافذة tab order لمعرفة تسلسل التاب فالنموذج الفرعي هو احد العناصر للنموذج الرئيسي .

المقترحات :

1. وضع خاصية دورة للنموذج الرئيسي ومن التاب غير ذلك الى = السجل الحالي . فهنا عند الضغط على انتر بعد الرسالة وانت في السجل الاخير لا يذهب للرئيسي وسجل جديد الا اذا كنت محتاج وعمدا انه بالضغط على الانتر باستمرار ان يلف على سجلات الفرعي وعند الاخير يبدا بسجل تالي في الرئيسي وهكذا 

2. الاستاذ اباجودي قام بتغيير موقع الحدث وعلى مستوى النموذج الفرعي وقبل التحديث فلافضل الاستفادة من الباراميتر cancel  وبوضع cancel=true  بديلا للتراجع والغاء الحدث

3. الاستاذ صالح حمادي استخدم الانتقال للسجل الاخير مما اجبر الاكسس عدم الذهاب للنموذج الرئيسي وهنا لو كان التعديل في وسط السجلات سيذهب دائما للاخير مما يجعلك تعيد البحث عن السجل الآنف تعديله وبصعوبة قليلا

اتمنى ان ظهر السبب استاذنا محمد ايمن لعله يبطل العجب ولكم اجمل التحايا

اهلا استاذنا الجليل ومعلمنا القدير 
للمسات الرمهانية دائما طعم غير

انا استفدت حجات مكنتش اعرفها من قبل :signthankspin:


جزاكم الله تعالى خيرا  :fff: استاذنا الحبيب :wub:

  • Like 1
قام بنشر

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

استاذي رمهان تحية طيبة

بعد التمعن في المرفقات و التجارب كانت النتائج الآتية

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

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

الغريب في الموضوع اني جربت التراجع عن الحدث سابقا ولكن دون فائدة !! ولله حكمته في ان يكون الحل على يد اخينا ابا جودي

اما استخدام cancel=true فهو لم يجدي نفعا ابدا !!!!

 

  • Like 1
قام بنشر
13 دقائق مضت, محمد ايمن said:

الغريب في الموضوع اني جربت التراجع عن الحدث سابقا ولكن دون فائدة !! ولله حكمته في ان يكون الحل على يد اخينا ابا جودي

انبه فقط على ان الحدث مختلف . فقد يكون جربت بعد التحديث للعنصر. الاستاذ ابا جودي استخدم حدث ثبل التحديث وللنموذج الفرعي.

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

اما استخدام cancel=true فهو لم يجدي نفعا ابدا !!!!

تنبيه مرة اخرى وتحملني قليلا : الحدث قيل التحديث للنموذج الفرعي 

واسمحلي بالاختصار ليصبح شكل الكود كامل

Private Sub Form_BeforeUpdate(Cancel As Integer)
If DCount("PtNo", "OrderTbl", "[OrderDate]=[Forms]![MainFrm].[OrderSubFrm]![OrderDate] AND [PtNo]=[forms]![mainfrm]![PtID]") > 0 Then Cancel = MsgBox("الاسم مكرر")
End Sub

تحياتي 

قام بنشر (معدل)

تحية طيبة استاذي رمهان

استاذي الكريم انا من يثقل عليك لا انت :wub:

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

Private Sub OrderDate_BeforeUpdate(Cancel As Integer)
Dim Uvar1 As Variant
Uvar1 = DCount("PtNo", "OrderTbl", "[OrderDate]=[Forms]![MainFrm].[OrderSubFrm]![OrderDate] AND [PtNo]=[forms]![mainfrm]![PtID]")
If Uvar1 > 0 Then
MsgBox ("الاسم مكرر")
Me.Undo
End If
End Sub

وكانت تظهر لي رسالة بشكل دائم ( لم يتم العثور على الخاصية )!!!!!!!!!!!!!!!!!!

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

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

تم تعديل بواسطه محمد ايمن
قام بنشر
22 دقائق مضت, رمهان said:

 


Private Sub Form_BeforeUpdate(Cancel As Integer)

تحياتي 

 

9 دقائق مضت, محمد ايمن said:

 


Private Sub OrderDate_BeforeUpdate(Cancel As Integer)

 

الحدث مختلف . الاول على مستوى النموذج اي حدث للنموذج قبل التحديث. والاخير على مستوى العنصر

وتصبح على خير استاذ محمد والصباح رباح

قام بنشر (معدل)

تحية طيبة استاذي الكريم

اعود اليكم مع النتائج

عند استخدام (قبل التحديث) مع الحقل و استخدام خاصية cancel كانت تظهر رسالة لم يتم العثور على الخاصية

عند استخدام (قبل التحديث) مع النموذج واستخدام خاصية cancel تظهر رسالة ان الاسم مكرر و لكن لا يحدث شيئ !!

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

تم تعديل بواسطه محمد ايمن
قام بنشر
9 ساعات مضت, محمد ايمن said:

تحية طيبة استاذي الكريم

اعود اليكم مع النتائج

عند استخدام (قبل التحديث) مع الحقل و استخدام خاصية cancel كانت تظهر رسالة لم يتم العثور على الخاصية

عند استخدام (قبل التحديث) مع النموذج واستخدام خاصية cancel تظهر رسالة ان الاسم مكرر و لكن لا يحدث شيئ !!

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

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

اسعد الله اوقاتكم بكل خير

 

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

ومن بحثي بالنت وجدت هذا الكود

اتركك مع المثال

واتمنى يكون هذا الي انت حب تعمله

قاعدة بيانات1.rar

طبعا اول تحط بالجدول الحقل الي انت حاب تمنع عنه التكرار سواء كان الحقل رقمي او نصي

 

الكود بيغير الرساله الاساسيه تبعت النظام

ويتيح للمستخدم ان يضيف الرساله الي مو حاب يكتبها

 

 

انا اضفت undo

عشان يحذف المكرر

 

الرابط

 

https://technet.microsoft.com/nl-nl/library/ff836345

قام بنشر
15 ساعات مضت, رمهان said:

3. الاستاذ صالح حمادي استخدم الانتقال للسجل الاخير مما اجبر الاكسس عدم الذهاب للنموذج الرئيسي وهنا لو كان التعديل في وسط السجلات سيذهب دائما للاخير مما يجعلك تعيد البحث عن السجل الآنف تعديله وبصعوبة قليلا

12 ساعات مضت, محمد ايمن said:

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

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

شكرا جزيلا أساتذتي الكرام على هذه الملاحظة، لكن يمكن تجاوز هذه المشكلة بتعويض الجزء التالي من الكود:

DoCmd.GoToRecord , , acLast

بهذا الجزء:

DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acNext

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

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

موفقون بإذن الله

قاعدة بيانات1.rar

قام بنشر

وعليكم السلام اخي صالح

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

 

تحياتي

  • Like 1
قام بنشر

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

لقد قمت بتغيير طفيف يمكنني من إصطياد الخطأ الذي ذكرته و البقاء في نفس السجل الذي أقوم بالتعديل عليه.

If CurrentRecord = 1 Then
DoCmd.GoToRecord , , acNext
DoCmd.GoToRecord , , acPrevious
Else
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acNext
End If

 

 

قاعدة بيانات1.rar

قام بنشر
في 11/21/2016 at 23:54, صالح حمادي said:

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

لقد قمت بتغيير طفيف يمكنني من إصطياد الخطأ الذي ذكرته و البقاء في نفس السجل الذي أقوم بالتعديل عليه.


If CurrentRecord = 1 Then
DoCmd.GoToRecord , , acNext
DoCmd.GoToRecord , , acPrevious
Else
DoCmd.GoToRecord , , acPrevious
DoCmd.GoToRecord , , acNext
End If

 

 

قاعدة بيانات1.rar

اعتذر على التاخر اخي وعزيزي الاستاذ صالح

بهذا نعم تم التغلب تماما 

تقبل تحياتي

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