# پایگاه‌های داده > سایر پایگاه‌های داده > Access >  جمع درساعات

## reza850101

دوستان در گزارش ضميمه ميخواهم براساس گرروه شماره ساعات مرخص و... جمع شود البته فرمت تكس را به تايم و نام فارسي را به انگليسي تغيير دادم عمل نكرد ممكنه راهنمايي كنيد 
 ذستور (=sum[مرخصي ]) عمل نميكند

----------


## amirzazadeh

> دوستان در گزارش ضميمه ميخواهم براساس گرروه شماره ساعات مرخص و... جمع شود البته فرمت تكس را به تايم و نام فارسي را به انگليسي تغيير دادم عمل نكرد ممكنه راهنمايي كنيد 
>  ذستور (=sum[مرخصي ]) عمل نميكند


سلام
از اين تاپيك كمك بگيريد:
https://barnamenevis.org/showthread.p...l=1#post438057
...................................
موفق باشيد

----------


## bemilove

سلام مدیر بخش من هم در جمع ساعت در گزارش مشکل دارم.آن تاپیکی که معرفی کردید کمکی به من نمی کند.تمام تالار را زیر رو کردم یک مورد پیدا کردم که در فرم جمع ساعت محاسبه می کند.اما جمع ساعت در گزارش جایی ندیدم .لطفا کمکم کنید.مثال ضمیمه است (جمع ساعت آقای حسن را در گزارش محاسبه کنید)............بیسار ممنون

----------


## reza850101

باسلام و تشكر ، درفايل پيوست ماجول را  بافيلد ساعت منطبق كردم اما ارورميدهد
 2
- ماجول شما يك فيلد را جمع ميكند براي بيشتر چگونه عمل كنم ؟

----------


## amirzazadeh

> باسلام و تشكر ، درفايل پيوست ماجول را  بافيلد ساعت منطبق كردم اما ارورميدهد
>  2
> - ماجول شما يك فيلد را جمع ميكند براي بيشتر چگونه عمل كنم ؟


سلام
تو جدول مربوطه در ركورد دوم  فيلد تعجيل خالي بود كه باعث بروز خطا ميشه .
در مورد سئوال دوم اول اينكه اين ماژول رو جناب قرباني آماده كردند و دوم اينكه شما ميتونيد به هر تعداد ركوردست تعريف و جمع اونها رو داشته باشيد.
............................
موفق باشيد

----------


## bemilove

مشکل من کسی نمی تونه حل کنه..............................جمع ساعت در گزارش.....نمونه برنامه بالا هست

----------


## amirzazadeh

> مشکل من کسی نمی تونه حل کنه..............................جمع ساعت در گزارش.....نمونه برنامه بالا هست


سلام
ببينيد مشكل برطرف شده:

----------


## bemilove

ممنون از پاسخ شما--ولی یک مشکل وجود دارد که این مازول فقط برای یک فرم کاربرد دارد..مثلا اگر ما بخواهیم بر اساس تاریخ یعنی در فرم f_takhir_date  هم مجموع ساعت را در گزارش داشته باشیم با مشکل مواجه می شویم.کلا چه باید کرد که در گزارش هر جا بخواهیم مجموع ساعت داشته باشیم مشکل نداشته باشیم. :چشمک:

----------


## amirzazadeh

سلام
با يك تغيير مختصر در فانكشن اول و ذخيره اون با يك نام ديگه در داخل همون ماژول ميتونيد به منظورتون برسيد.
................................
موفق باشيد

----------


## bemilove

بنده مبتدی هستم .ماژول رو دستکاری کردم جواب نمیده......جمع تاخیر ها را در یک تاریخ محاسبه شود.

----------


## amirzazadeh

> بنده مبتدی هستم .ماژول رو دستکاری کردم جواب نمیده......جمع تاخیر ها را در یک تاریخ محاسبه شود.


سلام
كد رو به اين شكل اصلاح كنيد:
Function GetTimeRoozanehTotal1()
         Dim db As Database, rs As Recordset
         Dim totalhours As Long, totalminutes As Long
         Dim days As Long, Hours As Long, Minutes As Long
         Dim interval As Variant, j As Integer
         Set db = DBEngine.Workspaces(0).Databases(0)
         Set rs = db.OpenRecordset("SELECT * FROM t_takhir WHERE (t_takhir.date)='" & [Forms]![f_takhir_date].[Text0] & " ' ")
                                                         
         interval = #12:00:00 AM#
