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

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


إذهب إلى أفضل إجابة Solved by jjafferr,

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

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

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

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

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

وشكرا لكم

 

ادخال بيانات البطاقه المدنية.accdb

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

2 دقائق مضت, حسين العربى said:

استاذي الفاضل 

حضرتك الظاهر مافهمت السؤال صح 

وماهو الصح اخى حسين

الحالى ده اللى ظاهر امامك ام ماذا ؟

وضح لنا حتى نقدر على مساعدتك باذن الله من قبل اخوانك واساتذتنا

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

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

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

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

 

عندك رقم الخطأ ، صح ؟

اذا ما عندك :

على حدث "on Error" للنموذج (وليس للحقل) ، اكتب

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    MsgBox DataErr
End Sub

.

وبعد ان تصطاد رقم الخطأ (مثلا 1111) ، استعمل كود اخوي احمد لحذف السجل :

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    If DataErr = 1111 Then
        Response = acDataErrContinue    'قد لا تحتاج الى هذا السطر
        DoCmd.RunCommand acCmdDeleteRecord
    End If
    
End Sub

.

جعفر

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

استاذي الفاضل jjafferr شكرا لك علي المساعده

ليس عندي رقم خطا

حضرتك مثلا افتح النموذج وفي حقل التاريخ ضع نص

سوف تظهر لك رساله 

مثل الصوره

Untitled.png.82e17cbd614b2c85a4724ad556c07206.pngUntitled.png.82e17cbd614b2c85a4724ad556c07206.png

 

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

11 دقائق مضت, أحمد الفلاحجى said:

فى فالنموذج حدث عند الخطأ ضعه فيه وجربه

طبعا قصدك مع رقم الخطأ ، وإلا ، وبحدوث اي رسالة خطأ ، سيتم حذف الاخضر واليابس 🙂

 

اخي حسين ،

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

image.png.851f0071faecb763595a264e30a4376f.png

 

جعفر

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

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

طبعا قصدك مع رقم الخطأ ، وإلا ، وبحدوث اي رسالة خطأ ، سيتم حذف الاخضر واليابس 🙂

اخي حسين ،

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

image.png.851f0071faecb763595a264e30a4376f.png

جعفر

طبعا كنت اقصد بدون الخطأ 😀

ولكن حت مع قصدى هذا فلم يتم تنفيذ الكود

ولم يتم التنفيذ ايضا بعد اصطياد رقم الخطأ

اممممممممممم

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

3 ساعات مضت, حسين العربى said:

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

 

في هذه الحالة ، السجل لم يتم حفظه بعد ، فلا يمكنك حذفه ، وانما يمكنك إلغاءه 🙂

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    If DataErr = 2113 Then
        Response = acDataErrContinue    'قد لا تحتاج الى هذا السطر
        me.undo
    End If
    
End Sub

 

او تحذف بيانات النموذج :

me.text1=""

me.text2=""

 

 

ومن الصورة الاخيرة اللي ارفقتها ، انت لم تنسخ الكود بالكامل ، نسيت اهم سطر :

اقتباس

If DataErr = 1111 Then
        

 

جعفر

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

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

في هذه الحالة ، السجل لم يتم حفظه بعد ، فلا يمكنك حذفه ، وانما يمكنك إلغاءه 🙂

صحيح جزاك الله خيرا معلمنا العزيز جعفر :fff:

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

تمام استاذي الفاضل  jjafferr هذا هو المطلوب  بس لي طلب اخير بعد اذنك 

طيب لو في رسالة خطا تانيه عاوز اضيفها 

 

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

4 دقائق مضت, حسين العربى said:

1. هذا هو المطلوب  بس لي طلب اخير بعد اذنك 

2. طيب لو في رسالة خطا تانيه عاوز اضيفها 

 

1. هل جربت الكود ، وتم عمل اللازم ؟

2. تصطاد رقم الخطأ ، ثم تضيف الكود برقم الخطأ 🙂

 

 

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

على حسب تجربتي مع سكانر MRZ :

 

 

