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

كيف أحصل على إحصائية

مغلق
بدأه أبو زيد في 31 أغسطس 2001 · 8 رد · 942 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أيها الأحبة حفظكم الله جميعا

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

لدي ثلاثة جداول

1- جدول الأسماء

2- جدول بيانات >> يضم حقل taslsol به عداد للسجلات للموظف

3 - جدول احصائية >> يضم حقل مجموع

كيف يمكن أخذ بيانات آخر سجل للموظف لأنه يحمل عداد السجلات

و أضعه في جدول احصائية << مجموع>>

و الله يحفظكم

أبو زيد

#2

لو وضحت أكثر :

لديك ثلاثة جداول الأول أسماء الموظفين

والثاني مافمهت ومامعنى عداد للسجلات للموظف ؟

كأني فمهت أنك ترغب في تسجل عدد الموظفين في جدول الإحصائية وعدد الموظفين موجود لديك في جدول .

هل ما فمهته صحيح ؟

ولك تحياتي

#3

الإبن الحبيب حمود حفظه الله

لدي ثلاثة جداول

1- جدول الأسماء

2- جدول بيانات مثلا << غياب الموظف >> , وهناك حقل taslsol يوجد به مسلسل أيام غياب

3 - جدول احصائية >> يضم حقل مجموع

كيف يمكن أخذ آخر رقم في حقل taslsol لآنه يدل على عدد أيام الغياب

و أضعه في جدول احصائية حقل << مجموع>>

محبك /أبو زيد

#4

الذي فهمته -مع أنك لم تزد في ردك الثاني عن الأول شيء ولم تجاوب على أسئلتي- أن الجدول المسمى غياب الموظف تسجل فيه أيام غياب الموظف وهنا سؤالين :

الأول :

1- هل تسجل غياب الموظف كمجموع خلال شهر مثلا ؟

2- أم تسجل بالتفصيل يعني كلما غاب سجلت يوم ؟

وهذا يفرق فالأول يعني لا نحتاج الى جمع الأيام والثاني نحتاج .

الثاني :

الجدول إحصائية :

1- هل سوف تسجل في إحصائية مجموع غياب كل موظف أم جميع الأيام مجموعة لكل موظف أم لا علاقة للموظفين بهذه الجدول وإنما هو إحصاء لمجموع أيام غياب الموظفين .

لدي فهم آخر :

أن الرقم الموجود في حقل taslsol يدل على عدد المرات التي قمت بتسجيل الغياب فيها في جدول الغياب وتريد أن تعرف عدد الأيام التي سجلتها بغض النظر عن الموظفين والجمع ، إن كان الأمر كذلك فهنا سؤال :

إذا كان جدول الإحصائية يحتوي على عدة حقول قد سبق تسجيل البيانات فيها فقد نستعمل استعلام تحديث أما إذا كان لايحتوي على أية حقول فاستعلام إلحاق وإليك هو :

INSERT INTO [جدول احصائية] ( مجموع )

SELECT Last([غياب الموظف].taslsol) AS Lastمنtaslsol

FROM [غياب الموظف];

انسخ عبارة الاستعلام ثم افتح استعلام جديد واختر عرض SQL أما إذا كنت تشغله من زر أمر فاستخدم :

DoCmd.RunSQL ("INSERT INTO [جدول احصائية] ( مجموع ) " _

& " SELECT Last([غياب الموظف].taslsol) AS Lastمنtaslsol " _

& " FROM [غياب الموظف];")

ارجو أن أكون وصلت إلى مرادك .

ولك تحياتي

#5

الإبن أبو حمود حفظه الله

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

التوضيح

1 - يتم تسجيل الغياب يوميا لذلك نحتاج إلى جمع ..

2 - جدول احصائية كل موظف مجموع غيابه في سجل ..

أبو حمود ( كبر السن شين .. الفهم على قد الحال ) و لكن إذا قدرت تعمل مثال أكون شاكرا و مقدرا

محبك / أبو زيد

#6

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

أما جدول الإحصائية فيفترض وجود جدول رقم الموظف مرتبط بجدول بيانات الموظفين بعلاقة رأس مع أطراف وحقل مجموع لتسجيل مجموع أيام الغياب الموجودة في جدول الغياب :

