PDA

View Full Version : محاسبات مربوط به ساعت



mosaArabi
یک شنبه 16 تیر 1387, 14:23 عصر
با سلام
دوستان گرامي من دو ستون دارم . ساعت شروع - ساعت پايان
در كواري در ستون كاركرد مي خوام 1- ساعت پايان را از ساعت شروع كم كنم و كاركرد را بدست بياورم(البتع ساعت از نوع تكست و با اينپوت ماسك 00:00مي باشد 0
2- در يك كواري ديگر مي خواهم مجموع ساعت كاركرد را داشته باشم و آن را به روز تبديل كنم ( جهت ليست كاركرد پرسنل)
3- بتوانم در يك ستون ديگرمثلا از ساعت 07:50تا 08:10را 08:00تبديل كنم
اگر از دوستان كسي اطلاعاتي دارد محبت كند ممنون ميشم.
فايل نمونه جهت سهولت

مهدی قربانی
یک شنبه 16 تیر 1387, 16:06 عصر
سلام
ببينيد اين لينك كمكتون مي كنه
http://barnamenevis.org/forum/showpost.php?p=438057&postcount=20

ehsan_y
دوشنبه 17 تیر 1387, 06:08 صبح
سلام
دوست عزيز واقعاً براي من عجيب است كه چرا وقتي فرمت ساعت وجود دارد شما از تكست استفاده مي كنيد اگر مشكلي هم با تاريخ داريد مي تونيد از كد هاي مربوطه براي بدست آوردن تاريخ شمسي اشتفاده كنيد .

dadsara
دوشنبه 17 تیر 1387, 10:13 صبح
باسلام
جناب آقای Mehdi_gh لینک اشاره شده را دیدم ، چنانچه ما ساعت ورورد و ساعت خروج را داشته باشیم و بخواهیم اختلاف دو ساعت و مجموع اختلافات را داشته باشیم در صورت امکان نمونه ضمیمه را مشاهده فرمائید و ایراد آنرا بفرمائید

مهدی قربانی
دوشنبه 17 تیر 1387, 11:29 صبح
سلام
dadsara عزيز مشكل خاصي نبود شما در form1 در تكست باكس اختلاف زمان نام فيلدها رو اشتباه درج كرده بوديد براي همين فرمولتون جواب نمي داد من form1 رو اصلاح كردم البته محاسبه رو در يك كوئري انجام دادم و فرم رو به اون باند كردم .

dadsara
دوشنبه 17 تیر 1387, 12:25 عصر
خسته نباشید
ضمن تشکر مجدد از جنابعالی 3سوال پیش آمده
1- فیلد Roozaneh در جدول اصلی چگونه پر شده است
2- در صورتیکه یک رکورد جدید می زنیم و فرم 1 را اجرا می کنیم برنامه Erorr می دهد.
3- آیا می توان بدون استفاده ار کوئری این کار را کرد

mosaArabi
دوشنبه 17 تیر 1387, 13:52 عصر
با سلام
دوستان گرامي از بابت فايل نمونه ممنون
جواب قسمت 3 از سئوان من كه تبديل ساعت بين دو زمان را به زمان واحد باقي ماند . از دوستان كسي نظري ندارد.
در ضمن در جواب دوستمان كه سئوال كرده بودن چرا از ساعت و زمان موجود در اكسس استفاده نمي كنم . بخاطر اينكه اين اطلاعات از دستگاه ساعت زني منتقل مي شود و فرمت اين است.

با تشكر

مهدی قربانی
دوشنبه 17 تیر 1387, 14:07 عصر
خسته نباشید
ضمن تشکر مجدد از جنابعالی 3سوال پیش آمده
1- فیلد Roozaneh در جدول اصلی چگونه پر شده است
2- در صورتیکه یک رکورد جدید می زنیم و فرم 1 را اجرا می کنیم برنامه Erorr می دهد.
3- آیا می توان بدون استفاده ار کوئری این کار را کرد

سلام
دوست ارجمند با عرض پوزش نمونه قبلي اشكالاتي داشت كه برطرف شد (پست 5 )
در مورد سئوال اولتون در نمونه اصلاح شده اين عمليات ( ثبت مقدار فيلد Roozaneh ) بصورت ركوردست آپديت ميشه .
مورد دوم هم برطرف شده مشكل بخاطر خالب بودن فيلد Roozaneh در جدول TimeRoozaneh بود
پاسخ سئوال 3 هم مثبته الان محاسبه در خود فرم انجام ميشه


جواب قسمت 3 از سئوان من كه تبديل ساعت بين دو زمان را به زمان واحد باقي ماند . از دوستان كسي نظري ندارد.

دوست عزيز اين مورد در فرم TimeCalc نمونه دوم پياده شده


در ضمن در جواب دوستمان كه سئوال كرده بودن چرا از ساعت و زمان موجود در اكسس استفاده نمي كنم . بخاطر اينكه اين اطلاعات از دستگاه ساعت زني منتقل مي شود و فرمت اين است.


خوب مي تونيد جنس فيلد رو بعد از تخليه اطلاعات تبديل كنيد Date/Time

dadsara
دوشنبه 17 تیر 1387, 14:24 عصر
باسلام مجدد
ببخشید مثل اینکه یادتون رفته فایل رو ضمیمه کنید

مهدی قربانی
دوشنبه 17 تیر 1387, 15:17 عصر
سلام
عذر مي خوام نمونه قبلي رو جايگزين كرده بودم ، مجدداً نمونه اصلاح شده جايگزين شد .

dadsara
سه شنبه 18 تیر 1387, 07:52 صبح
باسلام
ضمن تشکر و توجه جنابعالی
مجموع زمان محاسبه شده اشتباه می باشد

mosaArabi
سه شنبه 18 تیر 1387, 11:08 صبح
با سلام
دوست گرامي mehdi-gh (http://barnamenevis.org/forum/member.php?u=35416) در فايل نمونه قسمت تبديل را پيدا نكردم اگه ممكنه راهنمايي كنيد
ضمنا فرموديد كه اطلاعت تكست را بع ديتا تايم تبديل كنم! من از جدول مربوطه به دستگاه اطلاعات را لينك كرده ام پس اگر آن را تبديل كنم جدول دستگاه نير تبديل ميشودو جواب نمي دهد. آيا مي شود يك تيبل در برنامه داشته باشم كه اطلاعات لينك شده به تيبل Aرا در تيبل Bبه صورت خودكار به ديتا تايم تبديل نمايد.
اگه ممكنه راهنمايي كنيد

مهدی قربانی
سه شنبه 18 تیر 1387, 14:11 عصر
ضمن تشکر و توجه جنابعالی
مجموع زمان محاسبه شده اشتباه می باشد
سلام
دوست گرامي بررسي شد مشكل بر مي گرده به زماني كه ركوردست زمان بدست اومده در تكست باكس Roozaneh رو ميفرسته به جدول ، در اين بين فرمت تغيير پيدا مي كنه و از حالت Short Time خارج مي شه و موجب اشتباه محاسبه ميشه .
خط زير رو اصلاح كنيد مشكل حل مي شه .

Dim Rst As DAO.Recordset
Set Rst = CurrentDb.OpenRecordset("TimeRoozaneh")
Rst.AddNew
Rst.Fields("s").Value = Me.s.Value
Rst.Fields("e").Value = Me.E.Value
Rst.Fields("Roozaneh") = Format(Me.Roozaneh.Value, "short time")
Rst.Update
Rst.Close
Set Rst = Nothing
Form_TimeRoozaneh.Requeryضمناً نمونه پست 5 هم مجدداً اصلاح شد .


دوست گرامي mehdi-gh در فايل نمونه قسمت تبديل را پيدا نكردم اگه ممكنه راهنمايي كنيد

دوست عزيز اگر به فرم TimeCalc توجه بفرمائيد در قسمت بالاي فرم تكست باكس Roozaneh كه Unbound هست وظيفه اش محاسبه اختلاف زمان هست اين مدت زمان بدست اومده توسط كامند باتون موجود و ركوردست به فيلد مربوطه در جدول ارسال ميشه بنابراين شما در سابفرم هم مي تونيد مجموع كاركرد رو داشته باشيد .


ضمنا فرموديد كه اطلاعت تكست را بع ديتا تايم تبديل كنم! من از جدول مربوطه به دستگاه اطلاعات را لينك كرده ام پس اگر آن را تبديل كنم جدول دستگاه نير تبديل ميشودو جواب نمي دهد. آيا مي شود يك تيبل در برنامه داشته باشم كه اطلاعات لينك شده به تيبل Aرا در تيبل Bبه صورت خودكار به ديتا تايم تبديل نمايد.
اگه ممكنه راهنمايي كنيد
يك تيبل ديگه ايجاد كنيد و فيلدهاي ساعت رو در اون با DataType زمان (date/Time ) و فرمت Short Time تنظيم كنيد و نهايتاً يك كوئري Append بسازيد كه اطلاعات تكست رو از جدول كارت ساعت شما بفرسته به جدول جديد و تمام وروديهاي محاسبات رو از اين جدول ( جديد ) تامين كنيد مي مونه درج محاسبات اختلاف زمانهاي ورود و خروج كه اونم بواسطه استفاده از ركوردست با خاصيت Edit ميشه اين كار رو انجام داد سعي مي كنم يك نمونه براتون بذارم تا بهتر براتون جا بيفته.

مهدی قربانی
سه شنبه 18 تیر 1387, 17:55 عصر
سلام
دوست عزيز mosaArabi ، پيرو پست قبل نمونه مرتبط با فرآيند مورد نظر تقديمتون ميشه
نمونه شامل 2 جدول هست يكي جدول card و دومي جدول timecalc جدول اول همون اطلاعات كارت ساعت رو با فرمت تكست بدون ماسك و جدول دوم جدول محاسبه زمانهاست كه مقادير رو بوسيله يك كوئري Append از جدول دريافت مي كنه و فرمت فيلدهاي Input و Output از نوع Date/Time و فرمت Short Time هست از طريق كامند باتون هاي موجود در فرم Panel تمام عملياتهاي ذكر شده قابل اجرا هستند

dadsara
چهارشنبه 19 تیر 1387, 08:56 صبح
سلام
دوست عزیز جناب Mehdi_Gh ضمن تشکر از دقت جنابعالی ، باتوجه به اینکه در تاپیکهای ایجاد شده قصد برآن است تا نمونه کامل شده را ایجاد نمود تا دوستان دیگر نیز بتوانند از آن استفاده نمایند و موارد مشابه جلوگیری گردد لذا مورد زیر اعلام می گردد
باتوجه به اینکه اطلاعات از دستگاه کارت زنی منتقل می شود و افرادی که شیفت هستند اگر ساعات پایانی روز قبل وارد و مثلا صبح روز بعد خارج شده باشد در محاسبات برعکس عمل می شود

مهدی قربانی
چهارشنبه 19 تیر 1387, 18:06 عصر
سلام
دوست خوبم dadsara خدمتون عارضم که حسب درخواست دوستمون mosaArabi عزیز در خصوص دستیابی به روش محاسبه زمان در ابتدای تاپیک حقیر خواستم که با لینک دادن ایشون به نمونه ماجول محاسبه مجموع زمان ایده ای خدمتشون داده باشم و عملاً هدف ارائه یک سیستم کامل نبود ولی از اونجائیکه شما دوست خوب استارت یک طرح ماحسبه زمانی رو زدید بنده هم علاقه مند شدم که بواسطه تعامل و همکاری با شما به این هدف صحه بذارم بنابراین با همراهی و همکاری شما انشاءالله خروجی این تاپیک یک پروژه مفید باشه .
درمورد ثبت ساعت در روز متفاوت ولی پیوسته همین الان در محل کار خودم که سیستم پرسنلیش هم اوراکل هست چنانچه افراد قرار باشه که مثلاً امروز تا فردا بمدت 24 ساعت در شرکت حضور داشته باشن لازمه که علاوه بر ثبت کارت در هنگام ورود در یک بار در ساعت 23:59 و یک بار هم در ساعت 00:01 کارتشون رو ثبت کنند این حالت دقیقاً بخاطر عدم ایجاد خطا در محاسبات منظور شده بنابراین در مورد مشابه ( موضوع مورد نظر شما ) هم میشه به همین روش عمل کرد اما بنظر شخص خودم این امر نمی تونه غیر ممکن باشه فقط یک مقدار پیچیده هست ولی با همه این توصیفات روش کار میکنم ببینم میشه راه حلی پیدا کرد .

mosaArabi
یک شنبه 23 تیر 1387, 07:59 صبح
دوست گرامي آقا مهدي
از لطف شما ممنون جهت نمونه ارسالي .

mosaArabi
دوشنبه 24 تیر 1387, 14:12 عصر
دوستان با سلام دوباره
اگر قرارباشد كه من اين جمع ساعت را در بازه زماني ار تاريخ .... تا تاريخ .... در گزارش داشته باشم تا بتوانم جمع ان را ببينم چه بايد بكنم . ضمنا در فايل نمونه آقا مهدي برنامه جمع را از تيبل مي گيره و در كواري و ريپورت با انتخاب بازه زماني ، جمع كل تيبل را محاسبه مي كند در صورتي كه جمع مثلا 2 روز كاركرد با جمع n روز در تيبل متفاوت ميباشد

مهدی قربانی
دوشنبه 24 تیر 1387, 15:11 عصر
سلام
در نمونه اي كه تقديم شد بازه زماني تعيين نمي شه اصلاً فيلد تاريخ موجود نيست بلكه تمام ركورد هاي موجود محاسبه مي شن ولي محدوديتي براي شما وجود نداره چنانچه قصد داريد محاسبه كاركرد يك شخص خاص در يك بازه رو بدست بياريد كافيه اولاً فيلدهاي نام شخص ، كد پرسنلي ، تاريخ و ... رو به جدول اضافه كنيد و در قدم بعدي با استفاده از كوئري اطلاعات مورد نظرتون رو استخراج و نتيجه رو در قالب فرم يا گزارش داشته باشيد ، استارت كار رو بزنيد هر جا كه مشكلي بود همين جا مطرح كنيد در خدمتتون هستم .

mosaArabi
سه شنبه 25 تیر 1387, 08:35 صبح
آقا مهدي با سلام
دوست گرامي من با راه حل پيشنهادي مشغول هستم . ولي در ماژول هر چه نام كواري را جايگزين نام تيبل مي كنم ارور مي دهد .(راهنمايي)
سئوال ديگه اينكه چطوري ميشود عدد را به فرمت ساعت تبديل كرد . مثلا 606.25 (توضيح : من اومدم ساعت ها را تبديل به عدد كردم . جمع گرفتم . حالا ميخوام جمع را به صورت ساعت تبديل كنم . آيا راهي وجود دارد .

مهدی قربانی
سه شنبه 25 تیر 1387, 15:27 عصر
سلام
در مورد نام كوئري چه خطايي دريافت مي كنيد ؟


سئوال ديگه اينكه چطوري ميشود عدد را به فرمت ساعت تبديل كرد . مثلا 606.25 (توضيح : من اومدم ساعت ها را تبديل به عدد كردم . جمع گرفتم . حالا ميخوام جمع را به صورت ساعت تبديل كنم . آيا راهي وجود دارد .
به چه صورتي اين عمليات رو انجام مي ديد ؟ (تبديل ساعت به عدد )

mosaArabi
سه شنبه 25 تیر 1387, 16:23 عصر
با سلام مجدد
آقا مهدي فايل زير حاوي ارور ميباشد
در حالت تبديل من سلول زمان را در عدد 24 ضرب كرده ام كه معدل عددي ساعت را به من مي دهد مثلا 07:15را در عدد 24 صريب كنم عدد 7.25را نمايش مي دهد.

مهدی قربانی
پنج شنبه 27 تیر 1387, 11:55 صبح
سلام
خطا مربوط به همون كوئري مورد استفاده شماست اگر بتونيد نمونه اي كه روش كار مي كنيد اينجا بذاريد بهتر ميشه مشكلاتش رو بررسي و شناسايي كرد .

mosaArabi
شنبه 29 تیر 1387, 13:36 عصر
با سلام
اين هم فايل نمونه.
مجددا اگر امكان دارد در خصوص تبديل عدد 606.25به فرمت ساعت (606:15)اعلام نظر فرماييد
با تشكر

mosaArabi
یک شنبه 30 تیر 1387, 13:43 عصر
با سلام
اين هم فايل نمونه.
مجددا اگر امكان دارد در خصوص تبديل عدد 606.25به فرمت ساعت (606:15)اعلام نظر فرماييد
با تشكر

از ردستان كسي راه حلي بلد نيست تا راهنمايي كند

مهدی قربانی
دوشنبه 31 تیر 1387, 17:13 عصر
سلام
آقا در نمونه شما از ماجول قويتر استفاده كردم كه وابسته به جدول يا كوئري نيست و شما هرجا كه لازم بدونيد مي تونيد ازش استفاده كنيد به در فرم 2 تاريخ ابتدا و انتها رو وارد كنيد و نتيجه رو در پائين فرم مشاهده كنيد در كوئري هاي 11 و مجموع ساعت از اين ماجول استفاده شده مورد تبديل عدد هم با توجه به در دسترس بودن ابزار قوي مثل ماجول مورد بحث لزومي احساس نميشه ( تبديل عدد ) موردي بود در خدمت هستم .

mosaArabi
سه شنبه 01 مرداد 1387, 08:19 صبح
آقا مهدي با سلام
از بابت فايل نمونه ممنون . بسيار عالي بود.فقط يك سئوال : من از HoursAndMinutes براي تبديل عدد به ساهت استفاده كردم . (نمي دونونم منظور شما را درست متوجه شدم يا نه)ولي براي عدد 11.25به من ساعت 48:00را نشان ميدهد. در فايل نمونه قسمت ريپورت گزارش 1 را ملاحظه فرماييد
باز هم از لطف شما متشكرم

dadsara
سه شنبه 01 مرداد 1387, 08:27 صبح
سلام
آقا در نمونه شما از ماجول قويتر استفاده كردم كه وابسته به جدول يا كوئري نيست و شما هرجا كه لازم بدونيد مي تونيد ازش استفاده كنيد به در فرم 2 تاريخ ابتدا و انتها رو وارد كنيد و نتيجه رو در پائين فرم مشاهده كنيد در كوئري هاي 11 و مجموع ساعت از اين ماجول استفاده شده مورد تبديل عدد هم با توجه به در دسترس بودن ابزار قوي مثل ماجول مورد بحث لزومي احساس نميشه ( تبديل عدد ) موردي بود در خدمت هستم .
باسلام
باعرض معذرت ، فکر می کنم اگر زمان پایان فعالیت کوچکتر از شروع فعالیت باشد محاسبه اشتباه باشد

مهدی قربانی
سه شنبه 01 مرداد 1387, 10:48 صبح
آقا مهدي با سلام
از بابت فايل نمونه ممنون . بسيار عالي بود.فقط يك سئوال : من از HoursAndMinutes براي تبديل عدد به ساهت استفاده كردم . (نمي دونونم منظور شما را درست متوجه شدم يا نه)ولي براي عدد 11.25به من ساعت 48:00را نشان ميدهد. در فايل نمونه قسمت ريپورت گزارش 1 را ملاحظه فرماييد
باز هم از لطف شما متشكرم

سلام
توجه داشته باشيد كه تابع HoursAndMinutes براي تبديل عدد به ساعت يا بلعكس كاربردي نداره بلكه اين تابع فقط براي محاسبه اختلاف ساعت فيلدهاي Date/Time كاربرد داره ضمناً شما اصلاً نيازي به تبديل زمان به عدد نداريد و براي تجميع اختلاف زمانها ميتونيد از اين تابع به شكل زير استفاده كنيد :

=HoursAndMinutes(Sum([StartTime];[finishTime]))

مهدی قربانی
سه شنبه 01 مرداد 1387, 10:56 صبح
باسلام
باعرض معذرت ، فکر می کنم اگر زمان پایان فعالیت کوچکتر از شروع فعالیت باشد محاسبه اشتباه باشد

سلام
بله درسته منتها اين مشكل به واسطه يك شرط قابل حله ميشه تعريف كرد كه اگر زمان شروع از زمان خاتمه بزرگتر بود جهت محاسبه تغيير كنه البته منطقاً بزرگتر بودن زمان شروع از زمان خاتمه امكانپذير نيست يعني مثلاً زمان آغاز باشه 8 صبح و زمان خاتمه باشه 7 صبح البته در يك 24 ساعت براي موارد با طول زماني بيشتر از 24 ساعت هم همونطور كه در پستهاي قبلي عرض كردم راه اصولي در دسترس نيست البته حقير دارم روش كار مي كنم و انشاء الله بزودي راه حلش رو تقديم خواهم كرد .

mosaArabi
سه شنبه 01 مرداد 1387, 14:37 عصر
آقا قرباني عزيز سلام
ببين من مي خوام ببينم آيا اصولا راه حلي وجود دادر كه عدد را به ساعت تبيل كرد يا نه . بخاطر اين سئوالم را چند بار مطرح كردم كه با اين كار خيلي راحت تر ميشود به جواب رسيد . ابتداد اعداد را كه از ساعت به عدد تبديل كرده ايم جمع و در آخر آن را تبديل به ساعت مي كنيم .
البته قطعه كد را دوست گرامي آق مهدي هم در نمونه قرارداده اند ولي من روي اين قضيه امتحان كردم كه ببينم آيا جواب مي دهد يا نه
با تشكر از لطف همه دوستان محترم