فطريقة قراءة البطاقة ، سطر بسطر ، ولذلك ، ولما يصل الى السطر الاخير ، تستطيع:

1. ان تحفظ السجل تلقائيا ، وتنقل التركيز للسطر الاول (انظر رقم2) ،

2. تجعل التركيز يذهب للسطر الاول (وتكون القيمة فيه مظلله) ، بحيث اذا اراد ان يُدخل بطاقة ثانية ، فلا يحصل على خطأ 🙂

 

جعفر

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

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

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

اخى ومعلمى العزيز @jjafferr

هل يمكن الاعتماد على الكود التالى ؟

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim x As Integer
x = DataErr
    If x > 0 Then
'        Response = acDataErrContinue    'ÞÏ áÇ ÊÍÊÇÌ Çáì åÐÇ ÇáÓØÑ
       Me.Undo
    End If
    
End Sub

 

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

  • أفضل إجابة
9 ساعات مضت, حسين العربى said:

بس عاوز اضيف فية 1. رسالة تنبيه بعد الحذف مثلا اقول فيها ادخل البطاقه مره اخري 2. وينقل التركيز الي حقل رقم البطاقة

تفضل

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    If DataErr = 2113 Then
        Response = acDataErrContinue    
        me.undo

        msgbox "ادخل البطاقة مرة اخرى"
        me.ID.setfocus

    End If
    
End Sub

.

ولكني لازلت اقول بأنه ممكن فيه طريقة افضل من هذه ، تلك التي يتسلسل فيها دخول البيانات من البطاقة !!

لأنك بهذه الطريقة تضطر تصيد الاخطاء واحدة خلف الاخرى وووو ،

بينما مثلا :

لما تُدخل البطاقة في الجهاز ، يجب ان يكون التركيز على حقل رقم البطاقة ، وآخر حقل يتم ادخاله هو تاريخ الانتهاء ، ومنها ينتقل التركيز للحقل التالي ،

هنا ، وعلى حدث "بعد التحديث" للحقل تاريخ الانتهاء ، يمكنك ان تظهر رسالة: هل تريد حفظ البيانات ، نعم ، لا :

Dim Msg, Style, Title, Response
Msg = "هل تريد حفظ البيانات ?" & vbcrlf & _
      "نعم: احفظ البيانات" & vbcrlf & _
      "لا : لا تحفظ البيانات"
Style = vbYesNo + vbCritical + vbDefaultButton1    ' Define buttons.
Title = "تم ادخال البيانات، ولكنها لم تُحفظ بعد"    ' Define title.

        ' context. 
        ' Display message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then    ' User chose Yes.
    docmd.runcommand accmdsaverecord    ' احفظ السجل
    me.id.setfocus                      'وانتقل الى حقل ID مرة اخرى استعدادا لإدخال بيانات بطاقة جديدة
Else    ' User chose No.
    me.undo    ' Perform some action.
    me.id.setfocus                      'وانتقل الى حقل ID مرة اخرى استعدادا لإدخال بيانات بطاقة جديدة
End If
 

.

الميزة في ظهور الرسالة هو ، انه لا يسمح لك عمل اي شيء آخر في السجل ، إلا بعد ان تستجيب للرسالة ، مما يسهل عليك ولا تحتاج الى بقية الكود ولا ولا 🙂

 

 

 

10 ساعات مضت, أحمد الفلاحجى said:

هل يمكن الاعتماد على الكود التالى ؟

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim x As Integer
x = DataErr
    If x > 0 Then
'        Response = acDataErrContinue    'ÞÏ áÇ ÊÍÊÇÌ Çáì åÐÇ ÇáÓØÑ
       Me.Undo
    End If
    
End Sub



هو بمثابة هذا الكود لأن تقريبا جميع الاخطاء ارقامها موجبه
Private Sub Form_Error(DataErr As Integer, Response As Integer)

       Response = acDataErrContinue 
       Me.Undo
    
End Sub

 

جعفر

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

من فضلك سجل دخول لتتمكن من التعليق

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



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

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

Important Information