'
            While Not rs.EOF
               interval = interval + rs![takhir]
               rs.MoveNext
            Wend
         totalhours = Int(CSng(interval * 24))
         totalminutes = Int(CSng(interval * 1440))
         Hours = totalhours Mod 24
         Minutes = totalminutes Mod 60

     ' GetTimeRoozanehTotal = totalhours & " ÓÇÚÊ æ " & Minutes & " ÏÞíÞå"
        GetTimeRoozanehTotal1 = totalhours & ":" & Minutes
      End Function
..........................................
موفق باشيد

----------


## reza850101

باسلام و تشكر از زحمتي كه متحمل ميشويد من به يك مشكل مواجهم گزارشم را گروه بندي كرده ام برايتان ارسال ميكنم اما استفاده ازاين ماجول باعث ميشود جمع هرگروه بتفكيك انجام نشود  كل ركوردها راجمع ميزند، ممنون ميشم نگاهي بگزارشم بياندازيد

----------


## hada22

سلام دوستان عزیز.من یه برنامه درست کرده ام وتویکی از فرمها میخواهم فاصله بین ساعت ورود وساعت خروج را به عنوان ساعت مفید دریک فیلد دیگر نمایش دهد.
تشکر

----------


## bemilove

آقای hsda22 نمونه فایل ضمیمه کن

----------


## bemilove

امیر جان با تشکر دوباره از جواب سوال قبلی :...............مشکل دیگر اینکه اگر بخواهیم بین دوتاریخ در فرم f_pas_date  را انتخاب نماییم..کجای مازول باید دستکاری شود وچطور؟.....تاریخ ها در بین دوتاریخ فروردین ماه زده شود.

----------


## amirzazadeh

> امیر جان با تشکر دوباره از جواب سوال قبلی :...............مشکل دیگر اینکه اگر بخواهیم بین دوتاریخ در فرم f_pas_date  را انتخاب نماییم..کجای مازول باید دستکاری شود وچطور؟.....تاریخ ها در بین دوتاریخ فروردین ماه زده شود.


نمونه اصلاح شده رو ببينيد:

----------


## hada22

سلام دوستان.نمونه راگذاشتم.میخوام فاصله بین ساعت خروج تا ساعت ورود به عنوان ساعت مفید نمایش داده شود.
تشکر

----------


## hada22

دوستان میخوام قضیه یه کم سخت تر شود(البته سخت برای من نه شما).درواقع من دارم برای شیفت نگهبانی شرکت خودمان یه برنامه مینویسم.شیفتهای نگهبانی 5ساعته است واینکه شبانه باشن یا روزانه خیلی مهمه.حالا من میخوام اگه نگهبانی تونیمه اول ساله وساعت شروعش بین 17تا3 فردا صبحشه (یعنی حد اقل 3ساعتش توشب باشه)نوع نگهبانی را شبانه نمایش بده والا بنویسه روزانه.ونیمه دوم اگه ساعت شروع بین ساعت 15 تا3فرداصبحش نوع نگهبانی را بزنه شبانه.تشکرمیکنم اگه دوستان کمک کنن.

----------


## bemilove

hada فایل را ببینید.....به رویداد after update  توجه نمایید.(همه text box  ها)

----------


## hada22

bemiloveعزیز،تشکرمیکنم از جواب شما.امامشکلی که وجود داره اینه که ساعت مفید را میخواهم به عنوان یک داده ازنوع نامبر باشه تا بتونم محاسبات روش انجام بدم.

----------


## bemilove

فایل را ببینید..به نظر من باید این زمان از نوع date/time  باشد.ویک table  که داده ها روی آن ذخیره شود.برای محاسبه می توانید در گزارش این کار را انجام دهید.

----------


## reza850101

> باسلام و تشكر از زحمتي كه متحمل ميشويد من به يك مشكل مواجهم گزارشم را گروه بندي كرده ام برايتان ارسال ميكنم اما استفاده ازاين ماجول باعث ميشود جمع هرگروه بتفكيك انجام نشود  كل ركوردها راجمع ميزند، ممنون ميشم نگاهي بگزارشم بياندازيد


 دوستان !!!!!

----------


## amirzazadeh

> دوستان !!!!!


سلام
خوب بايد هم همينطور باشه براي اينكه  ماجول كل ركوردست رو پيمايش كرده و جمع رو براتون نمايش ميده. تابع sum  كه استفاده كردين چه مشكلي داره ؟

