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

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

قام بنشر

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

في النموذج وضعت أزرار للجدول الفرعي للنموذج الرئيسي

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

فما هو الحل لتعديل هذا الأمر

كود السهم للخلف

Private Sub Command42_Click()

Forms!Violations_Form_Share!Violations_Table_subform.SetFocus

DoCmd.GoToRecord , , acPrevious

End Sub

كود السهم للأمام

Private Sub Command41_Click()

Forms!Violations_Form_Share!Violations_Table_subform.SetFocus

DoCmd.GoToRecord , , acNext

End Sub

وتقريباً نفس المشكلة في التقرير حيث يحتوي على صور ... في حال وجود سجلات يعمل بشكل ممتاز .. ولكن في حال عدم وجود سجلات وعمل بحث أو معاينة يكون الخطأ في الكود ... فإذا كان بالإمكان وجود حل لذلك

 

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

Me![ImageFrame1].Picture = Me![Picture1]

Me![ImageFrame2].Picture = Me![Picture2]

Me![ImageFrame3].Picture = Me![Picture3]

Me![ImageFrame4].Picture = Me![Picture4]

End Sub

ولكم مني خالص الشكر والإحترام

 

 

قام بنشر

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

 

تفضل:

Private Sub Command42_Click()
on error goto err_Command42_Click

Forms!Violations_Form_Share!Violations_Table_subform.SetFocus

DoCmd.GoToRecord , , acPrevious

Exit_Command42_Click:
exit sub
err_Command42_Click:

	msgbox "عفوا هذا اول سجل"
	resume Exit_Command42_Click
End Sub


كود السهم للأمام

Private Sub Command41_Click()
on error goto err_Command41_Click

Forms!Violations_Form_Share!Violations_Table_subform.SetFocus

DoCmd.GoToRecord , , acNext

Exit_Command41_Click:
exit sub
err_Command41_Click:

	msgbox "عفوا هذا اخر سجل"
	resume Exit_Command41_Click
End Sub


وتقريباً نفس المشكلة في التقرير حيث يحتوي على صور ... في حال وجود سجلات يعمل بشكل ممتاز .. ولكن في حال عدم وجود سجلات وعمل بحث أو معاينة يكون الخطأ في الكود ... فإذا كان بالإمكان وجود حل لذلك

 

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
on error goto err_Detail_Format

Me![ImageFrame1].Picture = Me![Picture1]

Me![ImageFrame2].Picture = Me![Picture2]

Me![ImageFrame3].Picture = Me![Picture3]

Me![ImageFrame4].Picture = Me![Picture4]


Exit_Detail_Format:
exit sub
err_Detail_Format:

	if err.number=2220 then
		resume next
	else
		msgbox err.number & vbcrlf & err.description
	endif

End Sub

 

جعفر

  • Like 2
قام بنشر

يمكنك استخدام هذا قبل الكود اذا كان الكود كما تقول

On Error Resume Next
Me![ImageFrame1].Picture = Me![Picture1]
Me![ImageFrame2].Picture = Me![Picture2]
Me![ImageFrame3].Picture = Me![Picture3]
Me![ImageFrame4].Picture = Me![Picture4]

End Sub

 

  • Like 1
قام بنشر
9 دقائق مضت, ابو ياسين المشولي said:

يمكنك استخدام هذا قبل الكود

 

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

وطبعا احنا نعرف ان حدث "الحالي" من اهم الاحداث ، والكثير من الاكواد تكون فيه ، فما بيعرف شو الاخطاء الاخرى في الحدث هذا !!

 

نعم ، ممكن نخليه على اوامر الزر الاخرى اللي طلبها السائل 🙂

 

جعفر

  • Like 1
قام بنشر
الان, jjafferr said:

 

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

وطبعا احنا نعرف ان حدث "الحالي" من اهم الاحداث ، والكثير من الاكواد تكون فيه ، فما بيعرف شو الاخطاء الاخرى في الحدث هذا !!

 

نعم ، ممكن نخليه على اوامر الزر الاخرى اللي طلبها السائل 🙂

 

جعفر

نعم اخي جعفر

بس انا قلت مادتم انه متاكد من الكود انه سليم فقط اعطيته كود تخطي الاخطاء

ما كنت عارف انه يريد تفاصيل بالاخطاء والى اخر

  • Like 1
قام بنشر

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

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
on error goto err_Detail_Format

dim int_Which_Picture

int_Which_Picture=1
Me![ImageFrame1].Picture = Me![Picture1]

int_Which_Picture=2
Me![ImageFrame2].Picture = Me![Picture2]

int_Which_Picture=3
Me![ImageFrame3].Picture = Me![Picture3]

int_Which_Picture=4
Me![ImageFrame4].Picture = Me![Picture4]


Exit_Detail_Format:
exit sub
err_Detail_Format:

	if err.number=2220 then
		if int_Which_Picture=1 then
			Me![ImageFrame1].Picture =""
		elseif int_Which_Picture=2 then
			Me![ImageFrame2].Picture =""
		elseif int_Which_Picture=3 then
			Me![ImageFrame3].Picture =""
		elseif int_Which_Picture=4 then
			Me![ImageFrame4].Picture =""
		endif
		resume next
	else
		msgbox err.number & vbcrlf & err.description
	endif

