2

我需要帮助减去MonthlySalary迟到、半天惩罚和提早,但要加上加班奖励

表格示例

CREATE TABLE PAYROLL
(
    RegEmpID INT,
    PayID INT IDENTITY (100, 1) PRIMARY KEY,
    TardyPenalty DECIMAL,
    HalfdayPenalty DECIMAL,
    EarlyOutPenalty DECIMAL,
    MonthlySalary DECIMAL,
    OvertimeReward DECIMAL
)

我似乎无法找到单独或全部解决它们的方法

所以基本上就是这样,在asp.net中有一个下拉列表,其中每一个都有一个值,特别是late = 50 halfday = 50 earlyout = 50。薪水已经有一个设定值,每次我尝试它似乎都会覆盖总数与他们的价值。

这是代码

protected void btnupdatepay_Click(object sender, EventArgs e)
{
    double total;
    double tardy;
    double half;
    double early;
    double payroll;
    double overtime;

    total = 0;
    tardy = 0.0;
    half = 0.0;
    early = 0.0;
    payroll = 0.0;
    overtime = 0.0;

    if (Penalty.SelectedValue == "Tardy")
    {
        tardy = 50;
        total = total - tardy;
    }

    if (Penalty.SelectedValue == "Half Day")
    {
        half = 100;
        total = total - half;
    }

    if (Penalty.SelectedValue == "Early Out")
    {
        early = 50;
        total = total - early;
    }

    if (Penalty.SelectedValue == "Overtime")
    {
        overtime = 100;
        total = total + overtime;
    }

    total = total + overtime - half - early - tardy;

    int rowsAffected;

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ConnectionString);
    SqlCommand cmd = new SqlCommand("UPDATE PAYROLL SET [TardyPenalty] = @TardyPenalty, [HalfdayPenalty] = @HalfdayPenalty, [EarlyOutPenalty] = @EarlyOutPenalty , [OvertimeReward] = @OvertimeReward, [MonthlySalary]= @MonthlySalary WHERE [PayID] = @PayID", con);

    cmd.Parameters.AddWithValue("@TardyPenalty", tardy);
    cmd.Parameters.AddWithValue("@HalfdayPenalty", half);
    cmd.Parameters.AddWithValue("@EarlyOutPenalty", early);
    cmd.Parameters.AddWithValue("@PayID", txtpayid.Text);
    cmd.Parameters.AddWithValue("@OvertimeReward", overtime);
    cmd.Parameters.AddWithValue("@MonthlySalary", total);

    try
    {
        con.Open();
        rowsAffected = cmd.ExecuteNonQuery();

        datapay.DataBind();
    }
    finally
    {
        con.Close();
    }
}

也许我做错了什么 - 找不到方法

4

2 回答 2

0

您从局部变量 total 开始为 0

总计 = 0

现在您正在对此 0 进行计算。将其作为全局变量并使用与局部变量不同的名称

于 2018-08-26T14:19:55.720 回答
0

似乎您的“总”变量在您的处理程序中应该有不同的名称。例如,尝试使用 _total:

double _total = 0;

//work with _total

total = _total + ...
于 2018-08-26T13:53:53.783 回答