----------


## bemilove

معذرت........اشکال این ماژول در فایل پیوستی کجاست..می خواهیم مجموع پاس های گرفته شده یک فرد در یک دوره تاریخی مشخص کنیم (از نظر زمانی)

----------


## amirzazadeh

سلام
مشكل اينه كه در جدول t_pas  به جاي فيلد personel  از فيلد name استفاده شده.با اصلاح كد به اين شكل خطا برطرف ميشه:
 Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE " & "(t_pas.name)=" & [Forms]![f_pas_doreh].[Combo0])

----------


## reza850101

> سلام
> خوب بايد هم همينطور باشه براي اينكه  ماجول كل ركوردست رو پيمايش كرده و جمع رو براتون نمايش ميده. تابع sum  كه استفاده كردين چه مشكلي داره ؟


دوست عزيزدر sum بيش از 24 ساعت مشكل دارد و جمع نميكند

----------


## bemilove

> سلام
> مشكل اينه كه در جدول t_pas  به جاي فيلد personel  از فيلد name استفاده شده.با اصلاح كد به اين شكل خطا برطرف ميشه:
>  Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE " & "(t_pas.name)=" & [Forms]![f_pas_doreh].[Combo0])


**************************************************  ************
معذرت....مشکل اینجاست که با تعغیرات بالا ،درگزارش وقتی از تاریخ 89/01/01 لغایت 89/01/10 گزارش می گیریم 69:55 دقیقه حساب می کندوقتی از تاریخ 89/01/01 لغایت 89/01/20 می گیریم 150:46 دقیقه واگر بین 89/01/01 لغایت 89/01/30 بگیریم 278 ساعت حساب می گیرید.اولا جمع ساعت مغایرت دارد.دوم اینکه جمع  ساعت برای همه یکی است.....کمک

----------


## hada22

سلام دوستان عزیز.درمورد اشکالات این فرم اگه امکان داره بنده راراهنمایی بفرمایید.
هدف من از طراحی این فرم ،همونطور که درپست قبلترخدمت دوستان عرض کردم مشخص کردن نوع نگهبانی(شبانه یاروزانه)با توجه به ساعت شروع نگهبانی میباشد.بایدحداقل سه ساعت ازنگهبانی درشب باشدو چون غروب خورشید درنیمه اول دیرترازنیمه دوم میباشد که باید شرطی بزاریم که فقط ماه شروع نگهبانی اگه بین عدد 1 تا 6باشدوساعت شروع نگهبانی بین 16:00تا 03:00روزبعد باشه.دراین صورت نوع نگهبانی میشود شبانه وگرنه روزانه میباشد.وبرای نیمه دوم هم ماه نگهبانی بین 7تا 12باشد وساعت شروع نگهبانی هم بین 15:00تا03:00روزبعد باشه نوع نگهبانی شبانه بشه درغیر این صورت روزانه میشود.
من با توجه با عقل ناقص خودم یه چیزی نوشتم که خیلی مشکل داره ولی درجهت بهتر فهمیدن مشکل بنده میتونه کمک کنه.

----------


## hada22

ازدوستان عزیز خواهشمندم که بنده رادرحل مشکلم یاری بفرمایند.

----------


## bemilove

فایلت رو با اکسس 2033 آپلود کن...شاید کمکی بتونم بهتون بکنم...............................{آقای amirzazadeh جواب کامنت 27 چی شد}

----------


## reza850101

> دوست عزيزدر sum بيش از 24 ساعت مشكل دارد و جمع نميكند


دوستان يك وقتي هم بما بدهيد ، اين ماجول را نميشه طوري نوشت كه گروهي عمل كند من كدنويسي نميدانم وگرنه مصدع اوقات نميشدم !!!!!!!!!!!!!

----------


## hada22

سلام bemiloveعزیز.درمورد اشکالات این فرم اگه امکان داره بنده راراهنمایی بفرمایید.
هدف من از طراحی این فرم ، مشخص کردن نوع نگهبانی(شبانه یاروزانه)با توجه به ساعت شروع نگهبانی میباشد.بایدحداقل سه ساعت ازنگهبانی درشب باشدو چون غروب خورشید درنیمه اول دیرترازنیمه دوم میباشد که باید شرطی بزاریم که فقط ماه شروع نگهبانی اگه بین عدد 1 تا 6باشدوساعت شروع نگهبانی بین 16:00تا 03:00روزبعد باشه.دراین صورت نوع نگهبانی میشود شبانه وگرنه روزانه میباشد.وبرای نیمه دوم هم ماه نگهبانی بین 7تا 12باشد وساعت شروع نگهبانی هم بین 15:00تا03:00روزبعد باشه نوع نگهبانی شبانه بشه درغیر این صورت روزانه میشود.

