PDA

View Full Version : حضور غیاب



zahra7011
سه شنبه 31 تیر 1393, 10:09 صبح
سلام دوستان

من میخوام یک برنامه حضور و غیاب و محاسبه حقوق البته در حد ساده بنویسم...

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

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


البته اگر روش دیگه ای واسه حضور غیاب به ذهنتون میرسه ممنون میشم اگه بهم بگید..

juza66
سه شنبه 31 تیر 1393, 10:35 صبح
البته نمیدونم برای محاسبه حقوق نیازی به جدول جداگانه هست یا یه فیلد در جدول حضور غیاب کفایت میکنه؟؟



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





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

وقتی دکمه ثبت رو میزنید چک کنید ببینید امروز ورودی ثبت شده است یا نه

zahra7011
سه شنبه 31 تیر 1393, 11:16 صبح
[B] وقتی دکمه ثبت رو میزنید چک کنید ببینید امروز ورودی ثبت شده است یا نه

اخه همین چک کردن ثبت ورودی رو من نمیدونم چجوری بنویسم... میتونید یکم بیشتر توضیح بدید ؟

Ali.hitter
سه شنبه 31 تیر 1393, 11:27 صبح
یه کوئری بزنید دیگه با چی به دیتابیس connect شدین؟
دیتابیس چی هست؟

juza66
سه شنبه 31 تیر 1393, 11:28 صبح
شما یک سلول گذاشتی برای ثبت تاریخ درسته :!
خوب حالا قبل از اینکه بخوای امروز رو برای اون فرد ثبت کنی چک کن ببین اون روز برای این فرد ثبت شده یا نه

یه مثال کوچیک برای ثبت تاریخ:


cn.Open();
_sqlQrb = "Select * from tbl1 Where date = '" + date.Text + "'";
cmd.CommandText = _sqlQrb;
cmd.Connection = cn;
OleDbDataReader dr2 = cmd.ExecuteReader();
if (dr2 != null)
{
dr2.Read();

if (dr2.HasRows)
{
MessageBox.Show("این تاریخ قبلا برای فرد ثبت گردیده", @"خطا", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);



}

else
{

اگر تاریخ بالا برای فرد ثبت نشده بود در اینجا ثبت تاریخ رو انجام میدیم
}

felfely
سه شنبه 31 تیر 1393, 11:29 صبح
سلام.
سوال شما به دو قسمت طراحی پایگاه داده و کدنویسی تقسیم میشه.
در طراحی پایگاه داده روابط زیر باید برقرار باشه:

جدول کارمند ---> کد کارمند - نام کارمند - نام خانوادگی کارمند - ...
جدول حضور و غیاب ---> شماره ردیف جدول حضور و غیاب - کد کارمند - ساعت ثبت - تاریخ ثبت - ...

اونایی که زیرش خط کشیده شده کلید اصلی جدول و اونایی که آبی هستن با هم رابطه کلید اصلی و کلید خارجی دارن.

در کدنویسی کاری که شما می کنید کافیه که فقط وقتی دکمه ثبت کلیک شد، باید دو شرط زیر با هم برقرار باشه تا رکورد جدید تو جدول قبت بشه:
1. هیچ کد کارمندی با کد کارمندی وارد شده مساوی باشه
2. هیچ تاریخ ثبتی با تاریخ ثبت وارد شده مساوی باشه

برای آموزش کدنویسی هم تا بخواهید در اینترنت آموزش وجود داره.

در پناه حق
موفق و موید باشید.

zahra7011
چهارشنبه 01 مرداد 1393, 08:18 صبح
ممنون از همه دوستان که راهنمایی کردن



یه کوئری بزنید دیگه با چی به دیتابیس connect شدین؟
دیتابیس چی هست؟
دیتابیس اکسس هست.. میشه یه مثال بزنید که کوئری بنویسم؟





شما یک سلول گذاشتی برای ثبت تاریخ درسته :!
خوب حالا قبل از اینکه بخوای امروز رو برای اون فرد ثبت کنی چک کن ببین اون روز برای این فرد ثبت شده یا نه
درسته، کدی رو که لطف کردید نوشتید رو امتحان کردم اما مشکل اینه که کد کارمند رو چک نمیکنه به همین دلیل هم فقط اجازه ی ثبت یک تاریخ رو برای هر فرد میده ... مثلا امروز اجازه ثبت تاریخ برای کسی که دیروز واسش حضوری زده شده را نمیدهد.. لطفا میشه این مشکل رو هم رفع کنید؟




در کدنويسي کاري که شما مي کنيد کافيه که فقط وقتي دکمه ثبت کليک شد، بايد دو شرط زير با هم برقرار باشه تا رکورد جديد تو جدول قبت بشه:1. هيچ کد کارمندي با کد کارمندي وارد شده مساوي باشه
2. هيچ تاريخ ثبتي با تاريخ ثبت وارد شده مساوي باشه


براي آموزش کدنويسي هم تا بخواهيد در اينترنت آموزش وجود داره.

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

Ali.hitter
چهارشنبه 01 مرداد 1393, 13:44 عصر
دیتابیس اکسس هست.. میشه یه مثال بزنید که کوئری بنویسم؟
توی اینترنت یه سرچی بکنید مثال زیاد داره خصوصا اگه از linq استفاده کنید ک خیلی عالیه مثلا تو linq ااینجوری میشه :
[/CSHARP]var qExist = db.tbl.where(c => c.name == employee_name && c.hozurghiab == hazer);
int x = qExist.Count();[/CSHARP]

اگه x صفر بشه یعنی رکوردی توی دیتابیس نیست ک فیلد name اون اسم مورد نظر باشه و فیلد hozurghiab اون برابر با حاضر باشه