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

سؤال : التراجع عن الادخال دون الانتقال الى السجل التالي او الحقل التالي


محمد ايمن

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

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

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

في حال التكرار تظهر رسالة و يتم تنفيذ الامر 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