----------


## reza850101

اساتيد روش جمع  اين چند ساعت را يگوييد .ممنون
10:12
12:12
08:00
15:35
بايد 45:59 شود

----------


## mahdi_107

شما چند ساعت را با هم جمع مي زنيد و مثلا در يك متغير بنام S قرار ميدهيد
حا لا مجموع ساعت برابر است با:
Int((S)*24)و مجموع دقيقه برابر با:
Round((((S)*24)-(Int((S)*24)))*60)

حالا يك ساعت داريد و يك دقيقه.

----------


## reza850101

دوست عزيز من هرچه كلنجار رفتم كد رانتوانستم استفاده كنم اگر نمونه داريد ممنون ميشم فايل نمونه را هم اگر وقت بگذاريد نگاه كنيد ممنون ميشم  گزارش را نگاهي بيانداز

----------


## mahdi_107

اينهم خدمت شما اخوي

در گزارشت قسمت (Footer شماره ) رو اصلاح كردم ببين:

Copy of db10.rar

----------


## reza850101

مهدي جان ممنون زحمت كشيدي،

----------


## reza850101

دوستان من از بين پرسنل ميخواهم كساني بيشترين تاخير رادارندشناسايي كنم
البته من خواستم از max استفاده كنم كه جوابگو نبود ، ضمنا شايد بتوان از طريق سورت كردن هم اينكار را كرد ، اما بيشترين كارم اينه كه پرسنلي كه بيشترين تاخير را در اين چندين ماهه داشتن شناسايي كنم ممنون ميشم وقت بگذاريد

----------


## reza850101

> اينهم خدمت شما اخوي
> 
> در گزارشت قسمت (Footer شماره ) رو اصلاح كردم ببين:
> 
> Copy of db10.rar


آقاي مهدي : چطور ميتونم جمع مرخصي را سورت كنم درواقع گزارش بر اساس  بيشترين جمع (=Int(Sum([مرخصي])*24) & ":" & Round(((Sum([مرخصي])*24)-Int(Sum([مرخصي])*24))*60))ساعت  مرخصي را مرتب شود

----------


## mahdi_107

در كيوري خيلي راحت مثل نمونه پيوست سورت انجام ميشه (كيوري شماره 2)
اميدوارم كارتون راه بيوفته

يك پيشنهاد : براي نامگذاري فيلدهاتون از نامهاي فارسي استفاده نكنيد و نام فارسي را در قسمت caption  فيلد وارد نماييد.

db1Time.rar

----------


## reza850101

> دوستان من از بين پرسنل ميخواهم كساني بيشترين تاخير رادارندشناسايي كنم
> البته من خواستم از max استفاده كنم كه جوابگو نبود ، ضمنا شايد بتوان از طريق سورت كردن هم اينكار را كرد ، اما بيشترين كارم اينه كه پرسنلي كه بيشترين تاخير را در اين چندين ماهه داشتن شناسايي كنم ممنون ميشم وقت بگذاريد


*oخيلي خيلي ممنون اين فايل نمونه ات خيلي كارم را راه انداخت -* 
ممكنه راهنمايي هم در مورد اين خواستم بكنيد : افرادي كه بيشترين (مثلا تاخير) را داشته اند در ماههاي مختلفت پيداشود مثلا در ماه 3 - اميري  درماه 4 و 5 كريمي و...

----------


## reza850101

دوستان محبت كنيد

----------


## bemilove

دوستان کمک!

----------


## bemilove

مدیرمحترم انجمن آقای*amirzazadeh*

 شما  آقا 
* کمک کنید....ممنون.....
*

----------


## bemilove

کسی نبود کمک کنه...تورو خدا

----------


## bemilove

بازم...کمک یکی جوبمو بده عزیزان

----------


## mahdi_107

در خط



> Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE (t_pas.personel)=" & Form_f_pas_doreh.Combo0)


تيبل t_pas فيلدي به نام personel ندارد (t_pas.personel)

----------


## dadsara

