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

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


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

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

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

 

 

شرح المشكلة |
اقوم بعض الاحيان بكتابة كود ثابت واستخدمه في اكثر من مكان 
مثلا 
لدي امر زر الحذف بكافة النماذج ثابت قمت بكتابتة الكود مسبقا وتم تنسيق الرسالة واضافة كل الاكواد الازمة لامر الحذف واقوم بتكراره بكل زر 
كذلك 
لدي رساله منبثقه تبين ان هناك خطأ غير متوقع واقوم بتحزيم الاكواد بهذه الرساله 
كذلك 
لدي نص ثابت اسم البرنامج + اصداره بهذه الصيغة مثلا ( اوفيسنا | الاصدار 3.8 ) واقوم بوضعه في عناوين الرسائل المنبثقه وكذلك في مواقع عدة من البرنامج

 

م الذي افكر فيه  ؟

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

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

 


اخيرا م الذي اريده من الساده الكرام

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

 

لكم المرفق للتعديل عليه 
 

استدعاء الاكواد.accdb

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

عليكم السلام

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

في محرر الوحدة النمطية العامة نكتب :

Public Function my_function()
' اكتب اكوادك هنا

End Function

ويتم استدعاء الوظيفة هكذا

Call my_function

أو
my_function

او
my_function()

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

اما الأولى فنحن نشغل الوظيفة اذا كانت قيمتها متعدية اي انه يوجد متغيرات خارجية تتأثر قيمتها عند تشغيل الوظيفة

 

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

  • أفضل إجابة

تفضل مرفقك أخي @Hamtoooo بعد تطبيق تعليمات معلمنا العود @ابوخليل 🙂 

 

نفس الرسائل والأزرار .. وألق نظرة على محتويات الوحدة النمطية image.png.b4eda352d4ac404164b6ec8380a8e5e4.png وكذلك جرب تغيير النصوص فيها ولاحظ الفرق في النموذج ..

وهذا محتوى الوحدة النمطية :

Option Compare Database
Option Explicit


Public Function Default_MSGBOX()
'الرسالة الموحدة
    MsgBox "هذه الرسالة موحدة", , Default_Title
End Function


Public Function Default_Title() As String
' العنوان الموحد

    Default_Title = "( اوفيسنا | الاصدار 3.8 )"
End Function


Public Function Default_Text() As String
' نص ثابت يكتب في الوحدة النمطية

    Default_Text = "هذا النص تم استدعائه من الوحدة نمطية"
End Function



Public Function DeleteBtn_Click()
'أمر عام يوضع على أزرار الحذف لحذف السجلات

On Error GoTo Err_DeleteBtn_Click

    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord

Exit_DeleteBtn_Click:
    Exit Function

Err_DeleteBtn_Click:
    MsgBox Err.Description
    Resume Exit_DeleteBtn_Click
    
End Function

 

استدعاء الاكواد.accdb

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

في 7‏/1‏/2024 at 21:33, Moosak said:

تفضل مرفقك أخي @Hamtoooo بعد تطبيق تعليمات معلمنا العود @ابوخليل 🙂 

 

نفس الرسائل والأزرار .. وألق نظرة على محتويات الوحدة النمطية image.png.b4eda352d4ac404164b6ec8380a8e5e4.png وكذلك جرب تغيير النصوص فيها ولاحظ الفرق في النموذج ..

وهذا محتوى الوحدة النمطية :

Option Compare Database
Option Explicit


Public Function Default_MSGBOX()
'الرسالة الموحدة
    MsgBox "هذه الرسالة موحدة", , Default_Title
End Function


Public Function Default_Title() As String
' العنوان الموحد

    Default_Title = "( اوفيسنا | الاصدار 3.8 )"
End Function


Public Function Default_Text() As String
' نص ثابت يكتب في الوحدة النمطية

    Default_Text = "هذا النص تم استدعائه من الوحدة نمطية"
End Function



Public Function DeleteBtn_Click()
'أمر عام يوضع على أزرار الحذف لحذف السجلات

On Error GoTo Err_DeleteBtn_Click

    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord

Exit_DeleteBtn_Click:
    Exit Function

