Hamtoooo قام بنشر ديسمبر 23, 2021 قام بنشر ديسمبر 23, 2021 السلام عليكم اسعد الله يومكم يا ابطال لأستفيد ويستفيد غيري كوني مبتدئ اعمل على انشاء برنامج متكامل ولدي الكثير من الرسائل المنبثقه (msgbox) احببت ان يكون عنوان هذه الرسائل المنبثقه (title) موحده مثلا بإسم البرنامج ورقم الاصدار الذي عملته هو انني وضعت جدول يكون فيه اسم البرنامج ورقم الاصدار واستخدمت دالة (Dlookup) لجلب اسم البرنامج والاصدار في عنوان الرسائل كما يلي : Private Sub b_emp_add_Click() On Error Resume Next If Forms![LoginFourm]![Delete] = 0 Then MsgBox "خطأ .. ليس لديك صلاحيات اصدار أذن", 0 + 16 + 1048576, DLookup("[name_pro]", "[info]") & " | " & DLookup("[Version_pro]", "[info]") Else DoCmd.OpenForm "Permission_add", , , , acFormAdd End If End Sub وكما تلاحظ انني وضعت داله الـ dlookup في عنوان الرساله في كل مره اضع هذا الكود اعلم انها طريقه غير احترافيه .. المطلوب ماهي الطريقه المثلى والاخف للقاعده كي استدعي العنوان بدون تكرار الداله انا خطرت في بالي فكرة الوحده النمطية المساعده بحيث اريد ان اضع دالة ال dlookup بها واستدعيها في عنوان الرساله هل اضع الداله في ال sub بشكل عادي او لا بد وضعها بمتغير وهل اعلان المتغير لابد ان يكون عام حيث اريد هذه الداله على مستوى القاعدة كاملة ماهي افضل الطرق وياليت يتم شرح لنا استدعاء دالة dlookup داخل وحده نمطيه والاستفاده منها في عنوان الرساله كل الامنيات للابطال ان يتم شرح فكرة استدعاء اي داله او نص من الوحده النمطيه إلى اي مكان في القاعده بشكل مبسط شاكر ومقدر حسن تعاملكم وتفهمكم توحيد العنوان في الرسائل المنبثقه.accdb
jjafferr قام بنشر ديسمبر 23, 2021 قام بنشر ديسمبر 23, 2021 وعليكم السلام 🙂 1. بهذه الطريقة ننادي الدالة fMy_Msgs لتعطينا الرسالة : Private Sub b_emp_add_Click() On Error Resume Next If Forms![LoginFourm]![Delete] = 0 Then call fMy_Msgs Else DoCmd.OpenForm "Permission_add", , , , acFormAdd End If End Sub 2. اعمل وحدة نمطية جديدة ، واعطيها اسم mod_My_Msgs مثلا (ولكن لا تحفظها باسم fMy_Msgs ، لأن هذا اسم الدالة) : option comapre database option explicit dim my_info as string public function fMy_Msgs() if len(my_info & "")=0 then my_info = DLookup("[name_pro]", "[info]") & " | " & DLookup("[Version_pro]", "[info]") end if MsgBox "خطأ .. ليس لديك صلاحيات اصدار أذن", 0 + 16 + 1048576, my_info end function . جعفر 1
Hamtoooo قام بنشر ديسمبر 23, 2021 الكاتب قام بنشر ديسمبر 23, 2021 ممتن للطفك وجميل صنعك حسب ما فهمت من ردك اخي جعفرر انه يتم استدعاء الرساله كامله بما فيها العنوان ونص الرساله انا اريد ان استدعي فقط متغير عنوان الرساله .. كي اضعها في متغيرات العناوين في الرسائل بباقي القاعدة
jjafferr قام بنشر ديسمبر 23, 2021 قام بنشر ديسمبر 23, 2021 7 دقائق مضت, Hamtoooo said: انا اريد ان استدعي فقط متغير عنوان الرساله .. كي اضعها في متغيرات العناوين في الرسائل بباقي القاعدة ولا يهمك ، تفضل Private Sub b_emp_add_Click() On Error Resume Next If Forms![LoginFourm]![Delete] = 0 Then MsgBox خطأ .. ليس لديك صلاحيات اصدار أذن", 0 + 16 + 1048576", fMy_Msgs Else DoCmd.OpenForm "Permission_add", , , , acFormAdd End If End Sub . والدالة option comapre database option explicit dim my_info as string public function fMy_Msgs() as string if len(my_info & "")=0 then my_info = DLookup("[name_pro]", "[info]") & " | " & DLookup("[Version_pro]", "[info]") end if fMy_Msgs = my_info end function جعفر 1
Hamtoooo قام بنشر ديسمبر 23, 2021 الكاتب قام بنشر ديسمبر 23, 2021 احسن الله إليك وجعل ما تقوم به في ميزان حسناتك اخي جعفر شفهيا لماذا وضعت داله if واستخدمت len ؟؟ م الفائده منها وهل استخدامها شائع 33 دقائق مضت, jjafferr said: if len(my_info & "")=0 then my_info = DLookup("[name_pro]", "[info]") & " | " & DLookup("[Version_pro]", "[info]") end if
jjafferr قام بنشر ديسمبر 23, 2021 قام بنشر ديسمبر 23, 2021 1. استخدامي الامر Len طريقتي في التعرف على ان المتغير: my_info المتغير ليس فاضي my_info = "" وليس فيه قيمة isNull(my_info)= true يعني بدل if my_info="" or isnull(my_info)= true then استعمل if len(my_info & "")=0 then . 2. لماذا استخدمت if لما الكود يقرأ الدالة لأول مرة ، فقيمة المتغير my_info هو "" (لأننا اعلنا ان string ، بينما لو كان المتغير رقم / مثل integer او Double او .. فتكون قيمته 0) ، فيقوم الكود بالذهاب الى الجدول مرتين (مرة لكل Dlookup) (مع انك تستطيع الذهاب الى الجدول مرة واحدة وقراءة قيمة الحقلين مرة واحدة ) ، ولما تقرأ الدالة مرات اخرى ، فيقوم الكود بالذهاب الى الجدول مرتين ، بينما لما استخدمت الامر if في الدالة ، فالدالة لما تجد ان المتغير my_info فيه قيمة (اي انه ذهب للجدول سابقا واحضر القيمتين) ، فلا تذهب للجدول ، وانما تعطي/تظهر القيمة مباشرة 🙂 جعفر 1
Hamtoooo قام بنشر ديسمبر 23, 2021 الكاتب قام بنشر ديسمبر 23, 2021 جمييييل شكرا لك جعفر فهمت طريقة الفكرة انا فعلا استخدم هذه الطريقه 23 دقائق مضت, jjafferr said: if my_info="" or isnull(my_info)= true then لكن حتما سأستخدم طريقتك
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.