اذهب الي المحتوي
أوفيسنا

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

قام بنشر

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

ما السبيل لمعرفة كل شىء عن الوحدات النمطية - اريد أن انشئها بنفسى دون الحاجة لعمليات النسخ واللصق..

وماذا عن المكتبات التى تأتى أسماءها بعد الوسيطة lib كــ shell32.dll وغيرها وهل هى محصورة بعدد معين وكيف لى بمعرفة استخداماتها

وما هى مكتبات API ..

وما هو وجه الخلاف بين الوحدة النمطية والوحة النمطية للفئة.

آسف على الاطالة 

وأشكر الجميع على حسن التعاون وجزاكم الله خيرا

قام بنشر

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

ما السبيل لمعرفة كل شىء عن الوحدات النمطية - اريد أن انشئها بنفسى دون الحاجة لعمليات النسخ واللصق..

وعليكم السلام اخينا ابو عبدالله

كل شي عن الوحدة النمطية : هي مكان لكتابة اكواد لغة access basic  !  عليك بتعلم البرمجة ؟ تعريف المتغيرات - اسنداد القيم - جمل التكرار - جمل الشرط - ... الخ

 

قام بنشر

وماذا عن المكتبات التى تأتى أسماءها بعد الوسيطة lib كــ shell32.dll وغيرها وهل هى محصورة بعدد معين وكيف لى بمعرفة استخداماتها

وما هى مكتبات API ..

api  اختصار application programming interface   بالعربي برمجة واجهة التطبيقات وبالبلدي:

هي دوال تحاكي الويندوز ! مثلا هناك اوامر يحتاجها المبرمج وهذا الامر اصلا واحد من مكتبات الويندوز على شكل دالة ! وكل مكتبة في الويندوز بها دوالها مغلفة ! فاروح انادي الدالة هذه بشرط ذكر اسم مكتبتها ! بمعنى هذه الدالة يستخدمها الويندوز وانت كمان تستخدمها خاصة اذا بتحاكي شي خارج برنامجك والذي لن يستطيع برنامجك يفهم اللغة للتخاطب ! فمثلا اغلاق ويندوز ! اروح انادي الدالة الخاصة بهذا مع ذكر مكتبة وجودها بها ! فانت ذهبت تخاطب برامج اخرى بهذه الدالة لقصور برنامجك في التخاطب !

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

بمعنى لو عايز اضيف سجل في جدول مش معقوله انادي دالة api  لانهم الويندوز مش حيفهم انت عايز ايه ! فقال لك ياعمي انا شغلت لك الاكسس واموركم الداخلية خلصوها مع بعض ! والاكسس حيزعل ويقول انت رايح للويندوز في امر زي كدا ! انا لدي دوالي وكائناتي اللي تعمل الحاجة دي !  اما لو فيه حاجة ما اقدرش عليها روح لمكتبات الويندوز وخذ اللي انت عايزه وهاتها لي في وحدة نمطية عامة !

ممكن يخطر في بالك عايز افتح الاكسل من الاكسس ! لو فكرت قليلا اكيد هناك دالة api  بتعمل كذا لانه الويندوز بيعملها وهو فتح وتشغيل الاكسل ! بس هنا الاكسس برضه بيعمل الحاجة بس عايز منك ان تضيف مرجع في المراجع او تبحث وتتعلم ويمكن فيه دالة في الاكسس بتعمل كذا !

باختصار api دوال كثيرة جدا بحجم مكتبات الويندوز عليك معرفة اسمها ومكتبتها ونوع متغيراتها الممررة لها ومكان وجودها لكي تستطيع استخدامها !

لاحظ انه لو شغلت الاكسس على غير ويندوز مش حيفهم عليها ! بل لاحظ كيف انه عند تغير اصدارات الويندوز عليك مراجعة شكل الدالة الجديد !

بمعنى ابتعد عنها الا للضرورة !

  • Like 3
قام بنشر

وما هو وجه الخلاف بين الوحدة النمطية والوحة النمطية للفئة.

هو فيه اختلاف ولكن يتطلب الخلفية في فهم برمجة الكائنات oop  اختصار   object oriented programming

علشان نتكلم علميا ويمكن اكون مقصر لعدم التخصصية البحتة خاصة وان هذا الموضوع شبح طلاب الحاسب الالي !

ولكن برضه بالبلدي:

الوحدة النمطية العامة هي مكان لدوال والمتغيرات العامة لكل البرنامج ! ماتضعه هنا يكون معروف على مستوى البرنامج ! ممكن متغير ياخذ قيمته من اي نموذج ! او طبعا عرفنا انها مكان لمناداة ال api ! وفي نفس الوقت هي المكان التي ابرمج بلغة ال access basic  !

اما وحدة الفئة : هي مكان انشئ من خلاله الكائنات ! نحن نعرف ان لكل كائن خصائص وطرق او اوامر ! هنا نستطيع ان اعرف كائنات جديدة لها خصائصها وطرقها !

