PDA

View Full Version : محاسبه روی زمان در DB و #C



alidaniyali
شنبه 13 مهر 1387, 07:29 صبح
سلام به دوستان .
با این قطعه کد میشه اختلاف زمان بین دو تایم رو بدست آورد :



DateTime DT1 = DateTime.Parse("10:20");
DateTime DT2 = DateTime.Parse("9:20");
TimeSpan TS = DT1 - DT2;


خوب حالا توی برنامه یه DB داریم که می خواهیم این دو تایم رو یکی به عنوان ساعت ورود و دیگری به عنوان ساعت خروج وارد برنامه شه و بعد از محاسبه کردن و بدست آوردن جواب از روش بالا با جواب همین محاسبه در رکورد بعدی جمع شود و همینطور تا آخر .
به این ترتیب می خواهیم در کل ساعات یک فرد را که در زمان حضور داشته را بدست آوریم .
از دوستان خواهش می کنم من رو راهنمایی کنند ، چون فعلا گیرشیم !

majid325
شنبه 13 مهر 1387, 08:17 صبح
اگه جمع زمانها رو ميخواي با يد 2 تا فيلد(ورود و خروج) داشته باشي و تو كوئري جمع اختلاف اينها رو بدست بياري،

يا با روش بالا كه خودت كار ميكني اختلاف رو بدست بياري و:

SELECT Sum(TbTime.Time) AS TotalTime FROM TbTime;

alidaniyali
شنبه 13 مهر 1387, 08:54 صبح
خوب حالا یه سوال اینکه کدوم منطقی تره query یا کد #C ؟
وقتی که اختلاف دو تا زمان رو بدست آوردم نتیجه باید یه جا ذخیره بشه که با نتیجه رکورد بعدی جمع بشه البته با یکی دو تا شرط باید اون زمانها از هر رکورد انتخاب بشوند مثل نام رو باید چک کن بعد محاسبه کنه .
؟

majid325
شنبه 13 مهر 1387, 10:46 صبح
من كه نميدونم سناريو يه شما چيه!
اگه كاربر به طور نامنظم وارد سيستم ميشه و اطلاعاتي كه شما ميخواين مربوط به يك دوره كوتاه نباشه(در حد يك روز) كه حتما بايد اطلاعات رو در جدول ذخيره كني ، خوب موقعي هم كه در جدول ذخيره بشه نياز به كوئري هست(براي اطلاعاتي كه ميخواي) حالا اگه مشكل خاصي در هنگام ذخيره اختلاف ساعت نداري(از نظر سناريو)
بهتر براي اينكه كمتر با سرور سر و كله بزني توي c# اختلاف رو در بياري و بعد در يه فيلد ذخيره كني ، بعدش هم كه با يه كوئري جمع ساعتهاي كاربر مورد نظرت رو بدست بيار.

alidaniyali
شنبه 13 مهر 1387, 14:44 عصر
معزرت از اینکه سناریو رو نگفتم .
سناریو از این قراره که برنامه یک برنامه ساعات ورود و خروج . هر فرد در طول روز می تونه چند ساعت ورود و خروج داشته باشه . حالا برنامه یه سیستم آمار گیری داره که آمار ساعات حضور کارکنان رو تو 30 روز قبل 3و6 ماه و همینطور سالیانه به صورت ساعتی بر می گردونه .
یه DB به عنوان ثبت ساعات ورود و خروج کارمندان استفاده میشه . پس اول می آد نام کاربری شخص رو select می کنه بعد زمان حضور او کاربر رو در طول روز محاسبه می کنه ( تفریق ساعت خرج از ورود ) بعد با نتیجه همین محاسبه تو رکورد بعدی این کاربر جمع می شه و الی آخر .
اینجوری ساعات حضور یه کارمند در می آد . حالا با یه فیلتر میشه مشخص کرد که 30 روز قبل 6 ماه قبل و ....
حالا سوال اینکه این الگوریتم کار ، چه جوری عملی کنیم !!؟

alidaniyali
شنبه 13 مهر 1387, 22:39 عصر
کوئری برای جمع ساعت که مثل sum عمل کنه هست ؟

majid325
یک شنبه 14 مهر 1387, 06:39 صبح
کوئری برای جمع ساعت که مثل sum عمل کنه هست ؟
پست 2 همينه.(البته يه مشكل كوچولو داشت درست شد)
الگوريتم كا رو كه يه روشش رو من گفتم يه روش هم خودت.
اگه مشكلت نحوه كد نويسي هست بگو كدوم قسمت رو مشكل داري؟

alidaniyali
یک شنبه 14 مهر 1387, 08:41 صبح
خوب اول تشکر از شما.
روش به این صورت که که ساعت ورود و خروج هر فرد در یک رکورد مجزا در tbl ورود و خروج ثبت می شه .
1- یه کوئی می خواهیم که اول اون رکوردهایی مخصوص کاربری که ما می خواهیم برامون select کنه بعد جواب تفریق ساعت خروج از ساعت ورود اون رکورد رو توی فیلد مخصوص جواب محاسبه ذخیره کنه .
2- در آخر که تمامی فیلد های جواب محاسبه پر شد توی c# مجموع ساعات محاسبه شه و جواب به user نشون داده بشه .
خوب فعلا روش کد این دو تا سوال ؟
ممنون

alidaniyali
دوشنبه 15 مهر 1387, 08:21 صبح
یکی کمک کنه ، گیرم به خدا !

alidaniyali
سه شنبه 16 مهر 1387, 18:31 عصر
نبوووووووود ؟

majid325
سه شنبه 16 مهر 1387, 22:21 عصر
نبوووووووود ؟
ببين، خوب دقت كن تا بتوني مشكلت رو انتقال بدي! الان مشكلت نوشتن كوئري هست ؟