Err_DeleteBtn_Click:
    MsgBox Err.Description
    Resume Exit_DeleteBtn_Click
    
End Function

 

استدعاء الاكواد.accdb 928 kB · 12 downloads

الخبير الفاضل هل من الممكن عمل مثل هذة الرسالة فى مديول عام 

مع العلم بان pname =اسم المريض المراد طباعة التقرير لة

image.png.ec69b69ebae86c6de5f71b3957faaa81.png

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

4 ساعات مضت, jo_2010 said:

هل من الممكن عمل مثل هذة الرسالة فى مديول عام 

مع العلم بان =اسم المريض المراد طباعة التقرير لة

نعم ممكن طبعا 🙂 

ولكنك هذه المرة ستدخل  pname كمعامل للدالة لأنه يتغير كل مرة لكل مريض ..

فستكون الصياغة بهذا الشكل ( عدل انت عليه لاحقا كما تشاء ) :

Public Sub PrintOut(pname as string)

If MsgBox (" التقرير الخاص بــ تريد طباعة مل" & pname & " ", vbQuestion + vbMsgBoxRight + vbYesNo, "") vbYes Then
	DoCmd.PrintOut
Else
	Me.Undo
End If

End Sub

 

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

17 ساعات مضت, Moosak said:

نعم ممكن طبعا 🙂 

ولكنك هذه المرة ستدخل  pname كمعامل للدالة لأنه يتغير كل مرة لكل مريض ..

فستكون الصياغة بهذا الشكل ( عدل انت عليه لاحقا كما تشاء ) :

Public Sub PrintOut(pname as string)

If MsgBox (" التقرير الخاص بــ تريد طباعة مل" & pname & " ", vbQuestion + vbMsgBoxRight + vbYesNo, "") vbYes Then
	DoCmd.PrintOut
Else
	Me.Undo
End If

End Sub

 

معلمى الفاضل 

لم اتمكن من استدعاء الكود من الموديول ممكن لو تكرمت تساعدنى  شكرا لحضرتك

 

 

 

Code.accdb

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

7 ساعات مضت, jo_2010 said:

معلمى الفاضل 

لم اتمكن من استدعاء الكود من الموديول ممكن لو تكرمت تساعدنى  شكرا لحضرتك

 

 

 

Code.accdb 832 kB · 0 downloads

ممكن تساعدني مستر moosak

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

تفضل أخي @jo_2010 🙂 

هذا شكل الكود في الموديول :

Public Sub PrintOut(pname As String, ID As Long)

Screen.ActiveForm.Refresh

If MsgBox("هل ... تريد  طباعة  التقرير الخاص بــ     " & pname & "   ؟   ", vbQuestion + vbMsgBoxRight + vbYesNo, Default_Title) = vbYes Then
    
    DoCmd.OpenReport "ss", acViewPreview, , "[id]=" & ID
    DoCmd.PrintOut
    DoCmd.Close acReport
Else
    DoCmd.OpenReport "ss", acViewPreview, , "[id]=" & ID
End If

End Sub

وتستدعيه بهذه الطريقة لأنه صار يستقبل معاملين هذه المرة ( الــ ID  ، واسم الموظف )

Call PrintOut(pname.Value, Me.ID)

 

Code.accdb

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

منذ ساعه, Moosak said:

تفضل أخي @jo_2010 🙂 

هذا شكل الكود في الموديول :

Public Sub PrintOut(pname As String, ID As Long)

Screen.ActiveForm.Refresh

If MsgBox("هل ... تريد  طباعة  التقرير الخاص بــ     " & pname & "   ؟   ", vbQuestion + vbMsgBoxRight + vbYesNo, Default_Title) = vbYes Then
    
    DoCmd.OpenReport "ss", acViewPreview, , "[id]=" & ID
    DoCmd.PrintOut
    DoCmd.Close acReport
Else
    DoCmd.OpenReport "ss", acViewPreview, , "[id]=" & ID
End If

End Sub

وتستدعيه بهذه الطريقة لأنه صار يستقبل معاملين هذه المرة ( الــ ID  ، واسم الموظف )

Call PrintOut(pname.Value, Me.ID)

 

Code.accdb 500 kB · 1 download

خالص الشكر الخبير الافاضل Moosak

  • 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