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

حساب مجموع الفرق بين وقت الدخول والخروج

مغلق
بدأه Ashrouf في 7 مارس 2007 · 21 رد · 8,659 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

السادة الاعضاء والمشرفين

لدى جدول يوضح رقم الموظف والوقت ونوح العملية (دخول او خروج -- I or O) فى سجل

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

وشكرا جزيلا

#2

يمكنك ارسال الملف للتعديل

#3

نعم اخي ارفق الجدول

أو اذهب الى الجدول في عرض التصميم

اذهب الى الحقول

اضف الحقول التي تريدها

مثل: ساعة الدخول وساعة الخروج

اجعل نوع الحقول :تاريخ ووقت

احفظ التغييرات في الجدول

لايجاد الفرق بين ساعة الدخول والخروج

اذهب الى صفحة الاستعلامات

اختر استعلام جديد في عرض التصميم

في شاشة الاستعلام أضف الجدول المذكور

اضف الحقول واحدا تلو الاخر

ثم اكتب في حقل جديد للاستعلام

Diff: [ساعة الدخول]-[ساعة الخروج]

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 7 مارس 2007 في 20:26

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#4

بارك الله فيكم جميعا

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

zaElapsed_Time.rar

1
#5

الأخ الفاضل ...

الأخت الفاضلة الأستاذة زهرة... مثال رائع، وفقك الله وبارك فيك وفى والديك،

أستأذنك بإضافة بسيطة للمثال، وهى ممكن عمل أستعلام على المثال بالشكل التالى:

SELECT Employees.EmployeeID, Employees.EmpName, TimeSheet.DateWorked, TimeSheet.TimeIn, TimeSheet.TimeOut, Format([TimeOut]-[TimeIn],"hh:mm:ss") AS Total FROM Employees INNER JOIN TimeSheet ON Employees.EmployeeID=TimeSheet.EmployeeId

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 8 مارس 2007 في 01:27

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#6

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

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

ومرفق مثال للتوضيح

ATTENDANCE.rar

#7

بارك الله فيك اخي اسامة

على هذا التعديل الموفق في الاستعلام

كنت ارغب بعمل ذلك ولكني فضلت ان تكون في وظيفة عامة يمكن استخدامها في اي مكان من القاعدة

اخي الفاضل اشرف

QR1.gif

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

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

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

كما ان ما قمنا به لك هو المطلوب انظر الى الصوره وقت الحضور والإنصراف في نفس السجل وليست متفرقه والا كيف يتم استخراج الفرق بين الوقتين

طيب شوف هذا المثال ينفع

zaElapsed_Time1.rar

تم تعديل هذه المشاركة بواسطة zahrah في 8 مارس 2007 في 03:32

#8

السلام عليكم

فيما يلي طريقة لحساب وقت التأخير من خلال الاستعلام

_____.zip

_____.zip

قالَ رَسُولُ الله صلى الله عليه وسلم:

"مَنْ لم يَشْكُرِ النّاسَ لَمْ يَشكُرِ الله "

حديث حسن صحيح

#9

متأسف جدا للأخ Ashrouf صاحب السؤال عندما وضعت اجابة مستعجلة لم اتأكد من صحة حلها مع اني جربتها قبلا ولكني لم الحظ ذلك الخطأ في الرقم اذا اعتقدت ان استخدام دالة Format سيعطي الفرق على شكل وقت وليس عدد ساعات ولهذا لم استعملها

شكرا اخت زهرة

شكرا لك اخي اسامة

شكرا للأخ ammar zaid

وعذرا مرة اخرى منك اخي Ashrouf

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#10

اخوانى الاعزاء

الاخت زهره

عفوا لاننى حتى الان لم استطع ان اوصل لكم ما اريده

الجدول المرفق بالمشاركة السابقة لى يوضح دخول الموظف وى سجل مستقل وخروج الموظف فى سجل اخر مستقل يليه

ما اريده

هو عمل استعلام يوضح دخول وخروج الموظف فى نفس السجل وليس فى سجلين منفصلين

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

ما اريده جعل الدخول والخروج فى سجل واحد.

وشكرا جدا على الاهتمام

#11

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

قالَ رَسُولُ الله صلى الله عليه وسلم:

"مَنْ لم يَشْكُرِ النّاسَ لَمْ يَشكُرِ الله "

حديث حسن صحيح

#12

اخي الفاضل عمار زايد

بارك الله فيك على المساعدة والمحاوله

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

اخي الفاضل اشرف

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

اولا : دعنا نتعرف على ( قواعد التقييس ) الخاصة بقواعد البيانات ( اي جعلها طبيعية و قياسية ) وهي 12 قاعدة اساسية اذا خرجت عنها اي قاعدة بيانات فإنها ستصبح قاعدة بيانات غير قياسية وستكثر بها الاخطاء والمشاكل ثم الأنهيار السريع .

Dr. E. F. Codd's 12 rules

for defining a fully relational database

Note that based on these rules there is no fully relational database management system available today. In particular, rules 6, 9, 10, 11 and 12 are difficult to satisfy.

Foundation Rule

A relational database management system must manage its stored data using only its relational capabilities.

