PDA

View Full Version : جمع درساعات



reza850101
چهارشنبه 10 آذر 1389, 14:06 عصر
دوستان در گزارش ضميمه ميخواهم براساس گرروه شماره ساعات مرخص و... جمع شود البته فرمت تكس را به تايم و نام فارسي را به انگليسي تغيير دادم عمل نكرد ممكنه راهنمايي كنيد
ذستور (=sum[مرخصي ]) عمل نميكند

amirzazadeh
پنج شنبه 11 آذر 1389, 13:06 عصر
دوستان در گزارش ضميمه ميخواهم براساس گرروه شماره ساعات مرخص و... جمع شود البته فرمت تكس را به تايم و نام فارسي را به انگليسي تغيير دادم عمل نكرد ممكنه راهنمايي كنيد
ذستور (=sum[مرخصي ]) عمل نميكند
سلام
از اين تاپيك كمك بگيريد:
http://barnamenevis.org/showthread.php?87658-%D9%86%D9%85%D9%88%D9%86%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D9%88-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-VBA&p=438057&viewfull=1#post438057
...................................
موفق باشيد

bemilove
جمعه 12 آذر 1389, 09:20 صبح
سلام مدیر بخش من هم در جمع ساعت در گزارش مشکل دارم.آن تاپیکی که معرفی کردید کمکی به من نمی کند.تمام تالار را زیر رو کردم یک مورد پیدا کردم که در فرم جمع ساعت محاسبه می کند.اما جمع ساعت در گزارش جایی ندیدم .لطفا کمکم کنید.مثال ضمیمه است (جمع ساعت آقای حسن را در گزارش محاسبه کنید)............بیسار ممنون

reza850101
یک شنبه 14 آذر 1389, 12:28 عصر
باسلام و تشكر ، درفايل پيوست ماجول را بافيلد ساعت منطبق كردم اما ارورميدهد
2
- ماجول شما يك فيلد را جمع ميكند براي بيشتر چگونه عمل كنم ؟

amirzazadeh
یک شنبه 14 آذر 1389, 13:17 عصر
باسلام و تشكر ، درفايل پيوست ماجول را بافيلد ساعت منطبق كردم اما ارورميدهد
2
- ماجول شما يك فيلد را جمع ميكند براي بيشتر چگونه عمل كنم ؟
سلام
تو جدول مربوطه در ركورد دوم فيلد تعجيل خالي بود كه باعث بروز خطا ميشه .
در مورد سئوال دوم اول اينكه اين ماژول رو جناب قرباني آماده كردند و دوم اينكه شما ميتونيد به هر تعداد ركوردست تعريف و جمع اونها رو داشته باشيد.
............................
موفق باشيد

bemilove
دوشنبه 15 آذر 1389, 13:39 عصر
مشکل من کسی نمی تونه حل کنه..............................جمع ساعت در گزارش.....نمونه برنامه بالا هست

amirzazadeh
دوشنبه 15 آذر 1389, 14:39 عصر
مشکل من کسی نمی تونه حل کنه..............................جمع ساعت در گزارش.....نمونه برنامه بالا هست
سلام
ببينيد مشكل برطرف شده:

bemilove
دوشنبه 15 آذر 1389, 17:53 عصر
ممنون از پاسخ شما--ولی یک مشکل وجود دارد که این مازول فقط برای یک فرم کاربرد دارد..مثلا اگر ما بخواهیم بر اساس تاریخ یعنی در فرم f_takhir_date هم مجموع ساعت را در گزارش داشته باشیم با مشکل مواجه می شویم.کلا چه باید کرد که در گزارش هر جا بخواهیم مجموع ساعت داشته باشیم مشکل نداشته باشیم.:چشمک:

amirzazadeh
سه شنبه 16 آذر 1389, 12:14 عصر
سلام
با يك تغيير مختصر در فانكشن اول و ذخيره اون با يك نام ديگه در داخل همون ماژول ميتونيد به منظورتون برسيد.
................................
موفق باشيد

bemilove
سه شنبه 16 آذر 1389, 19:20 عصر
بنده مبتدی هستم .ماژول رو دستکاری کردم جواب نمیده......جمع تاخیر ها را در یک تاریخ محاسبه شود.

amirzazadeh
چهارشنبه 17 آذر 1389, 09:53 صبح
بنده مبتدی هستم .ماژول رو دستکاری کردم جواب نمیده......جمع تاخیر ها را در یک تاریخ محاسبه شود.
سلام
كد رو به اين شكل اصلاح كنيد:

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
چهارشنبه 17 آذر 1389, 15:40 عصر
باسلام و تشكر از زحمتي كه متحمل ميشويد من به يك مشكل مواجهم گزارشم را گروه بندي كرده ام برايتان ارسال ميكنم اما استفاده ازاين ماجول باعث ميشود جمع هرگروه بتفكيك انجام نشود كل ركوردها راجمع ميزند، ممنون ميشم نگاهي بگزارشم بياندازيد

