أخواني كيف يمكن عمل دالة في الوحدة النمطية تقوم بتمرير اسم نموذج لإجراء عمليات عليه
وكيف يتم أستدعائها من خلال الحدث call
أخواني كيف يمكن عمل دالة في الوحدة النمطية تقوم بتمرير اسم نموذج لإجراء عمليات عليه
وكيف يتم أستدعائها من خلال الحدث call
هل جربت الأمر
function something ( myform as form) docmd.close myform end function
إذا لم ينفع الأمر معك أخبرني ماذا تريد بالضبط وسوف أساعدك بإذن الله
تحياتي
أخي تحياتي لك وعلى تجاوبك السريع وهذا إن دل فإنما يدل على فعاليتك في المنتدى الجميل
سؤالي كان كيف يتم التمرير وإستدعاء النموذج من خلال الداله الحقيقة كتبت تلك السطور قبل ما أجرب دالتك الموجودة في الاعلى
الغرض هو أن اضع جميع العمليات المكررة على النموذج من تنسيقات وغيرها واضعها في الدالة فقط حتى لا يتكرر العمل وتقبل تحياتي
أخي العزيز لقد جرب هذا الكود
function namefunction(x as form ) docmd.open(x) end funcion
والحقيقة لم ينجح وكان الاستدعاء كالتالي
call namefunction (myform)
ولم تنجح العملية ماهو السبب يا ترى تحياتي
أخي الكريم
الأكواد التي كتبتها فيها مجموعة من الأخطاء على سبيل المثال
فتح النموذج يتم باستخدام الأمر openform وليس الأمر open
على كل في مثالك السابق وإذا افترضنا أنك حالياً في نموذج frm0 وتريد فتح نموذج frm1 ووضع قيمة معينة لمربع نص باسم aaa موجود داخل النموذج يمكنك استخدام الدالة التالية
Function namefunction(x As String) DoCmd.OpenForm x Forms(x)!aaa = "How are you" End Function
وإذا افترضنا أنك حالياً في نموذج frm0 فيمكنك استدعاء الدالة كالتالي
Call namefunction("frm1")أخي شكراً لك ولتعاونك ولكن انت في الدالة قد مررت متغير من نوع حرف وليس كائن بمعنى داخل الدالة لا يمكن عمل تغيرات على هذا المتغير لماذا ؟ لأنه متغير وليس كائن
انت تمرر سلسلة حرووف ولم تمرر متغير كائن من كائنات ADO مثل النماذج
حتى تستطيع عمل التغيرات عليها في الدالة ومن ثم يتم تمرير هذا الكائن فقط ليجري عليه جميع التغيرات التي تحدث عليه في الدالة التي كتبت عن المتغير من نوع نماذج وليس سلسلة حرفية
أرجوا أن يكون شرحي قريب من الفهم وتقبل تحياتي
وخلاصة ما لدي أنني أريد فقط للمعرفة وليس لتنفيذ شي عمل التنسيقات المكررة على النماذج وجعلها في نموذج وفقط يستدعى الدالة )
شكراً مرة أخرى لك
أخي الكريم
أنا أفهم جميع ما ذكرت ولذلك لم أقتصر على فتح النموذج بل وضحت لك كيف نستطيع استخدام السلسلة string التي مررناها مع النماذج في السطر التالي
Forms(x)!aaa = "How are you"
وذلك من خلال استخدام ما يسمى collection وهو forms
وثمة أمر آخر يجب التنبه له وهو أنك تريد تنفيذ أمر يتطلب متغيراً من نوع سلسة وهو الأمر openform ولذلك فأنت لا تستطيع تمرير متغير من نوع form إلا إذا كنت ستعود مرة أخرى وتستنتج السلسلة المطلوبة وهي في الأمر السابق اسم النموذج من المتغير نفسه وفي هذه الطريقة تعقيد لا داعي له
خاصة أننا نستطيع تحويل السلسلة إلى كائن إذا احتجنا إلى ذلك عن طريق ما يسمى بـ collection وأنت تعلم أنه يمكننا فعل ذلك مع كافة الكائنات الأخرى في أكسس
أما مسألة أنك مررت كائن أو سلسلة فهي لا يؤثر في تنفيذ الأمر شيئاً
هذا الموضوع مغلق.