Information Rule

All information in the database should be represented in one and only one way - as values in a table.

Guaranteed Access Rule

Each and every datum (atomic value) is guaranteed to be logically accessible by resorting to a combination of table name, primary key value and column name.

Systematic Treatment of Null Values

Null values (distinct from empty character string or a string of blank characters and distinct from zero or any other number) are supported in the fully relational DBMS for representing missing information in a systematic way, independent of data type.

Dynamic On-line Catalog Based on the Relational Model

The database description is represented at the logical level in the same way as ordinary data, so authorized users can apply the same relational language to its interrogation as they apply to regular data.

Comprehensive Data Sublanguage Rule

A relational system may support several languages and various modes of terminal use. However, there must be at least one language whose statements are expressible, per some well-defined syntax, as character strings and whose ability to support all of the following is comprehensible:

data definition

view definition

data manipulation (interactive and by program)

integrity constraints

authorization

transaction boundaries (begin, commit, and rollback).

View Updating Rule

All views that are theoretically updateable are also updateable by the system.

High-level Insert, Update, and Delete

The capability of handling a base relation or a derived relation as a single operand applies nor only to the retrieval of data but also to the insertion, update, and deletion of data.

Physical Data Independence

Application programs and terminal activities remain logically unimpaired whenever any changes are made in either storage representation or access methods.

Logical Data Independence

Application programs and terminal activities remain logically unimpaired when information preserving changes of any kind that theoretically permit unimpairment are made to the base tables.

Integrity Independence

Integrity constraints specific to a particular relational database must be definable in the relational data sublanguage and storable in the catalog, not in the application programs.

Distribution Independence

The data manipulation sublanguage of a relational DBMS must enable application programs and terminal activities to remain logically unimpaired whether and whenever data are physically centralized or distributed.

Nonsubversion Rule

If a relational system has or supports a low-level (single-record-at-a-time) language, that low-level language cannot be used to subvert or bypass the integrity rules or constraints expressed in the higher-level (multiple-records-at-a-time) relational language.

راجع هذا الرابط للإستفادة

Dr. E. F. Codd's 12 rules

راجع ايضا هذا الرابط للإستفادة

Rules of Data Normalization

راجع ايضا هذا الرابط للإستفادة مقدم من خبير قواعد البيانات الاستاذ " انترنت ماستر " بالعربي

الاسس العلمية لقواعد البيانات

لذا دعنا نرى مثالك ونطبق عليه بالشرح

R1(1).gif

كما ترى في جدولك انه تم التكرار لأكثر من مره والسبب انك وضعت الدخول والخروج في سجلين منفصلين وهذا بالطبع خطأ وكان من الافضل ان تضع الدخول والخروج في سجل واحد انظر الشكل الصحيح للجدول بعد التعديل

R2(1).gif

ايضا هنا تم الاستغناء عن حالة الفحص " I " و " O " لأنه لم يعد لها لزوم في هذه الحالة .

ونظرا للتصميم الخاطىء للجدول فلقد قمت بعمل استعلامين الاول QIn ووضعت به معيار " I " للدخول ثم عملت استعلام اخر QOut ووضعت به معيار " O " للخروج ثم قمت بجمع هذين الاستعلامين في استعلام واحد لكي تقوم بوضع حقل الدخول وحقل الخروج بجانب بعضهم البعض . ولماذا كل هذه الغلبة والحوسه كلها اما كان يكفي من البداية ان تستخدم التصميم الصحيح للجدول وتضع الحقلين بجانب بعضهم البعض . او ان تستخدم حقل معرف UserID كمفتاح اساسي في جدول وتربطه مع المفتاح الفرعي لهذا الجدول لكي تحصل على كل مستخدم منفصل له بياناته الخاصة .

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

وفقك الله لما يحب ويرضى

#13

الاخت العزيزة زهرة

شكرا جزيلا على هذه المعلومات القيمة وبارك الله فيكى

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

وشكرا مرة اخرى للاهتمام

#14

اخي الفاضل اشرف

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

احسست من كلامك ان في خاطرك شيء ما

واتمنى ان لا يكون هناك زعل او سوء فهم للموضوع

عندما شرحت لك الوضح الصحيح لم يكن لدينا اي فكرة ان برنامجك او سؤالك الذي تسأل عنه ان مصدر السجلات هو ملف نصي مأخوذ من آلة البصمه وتم تحويله الى جدول فهذه المعلومات لم تبلغنا بها منذ البداية الا الآن .

ولو كنا نعلم منذ البداية بحقيقة الوضع لحاولنا ايجاد طريقة وحتى لو كانت مستحيله لحل هذه المشكله .

هناك سؤال اخي اشرف

لدينا ملف نصي وقمنا بتحويله الى جدول فهل الجدول او الملف النصي آية منزله لا يمكن التعديل فيها ؟

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

اخي اشرف