hada22
چهارشنبه 17 آذر 1389, 22:07 عصر
سلام دوستان عزیز.من یه برنامه درست کرده ام وتویکی از فرمها میخواهم فاصله بین ساعت ورود وساعت خروج را به عنوان ساعت مفید دریک فیلد دیگر نمایش دهد.
تشکر

bemilove
پنج شنبه 18 آذر 1389, 11:35 صبح
آقای hsda22 نمونه فایل ضمیمه کن

bemilove
پنج شنبه 18 آذر 1389, 12:22 عصر
امیر جان با تشکر دوباره از جواب سوال قبلی :...............مشکل دیگر اینکه اگر بخواهیم بین دوتاریخ در فرم f_pas_date را انتخاب نماییم..کجای مازول باید دستکاری شود وچطور؟.....تاریخ ها در بین دوتاریخ فروردین ماه زده شود.

amirzazadeh
پنج شنبه 18 آذر 1389, 13:20 عصر
امیر جان با تشکر دوباره از جواب سوال قبلی :...............مشکل دیگر اینکه اگر بخواهیم بین دوتاریخ در فرم f_pas_date را انتخاب نماییم..کجای مازول باید دستکاری شود وچطور؟.....تاریخ ها در بین دوتاریخ فروردین ماه زده شود.
نمونه اصلاح شده رو ببينيد:

hada22
پنج شنبه 18 آذر 1389, 17:17 عصر
سلام دوستان.نمونه راگذاشتم.میخوام فاصله بین ساعت خروج تا ساعت ورود به عنوان ساعت مفید نمایش داده شود.
تشکر

hada22
پنج شنبه 18 آذر 1389, 17:29 عصر
دوستان میخوام قضیه یه کم سخت تر شود(البته سخت برای من نه شما).درواقع من دارم برای شیفت نگهبانی شرکت خودمان یه برنامه مینویسم.شیفتهای نگهبانی 5ساعته است واینکه شبانه باشن یا روزانه خیلی مهمه.حالا من میخوام اگه نگهبانی تونیمه اول ساله وساعت شروعش بین 17تا3 فردا صبحشه (یعنی حد اقل 3ساعتش توشب باشه)نوع نگهبانی را شبانه نمایش بده والا بنویسه روزانه.ونیمه دوم اگه ساعت شروع بین ساعت 15 تا3فرداصبحش نوع نگهبانی را بزنه شبانه.تشکرمیکنم اگه دوستان کمک کنن.

bemilove
پنج شنبه 18 آذر 1389, 17:54 عصر
hada فایل را ببینید.....به رویداد after update توجه نمایید.(همه text box ها)

hada22
جمعه 19 آذر 1389, 19:27 عصر
bemiloveعزیز،تشکرمیکنم از جواب شما.امامشکلی که وجود داره اینه که ساعت مفید را میخواهم به عنوان یک داده ازنوع نامبر باشه تا بتونم محاسبات روش انجام بدم.

bemilove
شنبه 20 آذر 1389, 08:54 صبح
فایل را ببینید..به نظر من باید این زمان از نوع date/time باشد.ویک table که داده ها روی آن ذخیره شود.برای محاسبه می توانید در گزارش این کار را انجام دهید.

reza850101
شنبه 20 آذر 1389, 09:11 صبح
باسلام و تشكر از زحمتي كه متحمل ميشويد من به يك مشكل مواجهم گزارشم را گروه بندي كرده ام برايتان ارسال ميكنم اما استفاده ازاين ماجول باعث ميشود جمع هرگروه بتفكيك انجام نشود كل ركوردها راجمع ميزند، ممنون ميشم نگاهي بگزارشم بياندازيد

دوستان !!!!!

amirzazadeh
شنبه 20 آذر 1389, 10:53 صبح
دوستان !!!!!
سلام
خوب بايد هم همينطور باشه براي اينكه ماجول كل ركوردست رو پيمايش كرده و جمع رو براتون نمايش ميده. تابع sum كه استفاده كردين چه مشكلي داره ؟

bemilove
شنبه 20 آذر 1389, 14:11 عصر
معذرت........اشکال این ماژول در فایل پیوستی کجاست..می خواهیم مجموع پاس های گرفته شده یک فرد در یک دوره تاریخی مشخص کنیم (از نظر زمانی)

amirzazadeh
یک شنبه 21 آذر 1389, 08:43 صبح
سلام
مشكل اينه كه در جدول t_pas به جاي فيلد personel از فيلد name استفاده شده.با اصلاح كد به اين شكل خطا برطرف ميشه:

Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE " & "(t_pas.name)=" & [Forms]![f_pas_doreh].[Combo0])

