如何在c#中的SQL Server中的一列的所有值应用公式?
问题描述:
我正在制定工资管理系统,其中双薪工资等于员工固定工资的一定比例,这个比例是由某个百分比给定的,即固定工资的12%,这个百分比往往会随时间变化。当百分比发生变化时,根据该百分比的双重报酬值也必须在员工表中更改。 这里是我的代码:如何在c#中的SQL Server中的一列的所有值应用公式?
string query;
query = "select count(*) from ConditionalEarnings where [Double Duty]!=0";
SqlCommand value = new SqlCommand(query,DataFind);
value.ExecuteNonQuery();
int no = Convert.ToInt32(value.ExecuteScalar());
textBox7.Text = no.ToString();
for (int o = 0; o< no; o++)
{
string query1;
query1 = "select EmpId from ConditionalEarnings where [Double Duty]!=0";
SqlCommand value1 = new SqlCommand(query1, DataFind);
value1.ExecuteNonQuery();
int id = Convert.ToInt32(value1.ExecuteScalar());
textBox8.Text = id.ToString();
string query2;
query2 = "Select EmpRunningBasic from EmployeeRunningBasic where [email protected]";
SqlCommand r = new SqlCommand(query2,DataFind);
r.Parameters.Add("@id", SqlDbType.VarChar).Value = id;
r.ExecuteNonQuery();
int rb = Convert.ToInt32(r.ExecuteScalar());
int doublechange = Convert.ToInt32(textBox1.Text);
int apply = (rb * doublechange)/100;
SqlCommand f = new SqlCommand("Update ConditionalEarnings set [Double Duty]='" + apply + "' where [email protected]", DataFind);
f.Parameters.Add("@id", SqlDbType.VarChar).Value = id;
f.ExecuteNonQuery();
}
我的形式如下: Its my form
这是我的代码来执行任务。 当我输入百分比并执行程序更新双倍工资的特定列中的所有值时,只更改表的第1行,双重任务的所有其他行单元保持不变。意味着我的程序工作在一个循环中,并且计算并一次又一次地替换第一行的列的值,而不会转到下一行。如何在基于相同条件选择的所有行上应用更改?
its my table showing employee id column and double duty column highlighted
双重职责列的值并没有改变对所有员工的ID,而是在表中只有第一个ID。
答
首先,你必须让员工(他们的运行基础知识)要迭代,然后在每一个应用的计算,然后更新数据库
看看下面的代码,它可以帮助你(修改代码以满足您的需求)
int no = 0;
string query = "select count(*) from ConditionalEarnings where [Double Duty]!=0";
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();
no = Convert.ToInt32(cmd.ExecuteScalar());
}
string selectQuery = "select a.EmpId,b.EmpRunningBasic from ConditionalEarnings a left join EmployeeRunningBasic b on a.EmpId=b.EmpId where a.[Double Duty]!=0";
SqlDataAdapter adapter = new SqlDataAdapter(selectQuery, DataFind);
DataTable dtEmp;
adapter.Fill(dtEmp);
textBox7.Text = no.ToString();
string updateQuery = "";
foreach (DataRow row in dtEmp)
{
string empId = row["EmpId"].ToString();
textBox8.Text = empId;
int rb = Convert.ToInt32(row["EmpRunningBasic"]);
int doublechange = Convert.ToInt32(textBox1.Text);
int apply = (rb * doublechange)/100;
updateQuery += string.Format("Update ConditionalEarnings set [Double Duty]='{1}' where EmpId='{0}';", empId, apply);
}
if (!string.IsNullOrEmpty(updateQuery))
{
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(updateQuery, conn);
conn.Open();
cmd.ExecuteNonQuery();
}
}
+0
非常感谢先生 –
似乎是一个[XYPropblem(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)给我。请显示相关的表格DDL,一些样本数据为DML,以及所需的输出。 –
取决于文本框的值,必须进行计算并且必须在计算后更新表中的值,那就是我需要的!!!!!! –
Deam Maaz。请阅读[问]并试着了解这里的人们在自己的业余时间回答问题。这里没有人能够得到报酬来回答问题,任何人都不需要付出任何代价。 –