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

محمد طاهر عرفه

إدارة الموقع
  • Posts

    8,495
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    36

كل منشورات العضو محمد طاهر عرفه

  1. لو كنت تريد تغيير تنسيق كلمة معينه فالحل هو انكت تذهب لمربع بحث واستبدال وتقوم في مربع البحث وتضع الكلمة التي تريد وفي مربع استبدل بـ ضع الموشر هناك واضغط على زر تنسيق ونسق بالشكل الذي تريد -------------------------------------------------------------------------------- Edit --> Replace -->More--> Format -------------------------------------------------------------------------------- و لمن لم يري مكان تغيير الفورمات من مربع حوار الاستبدال فليضغط علي زر more الموجود أسفل مربع الحوار و الحل بالكود ( كمثال لمن أراد استخدام أكثر تعقيدا ) : Rem لتغيير الفونت لكلمة معينة Sub replaceformat() searchword = InputBox("Enter the word to replace Format", "replace format of a word", "M") Application.ScreenUpdating = True nextword: Selection.WholeStory Mcount = Selection.Words.Count ' MsgBox mcount For I = 1 To Mcount With Selection.Words(I) Application.StatusBar = "Searching / Formating ...." & _ Mcount & " Please Wait......." If Searchit(.Text) = True Then .Font.Name = "Courier" .Font.Size = 14 .Font.Bold = False .Font.Italic = False End If End With Next I End Sub Function Searchit(Myword) Searchit = False If Trim(UCase(Myword)) = Trim(UCase(searchword)) Then Searchit = True End If End Function ثم اضاف حارث مشكورا الماكرو التالي كحل مباشر ( أفضل ) : Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "هـ" .Replacement.Text = "هـ" .Replacement.Font.Name = "Arial" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.Find.Execute Replace:=wdReplaceAll
  2. أخي رضا أشكرك علي الشعار الجميل و البرنامج طبعا ، و لكن استوقفني الشعار قبل ان ادخل الي البرنامج
  3. كود جميل أخي أمير :yess: تم تعديل موضوع الأرشيف باضافة الكود الجديد و وضع مثال شامل للثلاث حالات خلية عمود مجموعة خلايا الموضوع من هنا
  4. فى سؤال عن كيفية عمل ذلك لعمود كامل ؟؟ أجاب الأخ أمير مشكورا بالكود التالي Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Variant For Each c In Worksheets("Sheet1").Range("a:a") If c.Value = "" Then c.Value = "Officena" Exit For End If Next c End Sub و المثال المرفق يحوي الثلاث حالات : خلية و عمود و مجموعة خلايا محددة ( مجال ) كل منها فى ورقة عمل منفصلة ملاحظة : تم تعديل المثال و اضافة الطريقة الرابعة فى المشاركة القادمة اليه
  5. تم تعديل المثال مرة أخري ، و نفذت استبدال التواريخ علي الدالة القديمة أيضا :d
  6. مراحل العمل فى البرنامج : لعمل لبرنامج بأسلوب علمي هناك ثلاث مراحل متتالية : أولا ً : تحليل النظام : ثانيا : تصميم النظام : ثالثا : التنفيذ ( أو البرمجة ) الكثير من المبرمجين يتعاملون مع أول مرحلتين ، علي أنهما تحصيل حاصل ، و أنه يمكن تجاوزهما بناء علي الفهلوة أو الخبرة – تبعا لنظرية : العلم فى الراس مش فى الكراس. :lol: و لا أخفيكم أني كثيرا ما أفعل هذا ، و لكن لاتباع الاسلوب العلمي فى اعداد البرنامج فوائد جمة، أهمها هو التوثيق و سهولة استرجاع معلومات التصميم سواء من المبرمج نفسه أو من من يكمل العمل بعده فى نفس البرنامج و هذا يقودني الي كلمة طالما تحدثت عنها مع إخوان لكم فى مواقع مماثلة ، و لكن دائما كانت تلقي القبول و ليس لها حظ كبير من التنفيذ ، الا و هي " التوثيـــــــــــــــق " و هذه الكلمة كما لها علاقة بالاكسس و البرمجة ، لها علاقة كبيرة بحياتنا كلها ، لذا أستميحكم عذرا أن أعرض لها علي عجالة قبل أن أكمل التوثيق و تناقل و حفظ الخبرات الفرق الاساسي و الكبير (( من وجهة نظري المتواضعة )) بيننا و بين ما يسمونه دول العالم الاول من ناحية الادارة ، هو النظام الاداري الموثق المتبع فى كل شيء فى العمل ، و عليه فيتم تناقل الخبرات بصورة كبيرة و دائما هناك إكمال للمسيرة و البداية من حيث إتنهي الأخرون و ليس من الصفر فالمؤسسات صغرت أم كبرت ، لديها نظام إداري محكم و مكتوب ، و الجميع يلتزم به و يعرف حقوقه وواجباته ، و المشاكل يتم توثيقها ليستفيد بها الغير . و لكي تتضح الصورة لما أقصد سأضرب لكم مثلين تعرضت لهما شخصيا فى العمل مع الأجانب ، و أثرا في كثيرا. الأول كنت أعمل فى إحدي الدول العربية ، و كنت أتبع أحد الأجانب إداريا. و طلب مني القيام بعمل ما و اطلاعه علي ال Procedure أو وثيقة الاجراءات للعمل الذي سأقوم به قبل البدء. فاستغربته ، و ظننت أني بانجاز العمل مباشرة سأبهره ، و فعلا أعددته بسرعة و عرضته عليه ، فاستغرب جدا ، و قال لي " لا يمكن أن يقوم إنجليزي يعمل فى شركة كبيرة بمثل هذا العمل قبل أن يكون هناك وثيقة مكتوبة لأسلوب العمل " و أصر و أراني وثيقة مماثلة لما يقصد ، و بعد قرائتها و اعداد مثيلة لها علي مضض ، فهمت المغزي من وراء ذلك. هذه الوثيقة تم فيها تحديد المعايير المختلفة لأسلوب العمل ، و تحديد الفرضيات التي يم بناء الحسابات عليها ، باختصار وصف لكل ما كنت سأضطر لشرحه لأي شخص يريد فهم تفاصيل العمل الذي قمت به ، و مع الوقت وفرت علي هذه الوثيقة الكثير من الكلام عند مراجعة هذا العمل مع أشخاص مختلفين ، و عند تسليم هذا العمل لشخص آخر ، و أيضا حينما أعيد إسناد نفس العمل لي فى وقت لاحق . أيضا أثناء مناقشة مشكلة فنية ، تصورت أن المرجع الوحيد للمناقشة هو الخبرة و المنطق ، و بعد فترة من النقاش ، أخرج الأجنبي ملفات و رجع اليها ، ثم قال عندما اتبع هذا الحل فى بلد كذا فى مشروع كذا .. كانت العيوب كذا .. و الحل الآخر .. ميزاته كذا .. و ... ، يعني وجدت خبرة شركته فى جميع أنحاء العالم منذ عشرات السنين موثقة و مكتوبة و متاحة له و لباقي مسئولي الشركة . و هنا أدركت أهمية التوثيق و تناقل الخبرات ، و عرفت أحد أهم أسباب ما قد يسمي بالتقدم الاداري و التخلف الاداري ، الا و هو التوثيق نعود لموضوعنا :) و عليه فان توثيق البرنامج من الأهمية بمكان لك و لغيرك ، فنصيحتي لكم و لنفسي الا نتجاوز المرحلتين الأوليين ، و الا نمر عليهما مرور الكرام ما يلي هو تصورات شخصية ، من الخبرة و بعض الكتب ، و لا يجب اعتباره مرجع علمي ، و انما هي تصوراتي و خبرتي أنقلها اليكم للنقاش حولها : أولاً تحليل النظام : تحليل النظام هو فهمنا للنظام المطلوب انشاؤه و لكي نصل الي هذا الفهم : 1. نفهم قواعد نظام العمل 2. مواصفات احتياجات و متطلبات العميل 3. تخطيط مبدئ لشكل واجهة الاستخدام ( من ناحية طلبات العميل ) أو بمعني آخر هي مرحلة تجميع للبيانات الخاصة بالنظام المطلوب عمل برنامج له و يمكن تصنيف المعلومات الي : 1. المدخلات 2. المخرجات 3. النقاط الواجب مراعاتها 4. وصف عام لعمل البرنامج و مجاله أي ماذا سيغطي و ماذا لن يتطرق اليه هذا البرنامج _ و ما هي النقاط التي تؤثر فيه 5. رسم Flow Chart يمثل آلية نظام العمل • و في نهاية هذه المرحلة يتم اعداد مستند يسمي مستند لتحليل النظام . ثانيا تصميم النظام : بناء علي مستند تحليل النظام تبدأ هذه المرحلة : ملاحظة : أن هذا الكلام كله بعيدا عن التصميم و الجداول و الكائنات و الأكسس ككل ، و انما مجرد وصف و تحليل منطقي للنظام ، و لا يرد ذكر الجداول الا في المرجلة الاخيرة و هي بدء تنفيذ البرنامج ( تصميم الجداول) باختصار ما يتم فى هذه المرحلة هو تصميم البرنامج علي الورق ، أي تصور للبرنامج و امكانياته و هيكله و الاهدافه و قواعده و الحركة داخله ، و العمل اليومي عليه ، و تفاصيل شاشاته و استعلاماته و تقاريره أو بمعني أبسط ، توثيق ما يتخيله المبرمج عن البرنامج قبل أن يبدأ التنفيذ . و فى هذا فائدة عظيمة لأن التوثيق مفيد سواء فى حال الرغبة فى التعديل بعد فترة أو حينما يكمل مبرمج آخر العمل في المشروع كما ذكرنا سابقا. أحيانا أحب أن أسمي هذه المرحلة ( شخبطة البرنامج ) ، فانما هي تنفيذ البرنامج و توثيق الفكر المتبع فيه و لكن علي الورق. أو أيضا بمعني آخر ترجمة و توثيق للمعطيات التي حصل عليها المبرمج ( علي الورق ) و توجد بعض الاساليب العلمية فى التصميم مثل اسلوب علاقات الكائنات Entity relationship diagram ERD و الذي يغني عن الخبرة فى ترجمة التحليل و التصميم الي تنفيذ ( جداول ) ، و سنعرض له فى موضوع منفصل و أحد التصورات عن مرحلة التصميم هي كالتالي 1- الوصف العام للنظام a. وصف ملخص للنظام b. أهداف النظام نقاط محددة توضح فوائد النظام و الخدمات الني يقدمها c. هيكله هيكل تنظيمي Flow Shart يوضح الاجزاء الرئيسية للبرنامج ( من حيث التقسيم و ليس النماذج) أي بمعني أكثر وضوحا الاعمال الرئيسية التي يغطيها البرنامج و التفاصيل التي تندرج تحت كل منها d. القواعد العامة لاستخدامه وصف عام و ليس تفصيلي لشاشات العرض وصف عام لشاشات الادخال اللانتقال بين الحقول و الاختصارات المستخدمة قواعد عامة لكتابة المدخلات قواعد عامة فى النماذج قواعد عامة فى الطباعة و التقارير قواعد تسمية الشاشات قواعد تسمية التقارير أنواع الصلاحيات المختلفة فى البرنامج 2- الحركة داخل النظام فى هذا الجزء ، سيكون هناك شكل للشاشات و التقارير ( كروكي ) بدون تنسيق مصحوب بوصف للبيانات الموجودة فى كل شاشة و بيانات الحركة منها الي الشاشات المختلفة ، و بيان الصلاحيات النختلفة للتعامل مع كل شاشة و كل جزء منها ان وجد . 3- العمل اليومي و الدوري علي البرنامج وصف للعمل اليومي علي البرنامح و ما يقوم به كل من المستخدمين وصف للعمل الدوري علي البرنامح ( المهام التي يقوم بها المستخدم فى نهاية كل فترة أو كل مرحلة من مراحل الاستخدام ) و ما يقوم به كل من المستخدمين ( مثل الجرد مثلا ) 4- ادارة النظام وصف للعمليات الخاصة بالادارة و النقاط الواجب مراعاتها فيها مثل النسخ الاحتياطي ، و التوجيه علي الشبكة ، ... و بعد انتهاء هذا الجزء ، يبدأ الجزء الثاني من المرحلة الثانية و هو ال ERD كما سبق او تخطيها و القفز مباشرة الي تصميم– و هذا الحل سيعتمد علي الخبرة أكثر من الترتيب العلمي للعمل ، و فى حالة الدخول الي التصميم مباشرة يجب الاهتمام بتوثيقه و شرحه شاملا التصميم و العلاقات و كيفية اختيارها ثالثا التنفيذ و هو الذي يبدأ بتحديد الهيكل العام للجداول و العلاقات بعض الملاحظات الخاصة بالتسميات • يجب كون التسميات للحقول و الكائنات بالانجليزية ، و يفضا استخدام نسخة الأكسس ذات واجهة التطبيق اللإنجليزية – و هذا ليس حبا فى الانجليزية و لكن لأن العربية لها مشاكل مع كتابة أكود البيزيك . • يجب وجود نظان ثابت للتسميات بمعني أنه علي سبيل المثال فى البداية كنت أفضل البدايات المختصرة للتسميات مثل : o كل النماذج تبدأ بحرف F – فيكون نموذج الموظفين اسمه FEMP أو F_EMP o كل التقارير تبدأ ب R و الاستعلامات تبدأ ب Q و بعد عدة مناقشات لنظام تسميات طرحه الأخ أبو هاجر استنادا الي موقع ميكروسوفت ، وصل المتناقشين الي قناعة بأن هذا النظام هو الأفضل الا و هو الموجود هنا http://www.officena.net/Tips/Naming.htm هناك بعد الاقتراحات الاضافية : للتسميات ، و هي ليس لها ممرجع و لكن تفضيلات شخصية : o في حالة كون الحقل يعبر عن كود فيكون فى نهايته C مثلا كود العامل EMP_C أو EMP-C أو EMPC مثلا o في حالة كون الحقل يعبر عن اسم فيكون فى نهايته N مثلا كود العامل EMP_N أو EMP-N أو EMPN مثلا o في حالة كون الحقل يعبر عن وصف فيكون فى نهايته D أو DES مثلا كود الحالة STATUS_D أو STATUS -D أو STATUS-DES مثلا موضوع الحوار حول هذه الحلقة من هنا و هو مفتوح للحوار من 5-7-03 حتي 11-7-03 بإذن الله
  7. محتويات الموضوع : ما هو الأكسس مستويات إستخدام الأكسس الأكسس و قواعد البيانات العلائقية Relational Database مفهوم أن ما تراه هو ما تحصل عليه (WYSIWYG) بعض الملحوظات علي تحميل الاكسس 2002 التعامل مع الاكسس لأول مرة لماذا نستخدم قواعد البيانات ما هو الأكسس الأكسس هو نظام لادارة قواعد البيانات Database Management System : DBMS و بمعني آخر يقوم بتخزين البيانات ، و استرجاعها و عرضها بعدة طرق و بأكثر من أسلوب و من خلال الأكسس يمكن اعداد نماذج ادخال سهلة التناول و الاستخدام ، يتم من خلالها ادخال المعلومات. و تلك المعلومات يمكن استرجاعها و عرضها بعدة طرق مختلفة . و أهم ميزاته أنه يمكن توفير الكثير من المهام المتكررة بمجرد اعداد نموذج العرض أو التقرير المناسب و الذي يستقي بياناته تلقائيا من خلال المعلومة التي أدخلت أو حدثت و كل ماعلي المستخدم بعد ذلك هو فتح نموذج العرض أو التقرير و عرضه أو طباعته أي أن المعلومة تدخل مرة و احدة ويؤثر ذلك فى محتويات كل نماذج العرض و التقارير الموجودة بدون أن يبذل المستخدم أي مجهود بجانب الاعداد الاولي للبرنامج و ادخل البيانات . و سيتضح ذلك بالتفصيل لاحقا نتيجة لوجود تقنية ال Object Linking and Embedding : OLE يمكن لاكسس احتواء أي عمل معد بواسطة باقي عائلة الاوفيس مثل الوورد ، الاكسل ، والباور بوينت كما يمكنك الاكسس من ربط البرنامج ببيانات متنوعة موجودة علي جهاز خادم (سيرفر) أو علي نفس الجهاز ، و أيضا بالعديد من الأنواع مثل البيانات الموجودة فى اكسيل مثلا بالاضافة الي الفورم و التقارير أيضا هناك تطوير كبير فى تقنية صفحات الاكسس Access Pages و التي أصبحت تمكنك من اعداد نماذج قابلة للعرض و تعديل البيانات من خلال شبكة داخلية او حتي من خلال الانترنت ، كما سنري لاحقا ، و قد كانت هذه التقنية فى اكسس 2000 لا تتناسب سوي مع متصفح الاكسبلورر 5 أما الآن فهي أعم و أشمل مستويات إستخدام الأكسس يتضح من الرسم أعلاه أن برنامج أكسس يصلح للاستخدام بعدة مستويات : المستوي الاول : أبسط استخدام و هو التعامل مع كائنات الاكسس الاساسية الجداول الاستعلامات النماذج التقارير المستوي الثاتي : و هو استخدام الدوال الجاهزة و التعبيرات المستوي الثالث : الماكروهات الجاهزة المستوي الرابع : استخدام فيجوال بيزيك التطبيقات ، مما يمكنك من بناء تطبيقات معقدة المستوي الخامس و الأعلي : هو استخدام دوال API : Application Programming Interface و التي بواستطعها يمكن استدعاء دوال أو ملفات DLL مبنية بلغات أخري حيث DLL هو اختصار Dynamic Link Library و كل من المستويات الخمسة يسمح ببناء تطبيق و لكن المستوي يختلف :yess: الأكسس و قواعد البيانات العلائقية Relational Database يقدم الاكسس نموذجا رائعا لادارة قواعد البيانات العلائقية ، بمعني القدرة علي إدارة أكثر من جدول داخل ملف واحد بحيث ترتبط هذه الجداول بعلاقات متعددة تسمح بالتعامل مع البيانات الموجودة فى هذه الجداول من خلال نموذج واحد فمثلا اذا كان هناك جدول يحتوي علي بيانات مجموعة من الأفراد، و هناك بيانات متعددة تخص الادارات التي يعملون بها فبدلا من تضمين جميع بيانات الادارة أمام كل موظف فى الجدول ، يتم تخزين بيانات الادارات داخل جدول منفصل و يكتفي باضافة كود الادارة امام كل سجل فى جدول الموظفين ، و في هذا وفر كبير لنفرض ان بيانات الادارة مكونة من عدد 10 أنواع من البيانات فلو كان لدينا 1000 موظف و أردنا تسجيل بيانات الادارة كاملة مع بيانات كلموظف لتكررت بيانات الادارات (العشر أنواع ) 1000 مرة بدلا من تكرارها 5 مرات فقط فى جدول الادارات (بعدد الادارات) بالاضافة الي حقل واحد فقط فى جدول الموظفين و هو رقم الادارة هو الذي سيتواجد بعدد 1000 مرة أي أن كل موظف نضع مع بياناته كود ادارته فقط و نسجل بيانات الادارات الخمسة فى جدول منفصل و بربط جدولي الموظفين و الادارات نستطيع الحصول علي جميع البيانات مع التوفير فى حجم البيانات ، مما يوفر سرعة أكبر فى التعامل مع البيانات أيضا حقل رقم الادارة سيكون عادة رقم ، و هو بذلك يكون أسهل فى البحث و الترتيب من العشر بيانات الخاصة بالادارة و منها بالطبع أسماء. و الآن لنتوقف قليلا امام بعض المصطلحات التي استخدمناها ، لعلها تكون جديدة علي بعض الأخوة ، و سنعرض لها علي عجالة و سيأتي تفصيلها لاحقا : الجداول هي مكان تخزين البيانات فى أكسس ، و يتكون كل جدول من عدة حقول أو أماكن لتخزين البيانات يتم تخزين بيان معين فى كل منها ، فمثلا رقم الموظف و اسمه و عمره اذا يصير لدينا 3 حقول فى جدول اسمه الموظفين . و اذا أدخلنا هذه البيانات لعدد 100 موظف أي مائة سطر يصبح لدينا عدد مائة سطر ( أي مائة سجل ) و هذا تعريف الجدول و الحقل و السجل علي عجالة مؤقتة مفهوم أن ما تراه هو ما تحصل عليه (WYSIWYG) What you See Is What You Get WYSIWYG تشترك النماذج و التقارير فى هذه الخاصية أي أنك يمكنك تنسيق الكائنات فيها كما تراها علي الشاشة ثم تشاهد كيف سيكون المنتجة النهائي بالضغط علي زر . بعض الملحوظات علي تحميل الاكسس 2002 الحد الأدني المطلوب لمواصفات الجهاز ( نظريا) : PIII 350 MB , 64MB RAM و للاستخدام المريح : 128 MB RAM التحويل بين الاصدارات المختلفة لأكسس أكسس 2002 يوفر الدعم الكامل لملفات اكسس 2000 ، مما يتيح اامستخدم العمل علي أي من الاصدارين ، و لكن بالطبع عدم استخدام نظام ملفات 2002 سيحرم المستخدم من بعض الاضافات الجديدة و النظام الافتراضي هو 2000 مما يناسب من يوجد لديه مستخدمين يعملون علي اكسس 2000 ، و لتغيير النظام الافتراضي : Tools , options, Advanced , Default File Format و أكسس 2002 يقبل التحويل من الاصدارات رقم 2و95و2000 الي 2002 التعامل مع الاكسس لأول مرة مكونات قاعدة البيانات : تتكون قاعدة البيانات من مما يلي : الجداول : لتخزين البيانات الاستعلامات : لاسترجاع البيانات المطلوبة و ايضا لأداء بعد الافعال مثل التحديث و الحذف و الالغاء و تكوين جدول جديد النماذج : واجهة استخدام للاضافة و التحديث و الحذف علي البيانات الموجودة فى الجداول ( شاشات تعامل مع البرنامج) التقارير : لتحليل أو لطباعة البيانات بشكل معين. صفحات الاكسس : للعرض و التحديث و لتحليل البيانات المخزنة فى الجداول من خلال شبكة الانترنت أو من خلال شبكة محلية بالاضافة الي الماكروهات و الموديول و هنا نؤكد ثانية علي الميزة الاساسية فى استخدام قواعد البيانات وهي أنك تخزن البيانات فى الجداول مرة واحدة و عندما تحدثها ، يتم تحديثها بصورة آلية فى جميع الأجزاء التي تظهر و تؤثر فيها هذه المعلومة آليــــــــــــــــــاً موضوع الحوار حول هذه الحلقة من هنا و هو مفتوح للحوار من 5-7-03 حتي 11-7-03 بإذن الله
  8. بسم الله الرحمن الرحيم أهلا بكم فى أولي دورات موقع أوفيسنا أولا كعادة الدورات ، أعرفكم بنفسي المعلومات الشخصية : -محمد طاهر - مهندس مدني - ماجيستير فى إدارة المشروعات - العمر وقت افتتاح الدورة 34 عاما و ثمانية أشهر و يوم واحد :) (( لحساب العمر موضوعان فى قسم الاكسيل إضغط هنا )) - عن خبرتي فى المنتديات : عضو شرف فمشرف سابق للأكسس و الأوفيس فمراقب فى الفريق العربي ((سابقا )) و إعتذرت عن المهام الادارية من شهرين تقريبا . - عن خبرتي فى الأكسس : أعددت تطبيقات عديدة علي الأكسس و أظنها ناجحة من وجهة نظر مستخدميها علي الأقل . - عن خبرتي فى التدريس : سبق لي التدريس لترمين متتاليين فى إحدي كليات الهندسة كمعيد . ثانيا : حول الدورة سيتم بإذن الله فتح حلقة للنقاش حول كل مجموعة مواضيع بعد طرحها ، و كما أرحب بالاستفسارات ، أرحب بالتعديلات و التصحيحات و الإضافات . و الكثيرين ممن سجلوا فى الموقع لديهم بالفعل الخبرة الكافية للتصحيح و الاضافة. لن اطيل أكثر من ذلك و لنبدأ أولي دورات الموقع ، و أسألكم أن تدعوا لنا بالتوفيق فى تقديم عمل مفيد . و أن تدعوا لي و لفريق الموقع باخلاص النية فى ما يقدم من أعمال فى هذا المنتدي و فى الحياة عموما . مع تحياتي محمد طاهر
  9. بارك الله فيك أخي أبو هادي فكرة الدالة جميلة جدا ، و طبعا أسرع أضفتها الي المثال السابق ، و بعد إذنك وضعت فيها شرط التحقق من أن التاريخ الثاني أكبر من الأول و سأترك الدالة القديمة كمثال علي الكود فى نفس المثال :(
  10. السلام عليكم تصوري عن ذلك أنه يجب التعامل معه من خلال قاعدة بيانات و ليس إكسيل فمحاولة التعامل معه فى الاكسيل ، ستكون أقرب للتحايل علي المشكلة من حلها الأمثل و اذا وجدت حل آخر سأخبرك و سأدل بعض الأصدقاء ممن لهم خبرة بشئون العاملين علي المشاركة ، لعل أحدهم يأتينا بفكرة مناسبة مع تحياتي
  11. هذه المشاركة نقلا عن مشاركة لابي هاجر طريقة تسميات الكائنات فى الاكسس تلخيص من موقع ميكروسوفت من هنا
  12. كلامك سليم اخي رضا و شكرا لك علي المجهود الكبير و فى انتظار المثال :)
  13. اقترح جميل و سيتم باذن الله تعالي تنفيذه
  14. السلام عليكم بالنسبة ل 2000 فأعتقد أنه من الافضل أن نركز علي الاكس بي ، لانه حتي الاكس بي أصبح علي وشك أن يصبح (( الاصدار السابق )) :d بالنسبة للملف ، انا اتبعت الطريق السهل (( استيراد الجداول )) و الذي يمكنك جعله أصعب قليلا بوضع كلمة سر علي القاعدة قبل التحويل الي MDE بالنسبة لباقي الحماية ، سيكون من الصعب محاولة استنتاج كيفية التغلب عليها دون أن تكون علي جهاز عامل (( أي أن القاعدة تكون مفعلة علي جهاز و مطلوب تفعيلها علي آخر )) لأن الحمايات من نوع تسجيل رقم القرص الصلب أو اللوحة الأم لأو المعالج (( سواء قبل أو بعد تشفيرها )) ، تكون اما فى جدول ملف ريجستري و بالتالي فى كل الاحوال استنتاجها لن يكون سهلا ، و يحتاج لمحاولات كثيرة ، و اعتقد انه يصعب علي أي شخص كسر مثل هذه الحماية بسهولة :d و لم يسبق أن تعرضت لكسر حماية مماثلة ، و ان كان هذا ممكن ببعض المجهود و الحظ و الاستنتاج ، حيث أنه فى النهاية لابد ان تخزن المعلومة فى أحد الاماكن الثلاثة السابقة (( علي حد علمي )) و بالتالي فالوصول اليها صعب و لكن ليس مستحيل و كحماية من النقل أعتقد أن هذا كافي جدا و يزيد من صعوبته ، تشفير البيانات لكن ما لفت نظري حقيقة هو أنه لم أتمكن من استعمال التعديل فى ال MDE كما حدث فى المناقشات السابقة نتيجة عدم تعريف الصلاحية :yess: و يبدو أن البحث عن المكان المسجل فيه الصلاحية إن تم قبل فتح أي نموذج فى البرنامج لا تنفع طريقة محرر البيزيك السابقة ، أم هناك سبب آخر منع التعديل بطريقة محرر البيزيك ؟؟
  15. أخي رضا : المساهمه العضو قام بعرض مثال الحصول على رقم المعالج ونوعه Visitor_OM قام بعرض وتنفيذ دالة استبعاد الحروف من الرقم واختار عدد معين أبو هادي قام بعرض مثال على إخفاء نافذة الأكسس قرناس قام بعرض كود إخفاء نافذة الأكسس في مثال مفكوك ابن مسقط قام بالتجميع رضا عقيل
  16. المنتدي غير مسموح بتحميل الملفات اليه من الاعضاء ( قاعدة عامة ) فاشرح ما تريد أو ضع الملف فى أي موقع مجاني اذا كان لابد من ذلك ، و لكن نحن نحبذ مناقشة الموضوعات و المشاكل بصفة عامة كي تكون فائدتها أكبر لمن يقرأ الموضوع لاحقا جرب الملف السابق فقط قف فى أي خلية من الخلايا الخضراء ، ثم شغل الماكرو و أخبرني بالمشكلة
  17. جرب هذا قف فى اي خلية من الخضراء فقط و شغل الماكرو سيعطيك الايام المتاحة ثم يسأل عن الاجازات المطلوبة ثم يوزعها Sub agazat() Dim myrem(3) As Integer, Mydone(3) As Integer 'MsgBox ActiveCell.Offset(-2, 2).Value ' ActiveCell.Offset(-2, 2).Select ' Exit Sub myrem(1) = ActiveCell.Offset(-2, 2).Value myrem(2) = ActiveCell.Offset(-1, 2).Value myrem(3) = ActiveCell.Offset(0, 2) Dim myval As Integer, Available As Integer, x As Integer Available = myrem(1) + myrem(2) + myrem(3) MsgBox "Available Days : " & Available x = InputBox("Enter no of days", "Vication Dist", 1) If x > Available Then MsgBox "No of days > available vications" Exit Sub End If If myrem(1) > x Then Mydone(1) = x Mydone(2) = 0 Mydone(3) = 0 GoTo endy Else Mydone(1) = myrem(1) Mydone(2) = x - Mydone(1) Mydone(3) = 0 If Mydone(2) > myrem(2) Then Mydone(3) = Mydone(2) - myrem(2) Mydone(2) = myrem(2) End If End If endy: ActiveCell.Offset(-2, 1) = Mydone(1) + ActiveCell.Offset(-2, 1) ActiveCell.Offset(-1, 1) = Mydone(2) + ActiveCell.Offset(-1, 1) ActiveCell.Offset(0, 1) = Mydone(3) + ActiveCell.Offset(0, 1) End Sub Vic_Empl.zip
  18. Function GetFRSAT(Mydate1 As Date, Mydate2 As Date) As Long If Mydate2 < Mydate1 Then Dim tempdate As Date tempdate = Mydate1 Mydate1 = Mydate2 Mydate2 = tempdate End If Dim Datediff As Long, vic As Long Datediff = Mydate2 - Mydate1 + 1 vic = 0 For i = 1 To Datediff If Weekday(Mydate1 + i - 1) > 5 Then vic = vic + 1 Next i GetFRSAT = vic End Function تم تعديل المثال للمرة الثانية و الكود أعلاه بعد اضافة الأخ أبو هادي : Sat_Fr_vications.zip
  19. بناء علي طلبات و نصائح من أخوة أفاضل تم تغيير نظام الدورة :d بإذن الله ستكون الدورة مفتوحة للجميع و ستبدأ بإذن الله فى 5-7-2003 فى القسم المخصص للدورات و قبل الافتتاح سيتم شرح نظام الدورة و طريقتها فى القسم المخصص للدورات و سيتم تعديل صيغة الاعلان عن الدورة فى الصفحة الرئيسية اليوم مساء بإذن الله و سيصل اعلام بريدي بكل موضوع يضاف الي المسجلين السابقين فى الدورة و من يريد الانضمام الي القائمة البريدية للدورة ، فليتفضل مشكورا بارسال بريد بعنوان officena Registration الي mtarafa@hotmail.com أما الدورة و حلقات الحوار حولها فستكون مفتوحة بإذن الله تعالي و ليس مقصورة علي من سجل فقط و التسجيل الاضافي هو فقط للاعلام البريدي بخصوص جديد الموضوعات و الدورة و نسألكم أن تدعوا لنا بالتوفيق فى أولي دورات الموقع
  20. DAvg Method تستخدم دالة DAvg لحساب المتوسط لمجموعة من القيم الموجودة فى مجموعة محددة من السجلات ( مجال ) و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة صيغة الدالة : DAvg(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات الرقمية المطلوب الحصول علي متوسط لها ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات : الحقول التي تحوي قيم Null لا تدخل فى حساب المتوسط يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DAvg or Avg كقيمة محسوبة فى استعلام تجميع Totals Query ، الفرق أنه فى حالة DAvg يتم حساب المتوسط قبل التجميع ، و فى حالة Avg يتم التجميع قبل حساب المتوسط من ميزات استخدام ال Davg هو حساب القيمة محسوبة فى عنصر تحكم موجود فى نموذج بناء علي بيانات مختلفة عن مصدر بيانات النموذج . قد يكون من المناسب عند استخدامها فى عنصر تحكم فى نموذج مستمر أن توضع فى رأس أو تذييل النموذج لكي لا تتغير القيمة مع التنقل بين السجلات . نوع البيانات المعادة من الدالة كمتوسط لقيم الحقول الرقمية ، تكون من نوع double . فاذا كان هناك حاجة لتحويلها الي نوع رقمي آخر فيرجي مراعاة ذلك بالرغم من أنك تستطيع الحصول علي متوسط القيم لحقل فى جدول مرتبط ، الا أنه ينصح فى هذه الحالة بعمل استعلام مبني علي الجدولين و استخدامه كمصدر لبيانات النموذج أو التقرير. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update . مثال : =DAvg("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نحسب المتوسط لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع =DAvg("[price]", "Orders", "[productID] = 5") DFirst Method تستخدم دالة DFirst للحصول علي قيمة حقل محدد فى أول سجل فى جدول أو استعلام.. و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. و يكون نوع البيانات للقيمة الناتجة منها Variant صيغة الدالة : DFirst(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات الرقمية المطلوب الحصول علي اول قيمة لها، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات : اذا أردت الحصول علي أول سجل فى مجموعة سجلات ( مجال محدد ) ، يجب أن تنشيئ استعلام و يكون ترتيبه تنازليا اعتمادا علي هذا الحقل ، و تقوم باسناد قيمة الخاصية TopValues = 1 . مثال : = DFirst ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد الحصول علي أول قيمة عشوائية لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DFirst ("[price]", "Orders", "[productID] = 5") للحصول علي قيمة عشوائية للتاكد من تجانس البيانات ، في نافذة ال immediate فى محرر الفيجوال بيزيك (للحصول عليها اضغط CTR+G ) نكتب المثال الاتي ? DFirst("[Orders]![OrderDate]", "[Orders]") -------------------------------------------------------------------------------------------- DLast Method تستخدم دالة DLast للحصول علي قيمة حقل محدد فى آخر سجل فى جدول أو استعلام.. و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. و يكون نوع البيانات للقيمة الناتجة منها Variant صيغة الدالة : DLast(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات الرقمية المطلوب الحصول علي آخر قيمة لها ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات : اذا أردت الحصول علي أول سجل فى مجموعة سجلات ( مجال محدد ) ، يجب أن تنشيئ استعلام و يكون ترتيبه تصاعديا اعتمادا علي هذا الحقل ، و تقوم باسناد قيمة الخاصية TopValues = 1 . مثال : = DLast ("[Orders]![price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد الحصول علي آخر قيمة عشوائية لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DLast ("[Orders]![price]", "Orders", "[productID] = 5") للحصول علي قيمة عشوائية للتاكد من تجانس البيانات ، في نافذة ال immediate فى محرر الفيجوال بيزيك (للحصول عليها اضغط CTR+G ) نكتب المثال الاتي ? DLast("[Orders]![OrderDate]", "[Orders]") ------------------------------------------------------ DCount Method تستخدم دالة DCount للحصول علي عدد السجلات فى جدول أو استعلام . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. صيغة الدالة : Expression.DCount(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات التي تريد عدها ا ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات : تستخدم dcount لمعرفة عدد السجلات فى مجال محدد ، عندما لا نكون بحاجة لمعرفة القيم الخاصة بهذه السجلات و لكن ببساطة عددها. اذا كنت تريد مجرد عد كل السجلات فى تقرير ، استخدم دالة Count و التي تم تصميمها بحيث تحصل علي العدد بصورة سريعة . لذلك فى حالة تعبير فى استعلام استخدم Count بدلا من DCount . و استخدم DCount اذا كنت تريد العد من داخل الكود أو الماكرو. يمكن إستخدام DCount اذا كنت تريد الحصول علي عدد السجلات التي تحوي حقل معين ، و هذا الحقل المعين ليس موجودا فى مصدر بيانات النموذج أو التقرير الذي تقوم بالحساب فيه. الحقول التي تحوي قيم Null لا تدخل فى حساب عدد السجلات ، الا إذا كانت قيمة ال expr تساوي * ، أي أنه فى حالة كون ال expr يساوي * تقوم الدالة بعد جميع السجلات حتي تلك التي تحوي حقول Null . مثال : intX = DCount("*", "Orders") اذا كان المجال المحدد جدول به حقل مفتاح ، فيمكنك أن تضع قيمة ال expr تساوي حقل المفتاح ، حيث أنه لن يكون أبدا Null . اذا كانت expr تحوي أكثر من حقل ، يكون الفاصل بينها اما + و إما & ، اذا كان الفاصل ( & ) فان دالة dcount تقوم بعد السجلات فى أي من الحقول المذكورة ، أما اذا استخدمنا ال ( + ) فان الدالة تقوم بعد السجلات فى كل الحقول المذكورة . مثال : intW = DCount("[ShipName]", "Orders") intX = DCount("[ShipRegion]", "Orders") intY = DCount("[ShipName] + [ShipRegion]","Orders") intZ = DCount("[ShipName] & [ShipRegion]","Orders") intW = 831 intX =323 intY =323 intZ =831 ملاحظة : ال ampersand أي ال (&) هي أفضل معامل يمكن استخدامه فى الصاق النصوص ، و يجب تجنب استخدام ال (+) الا فى حالة جمع الارقام . القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update . مثال : = DCount ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني نقوم بالعد لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DCount ("[price]", "Orders", "[productID] = 5") ---------------------------------------------------------------------------------------- DLookup Method تستخدم دالة DLookup للحصول علي قيمة حقل محدد من مجموعة سجلات (مجال) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. و يكون نوع البيانات للقيمة الناتجة منها Variant صيغة الدالة : DLookup(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات التي تريد اعادتها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات تعيد الدالة DLookup قيمة وحيدة بناء علي المعايير التي تحددها فى جزء ال criteria فى الدالة ، و هذا الجزء كما ذكرنا خياري ، فاذا لم نحدد المعيار فان الدالة تعيد قيمة عشوائية من ضمن المجال. اذا لم يوجد سجل يوفي الشروط المحددة فى المعيار ، فان الدالة DLookup تعيد قيمة Null . اذا حقق أكثر من سجل المعيار المطلوب فان الدالة ااا تعيد أول حدوث لتحقيق الشرط ، أي قيمة الحقل فى أول سجل يحقق المعيار ، علي الرغم من وجود سجلات أخري تحققه . لذا يفضل تحديد الشرط بدقة بحيث يعيد سجل وحيد Dim varX As Variant varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1") يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكنك استخدام DLookup لاظهار قيمة حقل ليس من ضمن البيانات فى مصدر بيانات النموذج أو التقرير لنفرض أن لديك نموذج تفاصيل الطلبيات و هو مبني علي جدول تفاصيل الطلبيات ، و تريد إدراج اسم المنتج من جدول المنتجات فى مربع نص علي النموذج، بجيث يكون بالطبع يساوي رقم المنتج الذي يظهر فى مربع نص آخر علي النموذج اسمه ProductID. فنضع الكود التالي فى مربع النص الذي نريد إظهار الاسم فيه =DLookup("[ProductName]", "Products", "[ProductID] =" _ & Forms![Order Details]!ProductID) بالرغم من أنك تستطيع الحصول علي قيمة حقل فى جدول مرتبط باسنخدام DLookup ، الا أنه ينصح فى هذه الحالة بعمل استعلام مبني علي الجدولين و استخدامه كمصدر لبيانات النموذج أو التقرير. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update . DMax Method تستخدم دالة DMax للحصول علي القيم القصوي فى مجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. و يكون نوع البيانات للقيمة الناتجة منها Variant صيغة الدالة : DMax(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات التي تريد اعادة اقيمة القصوي لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات الدالة DMax تعيد أقصي قيمة تحقق المعيار المحدد ، و هذا فى حالة الحقل الرقمي ، أما فى حالة الحقل النصي فانها تعيد أو ل أو آخر قيمة بحسب الترتيب الابجدي. الدالة DMax تتجاهل قيم ال Null فى حقل البحث ، و أيضا اذا لم تجد حقل يحقق المعيار المحدد فانها تعيد القيمة Null. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DMax او Max فى حقل محسوب فى استعلام تجميع ، فى حالة DMax يتم اختبار القيم قبل تجميعها و فى حالة Max يتم التجميع ثم اختبار القيم. اذا كنت تريد ببساطة حساب أقصي قيمة فى مجال محدد فاستخدم الدالة Max . يمكنك استخدام DMax لاظهار أقصي قيمة حقل ليس من ضمن البيانات فى مصدر بيانات النموذج أو التقرير. بالرغم من أنك تستطيع الحصول علي قيمة حقل فى جدول مرتبط باسنخدام DMax ، الا أنه ينصح فى هذه الحالة بعمل استعلام مبني علي الجدولين و استخدامه كمصدر لبيانات النموذج أو التقرير. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update . يمكنك استخدام DMax فى مربع نص حينما تريد تحديد معيار لتقليص المجال الذي تنفذ عليه الدالة مثال : = DMax ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DMax ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = DMax("[Freight]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ. DMin Method تستخدم دالة DMin للحصول علي القيم الدنيا فى مجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. و يكون نوع البيانات للقيمة الناتجة منها Variant صيغة الدالة : DMin(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الذي يحوي البيانات التي تريد اعادة اقيمة الدنيا لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات الدالة DMin تعيد أقل قيمة تحقق المعيار المحدد ، و هذا فى حالة الحقل الرقمي ، أما فى حالة الحقل النصي فانها تعيد أو ل أو آخر قيمة بحسب الترتيب الابجدي. الدالة DMin تتجاهل قيم ال Null فى حقل البحث ، و أيضا اذا لم تجد حقل يحقق المعيار المحدد فانها تعيد القيمة Null. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DMin او Min فى حقل محسوب فى استعلام تجميع ، فى حالة DMin يتم اختبار القيم قبل تجميعها و فى حالة Min يتم التجميع ثم اختبار القيم. اذا كنت تريد ببساطة حساب أقصي قيمة فى مجال محدد فاستخدم الدالة Min . يمكنك استخدام DMin لاظهار أقل قيمة حقل ليس من ضمن البيانات فى مصدر بيانات النموذج أو التقرير. بالرغم من أنك تستطيع الحصول علي قيمة حقل فى جدول مرتبط باسنخدام DMin ، الا أنه ينصح فى هذه الحالة بعمل استعلام مبني علي الجدولين و استخدامه كمصدر لبيانات النموذج أو التقرير. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update . يمكنك استخدام DMin فى مربع نص حينما تريد تحديد معيار لتقليص المجال الذي تنفذ عليه الدالة مثال : = DMin ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DMin ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = DMin("[Freight]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ. DStDev Method تستخدم دالة DStDev للحصول علي الانحراف المعياري لمجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. صيغة الدالة : DStDev(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الرقمي الذي يحوي البيانات التي تريد حساب الانحراف المعياري لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات تستخدم هذه الدالة لحساب الانحراف المعياري لعينة من السكان اذا كان المجال المحدد يحوي أقل من عدد 2 سجل ، فان هذه الدالة تكون قيمتها Null مما يدل علي أن الانحراف المعياري لم يمكن حسابه. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DStDev او StDev فى حقل محسوب فى استعلام تجميع ، فى حالة DStDev يتم الحساب قبل التجميع و فى حالة StDev يتم التجميع ثم الحساب . اذا كنت تريد ببساطة حساب أقصي قيمة فى مجال محدد فاستخدم الدالة StDev. القيمة المعادة من هذه الدالة تكون من نوع Double . و يجب مراعاة ذلك عند ادخالها فى عمليات حسابية. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update. يمكنك استخدام DStDev فى مربع نص حينما تريد تحديد معيار لتقليص المجال الذي تنفذ عليه الدالة مثال : = DStDev ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DStDev ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = DStDev ("[price]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ. DStDevP Method تستخدم دالة DStDevP للحصول علي الانحراف المعياري لمجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. صيغة الدالة : DStDevP(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الرقمي الذي يحوي البيانات التي تريد حساب الانحراف المعياري لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات تستخدم هذه الدالة لحساب الانحراف المعياري للسكان ( و ليس لعينة من السكان ) اذا كان المجال المحدد يحوي أقل من عدد 2 سجل ، فان هذه الدالة تكون قيمتها Null مما يدل علي أن الانحراف المعياري لم يمكن حسابه. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DStDevP او StDevP فى حقل محسوب فى استعلام تجميع ، فى حالة DStDevP يتم الحساب قبل التجميع و فى حالة StDevP يتم التجميع ثم الحساب . اذا كنت تريد ببساطة حساب أقصي قيمة فى مجال محدد فاستخدم الدالة StDevP. القيمة المعادة من هذه الدالة تكون من نوع Double . و يجب مراعاة ذلك عند ادخالها فى عمليات حسابية. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update. يمكنك استخدام DStDevP فى مربع نص حينما تريد تحديد معيار لتقليص المجال الذي تنفذ عليه الدالة مثال : = StDevP ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = StDevP ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = StDevP ("[price]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ. DSum Method تستخدم دالة DSum للحصول علي المجموع لمجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. صيغة الدالة : DSum(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الرقمي الذي يحوي البيانات التي تريد حساب الإجمالي لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. يمكنك استخدام هذه الدالة فى فى تعبير محسوب فى استعلام لحساب اجمالي المبيعات التي قام بها مندوب معين ، أو فى عنصر تحكم للحصول علي القيمة التراكمية للمبيعات لمنتج معين ( هذا فى النموذج ، أما فى التقرير فيمكن استخدام خاصية running sum لمربع النص للحصول علي القيمة التراكمية بدون Dsum ) . اذا لم توجد سجلات تحقق المعيار المحدد أو كان المجال لا يحوي سجلات ، فان قيمة الدالة تكون Null. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DSum او Sum فى حقل محسوب فى استعلام تجميع ، فى حالة DSum يتم الحساب قبل التجميع و فى حالة Sum يتم التجميع ثم الحساب . يمكنك استخدام DSum لاظهار أقل قيمة حقل ليس من ضمن البيانات فى مصدر بيانات النموذج أو التقرير. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update . مثال : = DMin ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DMin ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = DMin("[Freight]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ. DVar Method تستخدم دالة DVar للحصول علي تقديرات التنوع لمجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. تستخدم هذه الدالة فى تحليل التنوع خلال عينة من السكان ، مثلا حساب التنوع فى نتائج اختبارات مجموعة من الطلاب. صيغة الدالة : DVar(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الرقمي الذي يحوي البيانات التي تريد حساب التنوع لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري . و يلاحظ أن أي حقل يرد فى هذا الجزء من الدالة لابد أن يكون رقمي . Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات اذا كان المجال المحدد يحوي أقل من عدد 2 سجل ، فان هذه الدالة تكون قيمتها Null مما يدل علي أن الانحراف المعياري لم يمكن حسابه. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DVar او Var فى حقل محسوب فى استعلام تجميع ، فى حالة DVar يتم الحساب قبل التجميع و فى حالة Var يتم التجميع ثم الحساب . اذا كنت تريد ببساطة حساب أقصي قيمة فى مجال محدد فاستخدم الدالة Var. القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update. يمكنك استخدام DVar فى مربع نص حينما تريد تحديد معيار لتقليص المجال الذي تنفذ عليه الدالة مثال : = DVar ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DVar ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = DVar ("[price]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ. DVarP Method تستخدم دالة DStDev للحصول علي الانحراف المعياري لمجموعة سجلات ( مجال ) . و يمكن استخدام هذه الدالة فى كود الفيجوال بيزيك أو فى ماكرو أو فى استعلام أو فى عنصر تحكم به قيمة محسوبة فى نموذج أو تقرير. تستخدم هذه الدالة فى تحليل التنوع لمجموع السكان ( و ليس عينة من السكان ) صيغة الدالة : DVarP(Expr, Domain, Criteria) Expr : قيمة نصية تعرف الحقل الرقمي الذي يحوي البيانات التي تريد حساب التنوع لها بواسطة هذه الدالة ، و هي يمكن أن تكون نص يعبر عن إسم حقل فى جدول أو استعلام ، أو معادلة حسابية علي هذا الحقل ، و فى هذا التعبير يمكن ادراج اسم حقل ، عنصر تحكم فى نمموذج ، ثابت ، أو دالة و لكن فى حالة احتوائه علي دالة فيمكن أن تكون دالة من تصميم المستخدم أو دالة جاهزة فى أكسس ،ـ و لكن لا يمكن أن تكون دالة من دوال المجال التجميعية الأخري . و يلاحظ أن أي حقل يرد فى هذا الجزء من الدالة لابد أن يكون رقمي . Domain : قيمة نصية تعرف مجموعة السجلات التي تمثل المجال ، و يمكن أن تكون جدول أو استعلام و كل من Expr و Domain قيم اجبارية لابد من ادراجها فى الدالة ، أما القيمة التالية Criteria فهي خيارية Criteria : قيمة خيارية ( قد توضع و قد لا توضع ) ، و هي معيار يوضع لتحديد مجال تطبيق الدالة ، و يمكن اعتبارها كشرط مناظر ل WHERE في عبارة SQL ، و في حالة عدم ادراجها يتم تطبيق الدالة علي المجال بأكمله. في حالة ادراج حقل فى هذا المعيار و هذا الحقل غير مدرج فى المجال ، تكون القيمة المعادة من الدالة null ، لذا أي حقل موجود فى المعيار Criteria يجب أن يكون أيضا مدرجا فى المجال. ملاحظات اذا كان المجال المحدد يحوي أقل من عدد 2 سجل ، فان هذه الدالة تكون قيمتها Null مما يدل علي أن الانحراف المعياري لم يمكن حسابه. يمكن استخدام هذه الدالة كمعيار فى الاستعلام العادي أو كقيمة محسوبة فى استعلام تحديث يمكن استخدام DVarP او VarP فى حقل محسوب فى استعلام تجميع ، فى حالة DVarP يتم الحساب قبل التجميع و فى حالة VarP يتم التجميع ثم الحساب . اذا كنت تريد ببساطة حساب أقصي قيمة فى مجال محدد فاستخدم الدالة VarP . القيم التي لم يتم حفظها بعد فى السجلات لا تدخل فى حسابات الدالة ، و لكن لادخالها لابد من حفظ السجل أولا ، و ذلك باختيار حفظ من أمر File أو بالانتقال الي السجل التالي ، أو باستخدام طريقة ال Update. يمكنك استخدام DVarP فى مربع نص حينما تريد تحديد معيار لتقليص المجال الذي تنفذ عليه الدالة مثال : = DVarP ("[price]", "Orders", "[product] = 'mouse'") و المثال يعني أننا نريد إظهار أقصي قيمة لحقل السعر في جدول الطلبيات بشرط أن المنتج = mouse , يلاحظ أن القيمة النصية فى الشرط توضع بين ‘ ‘. و في حالة حقل الشرط رقمي لا توضع = DVarP ("[price]", "Orders", "[productID] = 5") مثال آخر : فى حالة كون الشرط حقل تاريخ موجود علي عنصر تحكم فى نموذج ( مربع نص ) : Dim curX As Currency curX = DVarP ("[price]", "Orders", "[OrderDate] = #" _ & Forms!Orders!OrderDate & "#") و هنا نلاحظ أن عنصر التحكم المسمي OrderDate الموجود علي نموذج orders لم يتم احاطته ب "" ، و ذلك لأن القيمة به متغيرة و تتغير مع تغير السجلات ، و لو أحيطت ب "" لعوملت علي أنها قيمة نصية ثابتة . أيضا نلاحظ أن القيمة المعادة من عنصر التحكم نحيطها ب # و ذلك لأنها من نوع تاريخ.
  21. نسيت أضيف ان الشرح متوافق مع الاصدار اكس بي و مرفق المثال pIVOT.zip
  22. أعتقد أنه بتغيير الاصدار ، عليك باعادة التنسيق و الله اعلم و ربما يوافيك أحد الاخوة باجابة افضل مع تحياتي
×
×
  • اضف...

Important Information