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

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

قام بنشر

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

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

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

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

وشكرا لكم

 

ادخال بيانات البطاقه المدنية.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
قام بنشر
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

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