End Sub

 

جعفر

  • Like 1
قام بنشر

الامر 

On Error Resume Next

جدا خطير ، ويجب ان يُستعمل في حالات جدا خاصة 🙂

 

بينما كود اصطياد الخطأ الذي وضعته انا ، جدا مرن ، ويستوعب اي عدد من الاخطاء ، ويمكن معالجة كل نوع منها بطريقة خاصة 🙂

 

شوف مثلا اصطياد هذه الاخطاء ، وهذا كود من احد برنامجي :

Exit Sub

ProcError:

    Select Case Err
        Case 7874   'could not find QueryDef
            
            Resume Next
            
        Case 9 'Worksheet doesn't exist
            objXLWb.Worksheets.Add
            Set objXLSheet = objXLWb.ActiveSheet
            objXLSheet.Name = strWorkSheet

            Resume Next

        Case 1004 'Workbook doesn't exist, make it
            objXLApp.Workbooks.Add
            Set objXLWb = objXLApp.ActiveWorkbook
            objXLWb.SaveAs strWorkBook, FileFormat:=strSaveAs
                          
            Resume Next

        Case 53 'file not found
            Resume Next
            
        Case 3270   'Field Caption not found, use field name
            objXLCell(, i + 1) = rs.Fields(i).Name
            
            Resume Next
            
        Case 3061   'too few parameters, expected 1 or more
            
            'this error occurs when trying to run a query which needs its parameters from a Form,
            'the Form should be open with the parameter, then this code take the values properly
            
            Dim qdf As QueryDef
            Dim prm As Parameter
            
            'Set qdf = CurrentDb.QueryDefs("strSql")
            Set qdf = CurrentDb.CreateQueryDef("NewQueryDef", strSql)
            For Each prm In qdf.Parameters
                prm.Value = Eval(prm.Name)
            Next prm

            Set rs = qdf.OpenRecordset(dbOpenDynaset)
            DoCmd.DeleteObject acQuery, "NewQueryDef"
            
            Resume Next
                
            
        Case Else
            DoCmd.Hourglass False
            MsgBox Err.Number & " " & Err.Description
            'Stop
            'OkNotOk = "NotOk"
            Exit Sub
            Resume 0
            
    End Select

End Sub

 

جعفر

 

  • Like 3
قام بنشر

تسلم اخي جعفر

انا استخدم هذا


On Error GoTo MyErr
ثم الكود
MyErr:
If Err.Number = 7847 Then
MsgBox " الرساله ", vbInformation, "  : عنوان الرساله  "
End If
وهو ممتاز جدا يعرفك في الاخطاء وكما قلت في حجات استخدم اخفاء الاخطاء اللي نتعلم عنه 

 

  • Like 1
قام بنشر
11 دقائق مضت, ابو ياسين المشولي said:

انا استخدم هذا

 

ممتاز ، ولكن ناقصك ، اذا كان في اخطاء اخرى غير 7847 ، فعليك عمل الكود هكذا :

On Error GoTo MyErr
ثم الكود
MyErr:
If Err.Number = 7847 Then
	MsgBox " هذا الملف موجود سابقا ", vbInformation, "  : عنوان الرساله  "

else
		msgbox err.number & vbcrlf & err.description
end if

 

جعفر

 

  • Like 1
قام بنشر

لا أعرف كيف أشكركم أخي جعر وأخي أبو ياسين

فلكم الشكر الجزيل ورحم الله والديكم

أكواد الأزرار من الأخ جعفر إستعملتهم وطبعاً راحت كل المشاكل ولله الحمد

 

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

مربع النص الذي يظهر ... يظهر مرتين ومكتوب به ..

13 Type mismatch

تضغط أوكي مرتين ويذهب

هذه هي المشكلة فقط

ولكم تحياتي وأنا أعجز عن شكركم

 

قام بنشر

حياك الله 🙂

 

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

أصبحت هناك مشكلة صغيرة فقط .. وأستطيع أستمر بهذه المشكلة أيضاً .. إلا إذا كان لها حل فهذا شيء ممتاز

مربع النص الذي يظهر ... يظهر مرتين ومكتوب به ..

13 Type mismatch

تضغط أوكي مرتين ويذهب

هذه هي المشكلة فقط

 

قوانين المنتدى تقتضي ان يكون هناك موضوع لكل سؤال ، وبما هذا الطلب جديد ، فرجاء عمل سؤال له ، وفي الواقع سؤالك يحتاج مزيد من التوضيح ، فلما تضع السؤال ، يفضل ان تضع فيه هذه الجزئية من برنامجك ، علشان الشباب يساعدوك ، اما الشياب ، فيقولون لكم تصبحون على خير :biggrin2:

 

جعفر

  • Like 1
  • Thanks 1
  • Haha 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