لاحظ انه لكل نموذج وتقرير عند انشائه له وحدة فئة خاصة وهي صفحة كود الاحداث ! وهذه تكون وارثة جميع الخصائص والطرق من النموذج او التقرير !

هذا والحديث يطول ويحتاج وقت او تسلسل في المواضيع علشان ينفهم ! ولكن اتمنى ان افدتك ولو بالمفاتيح !

 

تحياتي

 

 

  • Like 2
قام بنشر

جزاك الله خيرا أستاذ رمهان أحسن الله اليك 

كل شي عن الوحدة النمطية : هي مكان لكتابة اكواد لغة access basic  !  عليك بتعلم البرمجة ؟ تعريف المتغيرات - اسنداد القيم - جمل التكرار - جمل الشرط - ... الخ

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

كنت بحاجة لمعرفة أساسيات بناء الوحدة النمطية 

كلماذا أبدأها بــــ private  ولماذا أبدأها بــــ Public 

وكذلك متى أستخدم  bYval    أو  Byref   عند تعريف المتغيرات  وهكذا...

وان دللتنى لروابط مختصة بهذا كنت لك شاكرا

أولا - api  اختصار application programming interface   بالعربي برمجة واجهة التطبيقات وبالبلدي:

قد وجدت ببعض الوحدات النمطية ببعض البرامج "shell32.dll"   و  "user32"  و "comdlg32.dll"  فهل هذه المكتبات تشمهلها  api  ان كان الأمر كذلك 

باختصار api دوال كثيرة جدا بحجم مكتبات الويندوز عليك معرفة اسمها ومكتبتها ونوع متغيراتها الممررة لها ومكان وجودها لكي تستطيع استخدامها !

فهل هناك رابط اجد فيه هذه المكتبات واستخداماتها وشرحا مختصرا عنها؟

 

 

قام بنشر

اهلا بك ابو عبدالله

عايزك تفهم ان موضوعك موضوع مفتوح نوعا ما ! او للاجابة يحتاج وقت وشرح ولابد من التطرق للاساسيات علشان نكمل ! وبرضه يا اشرح شي بشكل علمي لانه سيكون مرجع لكل من يمر هنا ! لذلك مثل هذه الاشياء خذها من مصادرها الصحيحة والموثوقة افضل مثل : كتب - موقع ميكروسوفت !

انصحك ان تاخذ كتاب في الاساسيات وبتسلسل المواضيع بدون القفز من فصل لاخر !

الشي الذي ممكن اضيفه هنا هو : عايزك تتخيل ان هذا البريمج (الاكسس) به قاعدة بيانات مصغرة - اداة تصميم وتطوير - بيئة لكتابة اكواد !  كلها هذا ونحن نعرف ان كل منها موجود كمنتج مستقل من شركات اخرى ! بينما هذه كلها موجودة في ملف واحد ! وملف ايه ؟ ملف بيانات !  بل كل وحدة عبارة عن كائن داخل هذا الملف ! بمعنى انتي الوحدة النمطية اللي نكتب فيك الاكواد ماخذه شكل مصغر من عمل ادوات التطوير المستقلة مثل الترجمة وتتبع الاخطاء وغيرها وتحويل الكود الى لغة الكمبيوتر ! وهية مع هذا كله مازالت كائن في ملف الاكسس ! فمش عارف هل ننظر للموضوع استخفاف بعقولنا ام انه ابداع في هذا المنتج ؟!!!!!

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

** كلمة private  تحدد مدى حياة المتغيرscope ! فبها يكون حي فقط في المكان الذي ولد به اي عرف به ! فمثلا ولد في وحدة نمطية عامة فانه يعرف وحي في تلك الوحدة فقط ! ولدة في وحدة فئة نموذج فانه حي ويعرف هنا فقط ! بمعنى لو ناديته منكا اخر ستجده ميت ولا يستجيب !  عكس public

** byval  و byref  تستخدم لتحديد نوع او اسلوب تمرير المتغيرات للاجراءت والدوال ! بالعربي : بالقيمة او المرجع !  فاذا مررت قيمة متغير من نوع قيمة فانه للرغبة او عدم الاستطاعة في تغيير قيمة المتغير الاساسية عكس بالمرجع التي يمكن تغيير قيمة المتغير من خلال الاجراء او الدالة ! كما ان الموضوع يطول حول مسالة تعريف المتغيرات نفسها بانها من نوع قيمة ام مرجع ! فهل ممكن امرر قيمة متغير معرف انه مرجع لدالة تستقبل بالقيمة ؟ !!

** رابط لل api : 

https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516(v=vs.85).aspx

http://allapi.mentalis.org/apilist/apilist.php

طبعا تاكد من توافق الدالة مع اصدار الويندوز!

هذا متمنيا ان حصل لو جزء من ما تريد !

