الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دالة Dsum بين تاريخين

مغلق
بدأه حسن عبيد في 9 ديسمبر 2005 · 12 رد · 6,675 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الاخوة الاعضاء لدي استفسار حول دالة Dsum

لدي جدول فيه الحقول التالية

- A حقل /نص - مفتاح اساسي

- B حقل / نص

- C حقل / رقم

- D حقل / تاريخ

وهناك نموذج مبني على الجدول اعلاه

الفكرة هي

مربع نص غير منضم مصدره هو : جمع قيم الحقل C بين تاريخين هما اليوم الاول من التاريخ المدخل في الحقل D واخر يوم من الشهر للتاريخ المدخل في الحقل D ، ياستخدام الدالة Dsum ويتم تحديث قيمة ذلك الحقل بعد ادخال التاريخ في الحقل D

ارجو المساهعة في حل هذه الفكرة

ولكم الشكر الجزيب

#2

اخي الكريم

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

مع ان المسألة معقدة بعض الشيء ولكن سنحاول تبسيطها لك ولبقية الاعضاء حسب الخطوات التالية :

1. قم بإنشاء جدول بإسم TABLE وضع به الحقول التالية ( حسب ما ذكرت في سؤالك )

A حقل / نص - مفتاح اساسي

B حقل / نص

C حقل / رقم

D حقل / تاريخ / وقت تنسيق التااريخ 00/00/000

2. قم بإنشاء نموذج بإسم FORM مبني على الجدول

3. اضف الى النموذج مربعين نص غير منظمين الاول اعطه الاسم E والاخر اعطه الاسم DSUM

ملاحظة 1 : مربع النص E سوف يستخدم لوضع اخر يوم من الشهر اوتوماتيكيا بواسطة دالة في الوحدة النمطية

ملاحظة 2 : مربع النص DSUM سوف يستخدم لجمع الارقام من الحقل C بشرط ان تكون الارقام بين اول الشهر واخر الشهر

4. قم بإنشاء وحدة نمطية جديده وضع بها هذا الكود

Option Compare Database
Option Explicit
'زهـــــره العبدالله
'هذه الدالة تقوم بإظهار تاريخ اخر يوم من الشهر المعطى لها
Function FindEOM(MyDate)
   Dim NextMonth, EndOfMonth
   NextMonth = DateAdd("m", 1, MyDate)
   EndOfMonth = NextMonth - DatePart("d", NextMonth)
   FindEOM = EndOfMonth
End Function

5. انتقل الآن الى النموذج وضع هذه الدالة في مربع النص E

=FindEOM([D])

تقوم هذه الدالة بإظهار اخر يوم من الشهر المعطى لها فمثلا لو تم ادخال تاريخ في مربع النص D مثل 01/01/2005 سيكون اخر يوم في الشهر في مربع النص E هو 31/01/2005

الان انتهينا من مشكلة اظهار اخر يوم في الشهر .

6. ننتقل الان الى عملية جمع القيم بين هذين التاريخين من نفس الشهر اذن لابد من استخدام استعلام اولي لكي يظهر لنا جميع القيم ومن ثم نقوم بتحديد القيم المطلوبه بين تاريخين وسنقوم بعمل مبني على الوحدة النمطية ليكون هناك تاريخين الاول معطى والاخر يتم استخراجه من الوحدة النمطيه ( انظر الى طريقة عمل الاستعلام في المثال ).

7. نحتاج الان الى استعلام اخر ليظهر لنا فقط قيم الحقل C لكي نقوم بتطبيق الدالة DSUM عليه من خلال النموذج ( انظر الى الاستعلام الثاني في المثال )

8 . الان لم يتبقى لنا الا ان نستخدم الدالة DSUM في النموذج كمصدر بيانات على النحو التالي :

ضع هذه الدالة في مربع النص DSUM في النموذج

=DSum("[C]";"[ZA2]")

حيث C هو حقل الارقام في النموذج

و ZA2 هو الاستعلام الثاني

وبهذا تم حل المشكلة نهائيا وتستطيع مشاهدة المثال

DSUM.rar

اختكم

زهره

1
#3

في البداية اعتذر عن تأخري في المشاركة بعد اجابة الاخت زهرة على سؤالي وذلك نتيجة لظروف لم استطع بسببها الدخول الى النت ( وأقول لها شكرا جزيلا على اهتمامك واجابتك الدقيقة )

أما بالنسبة للأخت زهرة مرة اخرى فأقول لها جزاك الله كل خير وما شاء الله (أخلاق وعلم) وفقك الله

- أما بالنسبة للدالة المطلوبة فقد كانت جوابا دقيقا على سؤالي

- والخطأ الذي ارتكبنه كان مني وذلك بطريقة طرح السؤال

- فقد قلت ان الحقل A مفتاح رئيسي – ولم أكن اريده مفتاح وذلك حتى نستطيع تكرار اكثر من سجل لهذل الرقم بقيم مخنلفة للحقل C

- وبالتالي فان الدالة تجمع كل قيم C لكل السجلات خلال شهر القيمة المدخلة في الحقل D

- وقد كتبت دالة تجمع قيم الحقل C حسب الرقم A ولكن عندما حاولت ان أضع في المعيار لتلك الدالة( بالاضافة الى المعيار الذي وضعته ان تكون قيمة الحقل A الموجودة في الجدول تساوي قيمة الحقل A المدخل في السجل الحالي) المعيار الذي يخص حصر القيم بين تاريخي بداية الشهر ونهايته حسب القيمة المدخلة في الحقل D

