Domanda

I am getting this error while debugging.

when converting a string to date time object parse the string to take the date before putting each variable in the date time object

Can any one suggest me a solution for how to resolve it?

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        var employeeid = PayrollHelper.Context.Payroll_PersonalDetails.Where(a => a.Employee_Code == txtEmployCode.Text).Select(a => a.Employee_id).First();
        var source = PayrollHelper.Context.Payroll_SalaryDetails.Where(a => a.fkEmployee_ID == Convert.ToInt32(employeeid) && a.SalaryOfMonth.Value.Month == Convert.ToDateTime(lbMonth.Text).Month).Select(a => a);

        if (source.Count() == 0)
        {
            var Count = PayrollHelper.Context.Payroll_AdvanceManagements.Where(a => a.fkEmployee_ID == employeeid).Select(a => a);
            if (Count.Count() != 0)
            {
                var salary_ad = PayrollHelper.Context.Payroll_AdvanceManagements.Where(a => a.fkEmployee_ID == employeeid).Select(a => a).First();
                if ((salary_ad.Salary_Advance > salary_ad.Refund_Advance) && txtAdvanceDeduction.Text != "")
                {
                    salary_ad.Refund_Advance = salary_ad.Refund_Advance + Convert.ToDecimal(txtAdvanceDeduction.Text);
                    PayrollHelper.Context.SubmitChanges();
                    Payroll_AdvanceRefundBL obj = new Payroll_AdvanceRefundBL(Convert.ToDecimal(txtAdvanceDeduction.Text), DateTime.Now, employeeid);

                    if (obj.Insert())
                    {

                    }
                }
            }

            bool cl = false;
            if (ViewState["cl"] != "")
            {
                cl = true;
            }
            Payroll_SalaryDetailBL obj1 = new Payroll_SalaryDetailBL(Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbPay.Text), 2)), Convert.ToSingle(Math.Round(Convert.ToDouble(txtGeneralWorkingDays.Text), 2)), Convert.ToSingle(Math.Round(Convert.ToDouble(lbNumberDay.Text), 2)), Convert.ToDecimal(lbInsentive.Text), Convert.ToString(Math.Round(Convert.ToDecimal(lbExtraHour.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbBenifit.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(txtInvolument.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbGross.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbBasic.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbHRA.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbCridtTotal.Text), 2)), Convert.ToDecimal(Math.Ceiling(Convert.ToDouble(lbNett.Text))), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbSalaryAd.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(txtAdvanceDeduction.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbPF.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbESI.Text), 2)), Convert.ToDecimal(Math.Round(Convert.ToDecimal(lbDeductionTotal.Text), 2)), Convert.ToDateTime(txtSalaryDate.Text).AddMonths(-1), cl, Convert.ToInt32(employeeid));
            if (obj1.Insert())
            {

            }
        }


}
È stato utile?

Soluzione

What value you are getting for lbMonth.Text ?

If you are getting string like January, February,.... then you need to parse the datetime.

For this just replace-

Convert.ToDateTime(lbMonth.Text).Month

with

DateTime.ParseExact(lbMonth.Text, "MMMM", CultureInfo.CurrentCulture).Month

Altri suggerimenti

That error means that your conversion to a DateTime is failing. In this line:

var source = PayrollHelper.Context.Payroll_SalaryDetails.Where(a => a.fkEmployee_ID == Convert.ToInt32(employeeid) && a.SalaryOfMonth.Value.Month == Convert.ToDateTime(lbMonth.Text).Month).Select(a => a);

Specifically here:

Convert.ToDateTime(lbMonth.Text)

In your code, it looks like you are trying to convert just a month to a full DateTime. This will throw a FormatException, as it's not a complete Date or Time.

You're trying to compare it to a.SalaryOfMonth.Value.Month. Whatever data type "Month" is there, you want to do something to convert "lbMonth.Text" to a comparable value in a different way.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top