سلام
این فانکشن را به صورت زیر تغییر دهید
Function GetTimeRoozanehTotal3()
         Dim db As Database, rs As Recordset
         Dim totalhours As Long, totalminutes As Long
         Dim days As Long, Hours As Long, Minutes As Long
         Dim interval As Variant, j As Integer
         
         Set db = DBEngine.Workspaces(0).Databases(0)
        ' Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE " & "(t_pas.personel)=" & [Forms]![f_pas_doreh].[Combo0])
         Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE " & "(t_pas.name)=" & [Forms]![f_pas_doreh].[Combo0])
         Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE (t_pas.date) between '" & [Forms]![f_pas_doreh].[Text1] & " ' and '" & [Forms]![f_pas_doreh].[Text2] & " '")
                                                         
         interval = #12:00:00 AM#
'
            While Not rs.EOF
               interval = interval + rs![pastime]
               rs.MoveNext
            Wend
         totalhours = Int(CSng(interval * 24))
         totalminutes = Int(CSng(interval * 1440))
         Hours = totalhours Mod 24
         Minutes = totalminutes Mod 60
     ' GetTimeRoozanehTotal = totalhours & "ÓÇÚÊ" & Minutes & "ÏÞíÞå"
        GetTimeRoozanehTotal3 = totalhours & ":" & Minutes
      End Function

----------


## bemilove

عزیزان تعغیرات انجام شد ولی 2 مشکل دارد.1- اگر من پاس اقای حسن را از تاریخ 89/01/01 تاتاریخ 89/01/10 گزارش بگیرم.مجموع پاس ایشان 69:55 دقیقه نشان می دهد ولی در اصل مجموع (به صورت دستی ودقیق) 25:10 دقیقه است.(اشتباه محاسباتی).....2- اگر این گزارش را برای فرد حسین انجام دهیم ، هم 69:55 نشان میدهد در صورتیکه حسین در این مدت پاسی نداشته است.

----------


## bemilove

مشکل پا برجاست!!

----------


## bemilove

مشکل هنوز پابرجاست!

----------


## bemilove

عزیزان تعغیرات انجام شد ولی 2 مشکل دارد.1- اگر من پاس اقای حسن را از  تاریخ 89/01/01 تاتاریخ 89/01/10 گزارش بگیرم.مجموع پاس ایشان 69:55 دقیقه  نشان می دهد ولی در اصل مجموع (به صورت دستی ودقیق) 25:10 دقیقه  است.(اشتباه محاسباتی).....2- اگر این گزارش را برای فرد حسین انجام دهیم ،  هم 69:55 نشان میدهد در صورتیکه حسین در این مدت پاسی نداشته است

----------


## mahdi_107

نمونت اصلاح شد. ببين همينه

----------


## جعفر88

> من هم در جمع ساعت در گزارش مشکل دارم.آن تاپیکی  که معرفی کردید کمکی به من نمی کند.تمام تالار را زیر رو کردم یک مورد پیدا  کردم که در فرم جمع ساعت محاسبه می کند.اما جمع ساعت در گزارش جایی ندیدم  .لطفا کمکم کنید.مثال ضمیمه است (جمع ساعت آقای حسن را در گزارش محاسبه  کنید)............بیسار ممنون


 دوست عزيز سلام
 موضوعي كه ايجاد كردين خيلي طولاني شده و از حوصله دنبال كردم خارج شد ولي  نمي دونم مشكلي كه نقل قول كردم حل شده يا نه؟ در گزارش دوم فايلتون(منظور  فايل با نام test) يك كادر متني (text box) در قسمت Report Footer بزارين و  خاصيت Control Source آن را به =Sum(takhir) تغيير دهيد .

----------


## bemilove

سلام - مشکل با پاسخ mahdi_107 حل گردید...ممنون از پیگیری شما

----------


## bemilove

دوستان عزیز، مورد پاس هاییک فرد رد یک دوره زمانی مشکل داره -----------ساعت با آنچه هست نمی خواند

----------


## mahdi_107

ببينيد منظورتون همين بود

----------


## bemilove

مهدي آقا كد شما كاملا درست جواب مي دهد.....ولي اگر بر اساس ما‍‍ژول موجود در برنامه هم درست كني آنوقت يك برنامه رفرنس جمع ساعت خواهد بود كه بايد در برنامه هاي كاربردي قرار داد...

----------


## mahdi_107

سلام
در ماژول MdHooroof يك تابع با نام TimeSum ايجاد كردم
بررسي بفرماييد.

----------