وذلك باستخدام العامل AND كان يعطيني TYPE MISMATCH - طبعا القصد اصبح واضحا وهو مجموع قيم الحقل C حسب الرقم A خلال شهر القيمة المدخلة في الحقل D

أرغب بكل امتنان الاطلاع على الملف المرفق وابداء الرأي من الاخت المشرفة زهرة ومن كل الاعضاء وذلك لتعميم الفائدة .

واخيرا

db2.rar

#4

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

اخيرا بعد بعض الصعوبات مع الفواصل والاقواس استطعت كتابة الدالة المطلوبة (DSUM) واستخدامها في مربع نص غير منضم - وقد ارفقت ملف مثال - مع العلم ان الاخت المشرفة زهرة مشكورة قد استخدمت في مثالها استعلامين .

وارغب بالتنويه بالنسبة للاخوة الاعضاء الا يستخدموا في تعريف الدالات الجديدة التي يتم تصميمها اية اسماء قد تكون كلمات مفتاح في ال VBA طبعا لانه عتد ذلك عندما تحاول استخدام ذلك الامر مرة اخرى ينتج عن ذلك ان لايتعرف VBA على ذلك الامر.

أخوكم حسن

بسم الله الرحمن الرحيم

" من يعمل مثقال ذرة خيرل يرى"

db1.rar

#5

الاخ حسن

ما شاء الله عليك فكره جميله جدا في استخدام الاكواد .

بالتوفيق ان شاء الله تعالى وعقبال ما نشوفك مبرمج قد الدنيا .

ووالله اننا لنفرح عندما نشاهد العضو يحاول ويحاول حتى يخرج بفائدة لنفسه .

صحيح ان العمل مع الاكواد متعب ولكن يزول التعب عندما نحقق شيئا ما .

ختاما اكرر شكري وتقديري .

اختكم

زهره

تم تعديل هذه المشاركة بواسطة zahrah في 20 ديسمبر 2005 في 22:38

#6

السلام عليكم

شكرا جزيلا اختي الكريمة زهرة على مرورك الكريم واهتمامك، وبما ان حضرتك قد اختبرت المثال المرفق ارغب ممتنا اكمال جميلك وتواضعك فيما يخص كلمة ( error) التي تظهر في تلك الحقول الغير المنضمة التي كما لاحظتم هي حقول محسوبة حيث تظهر هذه الكلمة قبل ادخال اية بيانات

بما معناها وكون حقول النموذج تعتمد على استعلام بحث تلقائي - بصراحة جربت دالة nz ولكن لم تنفع

وهناك غاية اخرى هي المشاركة مع الاخرين والاطلاع على افكارهم فهي تصقل الخبرة وتزيدها

بارك الله بكم جميعا واتمنى لجميع الاعضاء التوفيق ومزيد من الخبرة فكما هو معلوم ان كل عمل متقن

يكون على الاغلب من انتاج group

أخوكم حسن

بسم الله الرحمن الرحيم

" من يعمل مثقال ذرة خيرا يرى "

#7

شاكرين ياجماعه

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

يعنى داله اكتب فى المربع الاول تاريخ 1-1-2004 الى 1-1-2005 يديني عدد الايام بين التاريخين وليكن مثلا 360 او 365 يوم

اكون شاكر جدا ليكو فعلا

#8

اخي الفاضل

لحساب عدد الايام بين تاريخين نستخدم الدالة DateDiff

وطريقة استخدامها تكون كالتالي

DateDiff("d";([StartDate]);[EndDate])

حيث StartDate هو اسم مربع النص للتاريخ الاول

و EndDate هو اسم مربع النص للتاريخ الثاني

وهذا مثال

DateDiff.rar

1
#9

شكرا - اختنا زهرة ..................... اخيرا فهمت منك حاجة

ونتمني المواصلة

#10

اة ............. نسيت اقولك يااختنا الكريمة

انا عاوز اعرف شرح القائمة المنسدلة فى الاكسس بالتفصيل : ياريت تحطيلى رابط او تعملي زى ما عملتي فى السؤال السابق

يعنى مثلا : اختار من القائمة وليكن زهرة .......... يقوم تحتها تطلع المعلومات الخاصة ب " زهرة "

وهكذا ...............

واكون شاكر ليكي جدا

#11

اخي الفاضل

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

اما سؤالك هنا فهو مختلف فأنت تريد مربع تحرير وسرد عند اختيار اي بند من بنوده تظهر لك المعلومات المرتبطة به .

لهذا لا يمكن الاجابة عليك في هذه المشاركة ويجب عليك وضع مشاركة جديده بهذا الخصوص

#12

ايوه انا عارف ان سؤالى التاني ليس له علاقة بالاول

بس انا عاوز الرد على السؤال التاني فى حاجه تانية انا عاوزها مش مخصوص بالسؤال الاول

وشكرا على ردك السريع .... الواحد كده هيبقى عنده ثقة فيكي - مما سيؤدي الى طرح عده اسئلة لكي فى المستقبل

وشكرا مرة تانية

#13

الاخ أمجد

هل من الممكن تفتح مشاركة جديده وتضع بها سؤالك المطلوب الاستفسار عنه مع ملاحظة عدم وضع عدة اسئلة ليس بينها رابط لان مثل هذه الاسئلة المتعددة في مشاركة واحدة يؤدي الى حذفها نهائيا .

راجع هذا الربط للاهمية

/index.php?showtopic=29343

هذا الموضوع مغلق.

مواضيع مشابهة