INSERT INTO [جدول احصائية] ( [رقم الموظف], مجموع )

SELECT [غياب الموظف].[رقم الموظف], Sum([غياب الموظف].taslsol) AS taslsol

FROM [غياب الموظف]

GROUP BY [غياب الموظف].[رقم الموظف];

ولي ملاحظات :

إذا كان ماذكرت صحيحاً فأيام الغياب التي سجلتها في جدول الغياب سوف تضاف كلما شغلت عبارة SQL السابقة وهذا معناه تكرار للبيانات وخطأ ، وعليك إما حذف البيانات بعد إحصاءك لها أو جعل حقل taslsol حقل من نوع تاريخ وتغيير عبارة الاستعلام السابقة لكي لاتجمع إلا بيانات في تاريخ محدد .

تريد الحقيقة يا أن تصميمك خطأ يا أنا إلى الآن ما فهمت .

ولك تحياتي

#7

الأخ أبو زيد

أنشئ حقل باسم تاريخ الإحصاء من نوع تاريخ/ووقت في جدول الإحصائية وضع الكود التالي في حدث النقر لزر الأمر :

Dim NmMonth As Integer

On Error GoTo eorr_إحصاء

' الإجراء التالي يشتغل في حال كون جدول الإحصائية خالي من السجلات

If DCount("[تاريخ الإحصاء]", "جدول الإحصائيات") = 0 Then

DoCmd.RunSQL ("INSERT INTO [جدول الإحصائيات] ( [رقم الموظف], [الغياب خلال شهر], [تاريخ الإحصاء] ) " _

& " SELECT [جدول الغياب].[رقم الموظف], Count([جدول الغياب].التاريخ) AS [عدد أيام الغياب], Max([جدول الغياب].التاريخ) AS Maxمنالتاريخ " _

& " FROM [جدول الغياب] GROUP BY [جدول الغياب].[رقم الموظف], DatePart('m',[التاريخ]) HAVING (((DatePart('m',[التاريخ]))=DatePart('m',[التاريخ])));")

Exit Sub

End If

' هل مر شهر على آخر بيانات مسجلة

MsgBox DatePart("m", Date)

MsgBox DatePart("m", DLast("[تاريخ الإحصاء]", "جدول الإحصائيات"))

NmMonth = DatePart("m", Date) - DatePart("m", DLast("[تاريخ الإحصاء]", "جدول الإحصائيات"))

If NmMonth > 1 Then

' نتيجة الشرط السابق إذا مر شهر كامل على آخر إحصائية

NmMonth = DatePart("m", DLast("[تاريخ الإحصاء]", "جدول الإحصائيات"))

DoCmd.RunSQL ("INSERT INTO [جدول الإحصائيات] ( [رقم الموظف], [الغياب خلال شهر], [تاريخ الإحصاء] ) " _

& " SELECT [جدول الغياب].[رقم الموظف], Count([جدول الغياب].التاريخ) AS [عدد أيام الغياب], Max([جدول الغياب].التاريخ) AS Maxمنالتاريخ " _

& " FROM [جدول الغياب] GROUP BY [جدول الغياب].[رقم الموظف], DatePart('m',[التاريخ]) HAVING (((DatePart('m',[التاريخ]))>" & NmMonth & "))")

Else

MsgBox "لقد تم عمل الإحصائية قبل ذلك .", vbCritical

End If

err_exit:

eorr_إحصاء:

Exit Sub

MsgBox " لم استطع عمل إحصاء يوجد خطأ .", vbCritical

Resume err_exit

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

ولك تحياتي

#8

أخي الحبيب أبو حمود حفظك الله

لك الشكر الجزيل أولا و آخرا .. فلقد و الله استفدت من مثالك .. فجزاك الله خيرا .. و رحم والديك

و لا زلت أنتظر منك المزيد

محبك أبو زيد

#9

الأخ ابو زيد

نحن في الخدمة وكل الأخوان في هذا المنتدى شعارهم التعاون .

جزاك الله خير على دعائك .

ولك تحياتي

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…