كما تعلم ان لغة آلة البصمة تختلف عن لغة الأكسيس فلغة آلة البصمة تعتمد على الوقت فعندما يحظر الموظف ويدخل الكرت في الآلة فإنها تطبع على الكرت وقت الدخول سواء كانت ألة ورقيه او عن طريق بصمة الأصبع فلا يوجد فرق فكلاهما يقومان بتخزين وقت الدخول ووقت الخروج للموظف فعند الدخول يكون الرمز I وعند الخروج يكون الرمز O وبناء على هذه الأفكار المبدئية نقوم بعمل برنامج مشابه لما تقوم به آلة البصمة ولكن ليس لزاما علينا ان يكون نفس ما تنتجه هذه الآله ان يكون هو برنامجنا فلو اخترنا هذا الطريق لأصبحنا اسيرين للغة الآله لا نستطيع التعديل ولا التبديل ولا حتى التطوير .

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

ختاما لك مني كل الشكر والتقدير على المشاركه .

واتمنى ان تكون النفوس صافية .

#15

الأخ الفاضل ...

الأخت الفاضلة الأستاذة زهرة... جميع من شارك،

أستأذنكم بتجربة بسيطة للمثال وفقاً لأخر معطيات، وهى عمل أستعلام بالشكل التالى:

SELECT USERINFO.NAME, USER_Alias.*, Format([OUTTIME]-[INTIME],"hh:nn:ss") AS WorkTime
FROM [SELECT CHECKIO.USERID, CHECKIO.CHECKTIME AS INTIME, (Select TOP 1 CHECKTIME From CHECKINOUT WHERE CHECKTYPE="O" AND CHECKIO.USERID = USERID AND CHECKIO.CHECKTIME < CHECKTIME) AS OUTTIME
FROM CHECKINOUT AS CHECKIO
WHERE CHECKTYPE="I"
GROUP BY CHECKIO.USERID, CHECKIO.CHECKTIME]. AS USER_Alias INNER JOIN USERINFO ON USER_Alias.USERID = USERINFO.USERID

أو بدون الأسم كالتالى:

SELECT USER_Alias.*, Format([OUTTIME]-[INTIME],"hh:nn:ss") AS WorkTime
FROM [SELECT CHECKIO.USERID, CHECKIO.CHECKTIME AS INTIME, (Select TOP 1 CHECKTIME From CHECKINOUT WHERE CHECKTYPE="O" AND CHECKIO.USERID = USERID AND CHECKIO.CHECKTIME < CHECKTIME) AS OUTTIME
FROM CHECKINOUT AS CHECKIO
WHERE CHECKTYPE="I"
GROUP BY CHECKIO.USERID, CHECKIO.CHECKTIME]. AS USER_Alias

شكراً

WorkTime.zip

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#16

بارك الله فيك اخي الفاضل المهندس اسامه

اتمنى ان يكون هذا هو الحل الصحيح لهذه العملية

بالتوفيق

#17

الاخت زهرة

لايوجد اى شيئ فى خاطرى وكلنا هنا

شكرا جزيلا لاهتمامك

الاخ الباشمهندس

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

#18

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

وشكرا جزيلا

#19

الأخ الفاضل ...

معذرة على التأخر، فلم أرى الرد سوى الأن

فكرة جملة SQL هو استعلام اساسى داخله استعلام فرعى، الاستعلام الاساسى يعرض وقت الدخول، والاستعلام الفرعى يعرض وقت أول خروج بعد الدخول، ويتم التفرقة بين الدخول والخروج من خلال الرمزين I و O - والاستعلام يعتمد على منطق أن كل موظف دخل العمل لابد وأن يخرج منه فى وقت بعد وقت دخوله، وهذا طبعاً منطقى وطبيعى، بغض النظر اذا كان فى نفس اليوم أو فى اليوم التالى.

وبالتالى الاستعلام الساسى فقط يقوم بعض أوقات دخول الموظفين (وهو استعلام عادى جداً)، والاستعلام الفرعى يقوم بعض وقت الخروج (أى أول وقت من النوع O يلى وقت الدخول الحالى الذى من النوع I) :)

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#20

المشرفة زهرة :

لو سمحتي حضرتك قولتي ان الدالة Diff بتعمل مشاكل

ارجو ايضاح هذه المشاكل لاني استخدمها منذ فترة بعيدة واعتمد عليهعا كليا ولم تظهر معي اي مشاكل _ ارجو الايضاح حتي لا اتعثر في برامجي

شكرا لكي

#21

اخي الفاضل H_O_A

بالنسبة للدالة DateDiff فهي بحساب عدد الفواصل الزمنية بين تاريخين محددين . ( التاريخ الأول و التاريخ الثاني )

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

ومن الممكن التعويض عن الوسيطة d وهي هنا تمثل الفاصل الزمني interval والتي تمثل عدد الايام بأي وسيطة اخرى خاصة بالتواريخ او الوقت مثل

yyyy السنة

q ربع سنوي

m الشهر

y يوم من السنة

d اليوم

w يوم من الأسبوع

ww الأسبوع

h الساعة

n الدقيقة

s الثانية

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

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

:) :) وعدى ذلك استخدم الدالة حتى لو ذهبت الى كوكب الزهره ستجد انها تعمل ولكن انتبه للفرق في حساب السنوات الضوئية :) :)

#22

شكرا يا مشرفتنا "المعلمه " ;)

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

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

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

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

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

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