reza850101
یک شنبه 21 آذر 1389, 11:24 صبح
سلام
خوب بايد هم همينطور باشه براي اينكه ماجول كل ركوردست رو پيمايش كرده و جمع رو براتون نمايش ميده. تابع sum كه استفاده كردين چه مشكلي داره ؟

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

bemilove
یک شنبه 21 آذر 1389, 11:31 صبح
سلام
مشكل اينه كه در جدول 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
یک شنبه 21 آذر 1389, 23:24 عصر
سلام دوستان عزیز.درمورد اشکالات این فرم اگه امکان داره بنده راراهنمایی بفرمایید.
هدف من از طراحی این فرم ،همونطور که درپست قبلترخدمت دوستان عرض کردم مشخص کردن نوع نگهبانی(شبانه یاروزانه)با توجه به ساعت شروع نگهبانی میباشد.بایدحداقل سه ساعت ازنگهبانی درشب باشدو چون غروب خورشید درنیمه اول دیرترازنیمه دوم میباشد که باید شرطی بزاریم که فقط ماه شروع نگهبانی اگه بین عدد 1 تا 6باشدوساعت شروع نگهبانی بین 16:00تا 03:00روزبعد باشه.دراین صورت نوع نگهبانی میشود شبانه وگرنه روزانه میباشد.وبرای نیمه دوم هم ماه نگهبانی بین 7تا 12باشد وساعت شروع نگهبانی هم بین 15:00تا03:00روزبعد باشه نوع نگهبانی شبانه بشه درغیر این صورت روزانه میشود.
من با توجه با عقل ناقص خودم یه چیزی نوشتم که خیلی مشکل داره ولی درجهت بهتر فهمیدن مشکل بنده میتونه کمک کنه.

hada22
چهارشنبه 24 آذر 1389, 09:45 صبح
ازدوستان عزیز خواهشمندم که بنده رادرحل مشکلم یاری بفرمایند.

bemilove
شنبه 27 آذر 1389, 18:28 عصر
فایلت رو با اکسس 2033 آپلود کن...شاید کمکی بتونم بهتون بکنم...............................{آقای amirzazadeh جواب کامنت 27 چی شد}

reza850101
یک شنبه 28 آذر 1389, 12:02 عصر
دوست عزيزدر sum بيش از 24 ساعت مشكل دارد و جمع نميكند

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

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

reza850101
چهارشنبه 08 دی 1389, 15:07 عصر
اساتيد روش جمع اين چند ساعت را يگوييد .ممنون
10:12
12:12
08:00
15:35
بايد 45:59 شود

mahdi_107
چهارشنبه 08 دی 1389, 15:33 عصر
شما چند ساعت را با هم جمع مي زنيد و مثلا در يك متغير بنام S قرار ميدهيد
حا لا مجموع ساعت برابر است با:

Int((S)*24)و مجموع دقيقه برابر با:

Round((((S)*24)-(Int((S)*24)))*60)

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

reza850101
شنبه 11 دی 1389, 10:12 صبح
دوست عزيز من هرچه كلنجار رفتم كد رانتوانستم استفاده كنم اگر نمونه داريد ممنون ميشم فايل نمونه را هم اگر وقت بگذاريد نگاه كنيد ممنون ميشم گزارش را نگاهي بيانداز

mahdi_107
شنبه 11 دی 1389, 13:48 عصر
اينهم خدمت شما اخوي

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

64393

reza850101
سه شنبه 21 دی 1389, 15:10 عصر
مهدي جان ممنون زحمت كشيدي،

reza850101
چهارشنبه 22 دی 1389, 09:17 صبح
دوستان من از بين پرسنل ميخواهم كساني بيشترين تاخير رادارندشناسايي كنم
البته من خواستم از max استفاده كنم كه جوابگو نبود ، ضمنا شايد بتوان از طريق سورت كردن هم اينكار را كرد ، اما بيشترين كارم اينه كه پرسنلي كه بيشترين تاخير را در اين چندين ماهه داشتن شناسايي كنم ممنون ميشم وقت بگذاريد

reza850101
پنج شنبه 23 دی 1389, 11:21 صبح
اينهم خدمت شما اخوي

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

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

mahdi_107
پنج شنبه 23 دی 1389, 12:09 عصر
در كيوري خيلي راحت مثل نمونه پيوست سورت انجام ميشه (كيوري شماره 2)
اميدوارم كارتون راه بيوفته

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

64985