كما انبه على ان الشرح لا بد ان ياتي من استاذ فهو علم بحد ذاته فليس المقصود بالاستاذ بقدر مايملك من معلومة ولكن بقدر رضا تلاميذه في ايصال المعلومة !

تحياتي

  • Like 3
  • 4 weeks later...
قام بنشر (معدل)

شكرا أخي الاستاذ رمهان على هذا الشرح :rol:

 

والان الى الجانب العملي :rol:

لا تستطيع ان تنادي هذه الوحدات بالطرق التقليدية ، وكل لغة (مثل VB, VBA, C++, ...) لها طريقتها الخاصة في مناداة هذه الوحدات ،

وبالنسبة الى اكسس ، فالرابط التالي يعطينا  امثلة في كيفية استخدامها:

http://access.mvps.org/access/index.html

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

http://lebans.com/

 

جعفر

 

تم تعديل بواسطه jjafferr
  • Like 2
قام بنشر

الى هنا والحديث كله عن API ،

ولكن استخدام الوحدات النمطية بشكل يومي يتعدى هذه المعلومة ،

فمعظم برامجنا تحتاج الى حساب او معادلات او ... ، فهنا يأتي الوحدة النمطية ، وبالذات عند مناداتها من الاستعلام (او النموذج او التقرير)،

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

مثلا:

الحقل items في الجدول tbl_AHF يحتوي على 3 معلومات مكررة وهي A, H, F

نريد ان نقسم الحقل qty على عدد معين (يعتمد على قيمة الحقل items) ،

نقسم qty على 7 ، اذا كانت قيمة items تساوي A ،

نقسم qty على 6 ، اذا كانت قيمة items تساوي H ،

نقسم qty على 5 ، اذا كانت قيمة items تساوي F ،

 

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

فالطريقة المثلى هنا ، هي عمل وحدة نمطية ، وارسال قيم الحقول items , qty  اليها ، وعمل الكود بها ، واسترجاع النتائج منها ، 

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


Function Get_Values(i, q)

    'i = items
    'q = qty
    
    If i = "A" Then
        Get_Values = q / 7
    
    ElseIf i = "H" Then
        Get_Values = q / 6
        
    ElseIf i = "F" Then
        Get_Values = q / 5
    End If
    
End Function

.

والاستعلام يكون بهذه الطريقة:

258.Clipboard01.jpg.9bfe515d942564258627

.

والنتيجة:

258.Clipboard02.jpg.fca4b33e9fcd20405a6b

.

وهنا نلاحظ من النتيجة ان تنسيقها للجهة اليسار ، مما يعني ان النتيجة نص وليست رقم ،

لذا نرجع للوحدة النمطية (ودون المساس بالاستعلام) ونجري عليها التعديل المطلوب ، وبكل سهولة ، لتغيير النتيجة من نص الى رقم ،

وتصبح الوحدة النمطية:


Function Get_Values(i, q) As Double

    'i = items
    'q = qty
    
    If i = "A" Then
        Get_Values = q / 7
    
    ElseIf i = "H" Then
        Get_Values = q / 6
        
    ElseIf i = "F" Then
        Get_Values = q / 5
    End If
    
End Function

.

والنتيجة

258.Clipboard03.jpg.56ef30fe8b54a94937ec

 

 

جعفر

258.modulesANDcommands.mdb.zip

  • Like 2
قام بنشر (معدل)

والآن الى الكنز المخزون في صفحة كود الاكسس ، والذي يحتوي على جميع اوامر الاكسس ، و VBA ، و.....

افتح صفحة الكود:

258.Clipboard04.jpg.44850ff83a2e9cf4c6dd

.

إما تضغط على الايقونه الموضحة بالدائرة الحمراء في الصورة اعلاه ، او تضغط على الزر F2 في لوحة المقاتيح ، وستظهر لك هذه الشاشة:

258.Clipboard05.jpg.d483c9f53dcc25630251

.

في الشاشة التاليه:

1. اختر اي الاوامر تريد ، VBA او اكسس او ... ، فسترى انواع الاوامر المتوفرة لها في النافذة 2 ، انا اخترت VBA ،

2. ثم اختار نوع الامر الذي تريده ، انا مثلا اردت جميع اوامر التاريخ والوقت ، فسترى جميع اوامر التاريخ والوقت في النافذة 3 ،

3. اختار الامر الذي تريده وانقر عليه ، انا مثلا اخترت الامر DateAdd ، فسترى في الاسفل (4) طريقة كتابة الامر :

258.Clipboard06.jpg.0a351332d6a3d766be5f

.

وتستطيع كتابة اي امر تريد في خانة البحث (Recordset مثلا) ، وستحصل على جميع الاوامر التابعة له :rol:

 

وإخواننا الصعايدة على راسنا :wavetowel:

 

جعفر

تم تعديل بواسطه jjafferr
  • Like 7
قام بنشر

مررت بالصدفة بالرابط التالي

وبه مشاركة قيمة للاستاذ ابو ادم !

تحياتي

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