如何计算数据库中每个组合框值的值?

时间:2016-11-15 19:44:16

标签: c#

如何从数据库计算一个人每小时的工资?

我的代码在这里:

sqc = con.CreateCommand();
string query5 = "SELECT [SalaryGrade] FROM tbl_gradestep where GradeNumber =" + cmbGradeNumber.SelectedItem.ToString() + " and StepNumber =" + cmbStepNumber.SelectedItem.ToString() + "";
sqc.CommandText = query5;

sda = new SqlDataAdapter(sqc);
dt = new DataSet();
sda.Fill(dt);

if(dt.Tables[0].Rows.Count > 0)
{
    lblSalary.Text = dt.Tables[0].Rows[0]["SalaryGrade"].ToString();
    lblHour.Text = (*dt.Tables[0].Rows[0]["SalaryGrade"].ToString()/22*/8);
}

con.Close();

错误是

  

运营商" /"不能应用于" string"类型的操作数和" int"

4 个答案:

答案 0 :(得分:0)

  

错误是"运营商" /"不能应用于类型的操作数   "串"和" int"

错误消息非常有用。以下

dt.Tables[0].Rows[0]["SalaryGrade"].ToString()

string22int字面值。您不能将除法运算符应用于它们。你如何将stringint分开,这是一个毫无意义的操作。您需要的是以下内容:

((decimal)dt.Tables[0].Rows[0]["SalaryGrade"])/(22*8)

首先,您将SalaryGrade转换为小数,然后将其与小时分开。

注意:在上面一行中,我假设SalaryGrade可以投放到decimal。如果无法进行强制转换,则会抛出异常。因此,尝试使用TryParse的{​​{1}}方法是一种更安全的方法:

decimal

答案 1 :(得分:0)

这非常明确地是一个字符串:

dt.Tables[0].Rows[0]["SalaryGrade"].ToString()

字符串只是文字。你不会对它进行数学运算。如果此字符串保证是一个整数,您可以直接转换它:

lblHour.Text = (int.Parse(dt.Tables[0].Rows[0]["SalaryGrade"])/22/8);

如果保证不,那么您可能需要先进行一些错误检查:

int salaryGrade;
if (!int.TryParse(dt.Tables[0].Rows[0]["SalaryGrade"], out salaryGrade))
{
    // wasn't an integer, handle the error condition here
}
lblHour.Text = (salaryGrade/22/8);

注意:整数除法只会产生一个整数。如果您正在寻找小数值,那么您将要将数字转换为具有小数精度的数字。 (例如decimal,当然也有.Parse().TryParse()方法。)否则你可能会以零结束而不知道原因。

答案 2 :(得分:0)

发生错误是因为您无法在字符串中使用数学运算! 试试这个:声明一个int变量并从表中分配数据然后使用“label.Text”中的int将int转换为string。 希望帮助你了!

答案 3 :(得分:-1)

我的代码现在正在运行:)感谢你们。

Reminder

另外一件事,当涉及到数千人时,我怎么能得到逗号?