reza850101
یک شنبه 26 دی 1389, 13:08 عصر
دوستان من از بين پرسنل ميخواهم كساني بيشترين تاخير رادارندشناسايي كنم
البته من خواستم از max استفاده كنم كه جوابگو نبود ، ضمنا شايد بتوان از طريق سورت كردن هم اينكار را كرد ، اما بيشترين كارم اينه كه پرسنلي كه بيشترين تاخير را در اين چندين ماهه داشتن شناسايي كنم ممنون ميشم وقت بگذاريد
oخيلي خيلي ممنون اين فايل نمونه ات خيلي كارم را راه انداخت -
ممكنه راهنمايي هم در مورد اين خواستم بكنيد : افرادي كه بيشترين (مثلا تاخير) را داشته اند در ماههاي مختلفت پيداشود مثلا در ماه 3 - اميري درماه 4 و 5 كريمي و...

reza850101
پنج شنبه 30 دی 1389, 10:49 صبح
دوستان محبت كنيد

bemilove
یک شنبه 03 بهمن 1389, 11:52 صبح
دوستان کمک!

bemilove
پنج شنبه 07 بهمن 1389, 16:23 عصر
مدیرمحترم انجمن آقایamirzazadeh

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

bemilove
یک شنبه 04 اردیبهشت 1390, 11:51 صبح
کسی نبود کمک کنه...تورو خدا

bemilove
چهارشنبه 14 اردیبهشت 1390, 19:30 عصر
بازم...کمک یکی جوبمو بده عزیزان

mahdi_107
پنج شنبه 15 اردیبهشت 1390, 11:48 صبح
در خط

Set rs = db.OpenRecordset("SELECT * FROM t_pas WHERE (t_pas.personel)=" & Form_f_pas_doreh.Combo0)
تيبل t_pas فيلدي به نام personel ندارد (t_pas.personel)

dadsara
یک شنبه 18 اردیبهشت 1390, 11:52 صبح
سلام
این فانکشن را به صورت زیر تغییر دهید

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
یک شنبه 18 اردیبهشت 1390, 20:59 عصر
عزیزان تعغیرات انجام شد ولی 2 مشکل دارد.1- اگر من پاس اقای حسن را از تاریخ 89/01/01 تاتاریخ 89/01/10 گزارش بگیرم.مجموع پاس ایشان 69:55 دقیقه نشان می دهد ولی در اصل مجموع (به صورت دستی ودقیق) 25:10 دقیقه است.(اشتباه محاسباتی).....2- اگر این گزارش را برای فرد حسین انجام دهیم ، هم 69:55 نشان میدهد در صورتیکه حسین در این مدت پاسی نداشته است.

bemilove
دوشنبه 19 اردیبهشت 1390, 10:29 صبح
مشکل پا برجاست!!

bemilove
پنج شنبه 22 اردیبهشت 1390, 08:17 صبح
مشکل هنوز پابرجاست!

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

mahdi_107
دوشنبه 26 اردیبهشت 1390, 09:00 صبح
نمونت اصلاح شد. ببين همينه

جعفر88
چهارشنبه 28 اردیبهشت 1390, 12:14 عصر
من هم در جمع ساعت در گزارش مشکل دارم.آن تاپیکی که معرفی کردید کمکی به من نمی کند.تمام تالار را زیر رو کردم یک مورد پیدا کردم که در فرم جمع ساعت محاسبه می کند.اما جمع ساعت در گزارش جایی ندیدم .لطفا کمکم کنید.مثال ضمیمه است (جمع ساعت آقای حسن را در گزارش محاسبه کنید)............بیسار ممنون
دوست عزيز سلام
موضوعي كه ايجاد كردين خيلي طولاني شده و از حوصله دنبال كردم خارج شد ولي نمي دونم مشكلي كه نقل قول كردم حل شده يا نه؟ در گزارش دوم فايلتون(منظور فايل با نام test) يك كادر متني (text box) در قسمت Report Footer بزارين و خاصيت Control Source آن را به =Sum(takhir) تغيير دهيد .

bemilove
یک شنبه 01 خرداد 1390, 11:55 صبح
سلام - مشکل با پاسخ mahdi_107 حل گردید...ممنون از پیگیری شما

bemilove
سه شنبه 01 شهریور 1390, 13:38 عصر
دوستان عزیز، مورد پاس هاییک فرد رد یک دوره زمانی مشکل داره -----------ساعت با آنچه هست نمی خواند

mahdi_107
سه شنبه 01 شهریور 1390, 14:32 عصر
ببينيد منظورتون همين بود

bemilove
چهارشنبه 02 شهریور 1390, 00:06 صبح
مهدي آقا كد شما كاملا درست جواب مي دهد.....ولي اگر بر اساس ما‍‍ژول موجود در برنامه هم درست كني آنوقت يك برنامه رفرنس جمع ساعت خواهد بود كه بايد در برنامه هاي كاربردي قرار داد...

mahdi_107
چهارشنبه 02 شهریور 1390, 10:57 صبح
سلام
در ماژول MdHooroof يك تابع با نام TimeSum ايجاد كردم
بررسي بفرماييد.