نمایش نتایج 1 تا 6 از 6

نام تاپیک: اعتبار سنجی ساعت وارد شده طبق شیفت

  1. #1

    اعتبار سنجی ساعت وارد شده طبق شیفت

    یه فرم دارم :
    EtebarSanji.jpg

    یه جدول TblTimelyHeader دارم که میام تاریخ و آی دی شیفت و ساعت شروع و پایان شیفت از نوع Time(7) توش نگه میدارم .
    تو جدول TblTimelyContent هم میام و بر اساس هر ماشین ساعت شروع و پایان تولید و زمان رگلاژ و زمان استراحت رو وارد میکنم .
    که امکان داره به ازای هر ماشین چندین بار رکورد ثبت بشه
    حالا خواسته هام اینا:
    1- اعتبار سنجی زمان شروع و پایان تولید طبق شیفت (مخصوصا شیفت های که توی دو روز قرار داره)
    2 - مجموع زمان تولید و رگلاژ از زمان کل شیفت به ازای هر ماشین بیشتر نشه .

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




    private void button1_Click(object sender, EventArgs e)
    {
    int beginTime = Convert.ToInt32(ShifttimeBegin.Substring(0, 2));
    int EndTime = Convert.ToInt32(ShifttimeEnd.Substring(0, 2));
    if (RoozBaadi==false)
    {
    if (Convert.ToInt32(txtHourBegin.Text) < beginTime || Convert.ToInt32(txtHourEnd.Text) > EndTime)
    {
    MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
    return;
    }
    }
    else
    {
    int x = 0;
    switch (txtHourBegin.Text)
    {
    case "00":
    {
    x = 24;
    break;
    }
    case "01":
    {
    x = 25;
    break;
    }
    case "02":
    {
    x = 26;
    break;
    }
    case "03":
    {
    x = 27;
    break;
    }
    case "04":
    {
    x = 28;
    break;
    }
    case "05":
    {
    x = 29;
    break;
    }
    case "06":
    {
    x = 30;
    break;
    }
    case "07":
    {
    x = 31;
    break;
    }
    default:
    x = Convert.ToInt32(txtHourBegin.Text);
    break;

    }
    if (x < beginTime || Convert.ToInt32(txtHourEnd.Text) > EndTime)
    {
    MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
    return;
    }
    }
    int year = Convert.ToInt32(dateShamsi.Substring(0, 4));
    int Month = Convert.ToInt32(dateShamsi.Substring(5, 2));
    int Day = Convert.ToInt32(dateShamsi.Substring(8, 2));
    int Day1 = Convert.ToInt32(dateShamsi.Substring(8, 2));
    System.Globalization.PersianCalendar calendar = new System.Globalization.PersianCalendar();
    if (RoozBaadi == true && (txtHourBegin.Text == "00" || txtHourBegin.Text == "01" || txtHourBegin.Text == "02" || txtHourBegin.Text == "03" || txtHourBegin.Text == "04" || txtHourBegin.Text == "05" || txtHourBegin.Text == "06" || txtHourBegin.Text == "07" || txtHourBegin.Text == "08"))
    {
    Day1++;
    }
    DateTime dt1 = calendar.ToDateTime(year, Month, Day1, Convert.ToInt32(txtHourBegin.Text.Trim()), Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
    if (RoozBaadi == true && (txtHourEnd.Text == "00" || txtHourEnd.Text == "01" || txtHourEnd.Text == "02" || txtHourEnd.Text == "03" || txtHourEnd.Text == "04" || txtHourEnd.Text == "05" || txtHourEnd.Text == "06" || txtHourEnd.Text == "07" || txtHourEnd.Text == "08"))
    {
    Day++;
    }
    DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()), Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
    double totalMinute = (dt2 - dt1).TotalMinutes;
    MessageBox.Show(totalMinute.ToString());
    }


  2. #2
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    860

    نقل قول: اعتبار سنجی ساعت وارد شده طبق شیفت

    سلام دوست عزیز

    سوال به طور کلی است سوال شما رو متوجه نمیشوم به صورت جزئی بیان کنید
    کجا مشکل دارید؟

  3. #3

    نقل قول: اعتبار سنجی ساعت وارد شده طبق شیفت

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

    عکس جداول رو میزارم .
    DateDiff.jpg

  4. #4

    نقل قول: اعتبار سنجی ساعت وارد شده طبق شیفت

    ساده تر میگم .
    یه جدول TblShift دارم که شامل آی دی شیفت - نام شیفت و ساعت شروع و پایان شیفت هست و یه فیلد که مشخص میکنه ساعت پایان توی روز بعدی هست یا نه . مثلا 23 امروز تا 7 روز بعد . یه جدول TblTimelyHeader دارم که میام تاریخ و شیفت رو توش نگه میدارم (منظورم آی دی شیفت هست.) یه جدول TblTimelyContent دارم که که تولیدهام رو توش ثبت میکنم که شامل آی دی ماشین ، آی دی TblTimelyHeader و ساعت شروع تولید و ساعت پایان تولید
    دنبال ساده ترین و بهترین راهکار هستم که ساعت شروع و پایان رو اعتبار سنجی کنم. گیرم هم بیشتر روی شیفت هایی مثل 23 امروز تا 7 روز بعد هستش .

  5. #5

    نقل قول: اعتبار سنجی ساعت وارد شده طبق شیفت

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



    //ساعت شروع شیفت
    int beginTimeHour = Convert.ToInt32(ShifttimeBegin.Substring(0, 2));
    //دقیقه شروع شیفت
    int beginTimeMin = Convert.ToInt32(ShifttimeBegin.Substring(3, 2));
    //ساعت پایان شیفت
    int EndTimeHour = Convert.ToInt32(ShifttimeEnd.Substring(0, 2));
    //دقیقه پایان شیف
    int EndTimeMin = Convert.ToInt32(ShifttimeEnd.Substring(3, 2));
    if (RoozBaadi == false)
    {
    if (Convert.ToInt32(txtHourBegin.Text) < beginTimeHour || Convert.ToInt32(txtHourEnd.Text) > EndTimeHour)
    {


    MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
    return;
    }
    else
    {
    if (Convert.ToInt32(txtHourEnd.Text) == EndTimeHour)
    {
    if (Convert.ToInt32(txtMinEnd.Text) > EndTimeMin)
    {
    MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
    return;
    }
    }
    }
    if (Convert.ToInt32(txtHourBegin.Text) > Convert.ToInt32(txtHourEnd.Text))
    {
    MessageBox.Show("ساعت شروع از ساعت پایان کمتر است");
    return;
    }
    else if (Convert.ToInt32(txtHourBegin.Text) == Convert.ToInt32(txtHourEnd.Text))


    {
    if (Convert.ToInt32(txtMinBegin.Text.Trim()) > Convert.ToInt32(txtMinEnd.Text.Trim()))
    {
    MessageBox.Show("ساعت شروع از ساعت پایان کمتر است");
    return;
    }
    }
    }






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

  6. #6

    نقل قول: اعتبار سنجی ساعت وارد شده طبق شیفت

    حلش کردم .




    private bool TimeChecked()
    {
    bool isCorrect = false;
    System.Globalization.PersianCalendar calendar = new System.Globalization.PersianCalendar();
    int year = Convert.ToInt32(dateShamsi.Substring(0, 4));
    int Month = Convert.ToInt32(dateShamsi.Substring(5, 2));
    int Day = Convert.ToInt32(dateShamsi.Substring(8, 2));
    int beginTimeHour = Convert.ToInt32(ShifttimeBegin.Substring(0, 2));
    int beginTimeMin = Convert.ToInt32(ShifttimeBegin.Substring(3, 2));
    int EndTimeHour = Convert.ToInt32(ShifttimeEnd.Substring(0, 2));
    int EndTimeMin = Convert.ToInt32(ShifttimeEnd.Substring(3, 2));
    if (RoozBaadi == false)
    {
    if (Convert.ToInt32(txtHourBegin.Text) < beginTimeHour || Convert.ToInt32(txtHourEnd.Text) > EndTimeHour)
    {
    MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
    isCorrect = false;
    return isCorrect;
    }
    else if (Convert.ToInt32(txtHourBegin.Text) > Convert.ToInt32(txtHourEnd.Text))
    {
    MessageBox.Show("ساعت پایان از ساعت شروع کمتر است");
    isCorrect = false;
    return isCorrect;
    }
    else if (Convert.ToInt32(txtHourBegin.Text) == Convert.ToInt32(txtHourEnd.Text))
    {
    if (Convert.ToInt32(txtMinBegin.Text) > Convert.ToInt32(txtMinEnd.Text))
    {
    MessageBox.Show("دقیقه پایان از دقیقه شروع کمتر است");
    isCorrect = false;
    return isCorrect;
    }
    else
    {
    DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
    Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
    DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
    Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
    double totalMinute = (dt2 - dt1).TotalMinutes;
    isCorrect = true;
    return isCorrect;
    }
    }
    else if (Convert.ToInt32(txtHourBegin.Text) < Convert.ToInt32(txtHourEnd.Text))
    {
    DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
    Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
    DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
    Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
    double totalMinute = (dt2 - dt1).TotalMinutes;
    isCorrect = true;
    return isCorrect;
    }
    }
    else
    {
    List<int> timeList = new List<int>();
    for (int i = beginTimeHour; i <= 23; i++)
    {
    timeList.Add(i);
    }


    for (int i = 0; i <= EndTimeHour; i++)
    {
    timeList.Add(i);
    }
    int timeBegin = Convert.ToInt32(txtHourBegin.Text.Trim());
    int timeEnd = Convert.ToInt32(txtHourEnd.Text.Trim());
    bool ExistHourBeginInShift = timeList.Contains(timeBegin);
    bool ExistHourEndInShift = timeList.Contains(timeEnd);
    if (ExistHourBeginInShift && ExistHourEndInShift)
    {
    if (beginTimeHour < timeBegin && timeBegin <= 23 && beginTimeHour < timeEnd && timeEnd <= 23)
    {
    DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
    Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
    DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
    Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
    double totalMinute = (dt2 - dt1).TotalMinutes;
    if (totalMinute < 0 || totalMinute == 0)
    {
    MessageBox.Show("اختلاف ساعت وارد شده مجاز نمی باشد . لطفا ساعت را چک کنید");
    isCorrect = false;
    return isCorrect;
    }
    else
    {
    MessageBox.Show(totalMinute.ToString());
    }
    }


    if (beginTimeHour < timeBegin && timeBegin <= 23 && 0 <= timeEnd && timeEnd < EndTimeHour)
    {
    DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
    Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
    Day++;
    DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
    Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
    double totalMinute = (dt2 - dt1).TotalMinutes;
    if (totalMinute < 0 || totalMinute == 0)
    {
    MessageBox.Show("اختلاف ساعت وارد شده مجاز نمی باشد . لطفا ساعت را چک کنید");
    isCorrect = false;
    return isCorrect;
    }
    else
    {
    MessageBox.Show(totalMinute.ToString());
    }
    }


    if (0 <= timeBegin && timeBegin < EndTimeHour && 0 <= timeEnd && timeEnd < EndTimeHour)
    {
    Day++;
    DateTime dt1 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourBegin.Text.Trim()),
    Convert.ToInt32(txtMinBegin.Text.Trim()), 0, 0);
    DateTime dt2 = calendar.ToDateTime(year, Month, Day, Convert.ToInt32(txtHourEnd.Text.Trim()),
    Convert.ToInt32(txtMinEnd.Text.Trim()), 0, 0);
    double totalMinute = (dt2 - dt1).TotalMinutes;
    if (totalMinute < 0 || totalMinute == 0)
    {
    MessageBox.Show("اختلاف ساعت وارد شده مجاز نمی باشد . لطفا ساعت را چک کنید");
    isCorrect = false;
    return isCorrect;
    }
    else
    {
    MessageBox.Show(totalMinute.ToString());
    }
    }


    if (0 <= timeBegin && timeBegin < EndTimeHour && beginTimeHour < timeEnd && timeEnd <= 23)
    {
    MessageBox.Show("ساعت پایان وارد شده در شیفت مورد نظر نمی باشد");
    isCorrect = false;
    return isCorrect;
    }
    }
    else
    {
    MessageBox.Show("ساعت وارد شده در شیفت مورد نظر نمی باشد");
    isCorrect = false;
    return isCorrect;
    }
    }
    return isCorrect;
    }



تاپیک های مشابه

  1. سوال: تغییر اتوماتیک تاریخ و ساعت سیستم به تاریخ و ساعت روز
    نوشته شده توسط mohammad_2039 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: شنبه 16 مهر 1390, 09:11 صبح
  2. سوال: انتخاب نوع فيلد ساعت در ديتابيس و عمليات بر روي ساعت در برنامه
    نوشته شده توسط rezaiy.ali در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 06 بهمن 1387, 10:09 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •