2017-08-06 40 views
0

我正在制定工資管理系統,其中雙薪工資等於員工固定工資的一定比例,這個比例是由某個百分比給定的,即固定工資的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。

+0

似乎是一個[XYPropblem(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)給我。請顯示相關的表格DDL,一些樣本數據爲DML,以及所需的輸出。 –

+0

取決於文本框的值,必須進行計算並且必須在計算後更新表中的值,那就是我需要的!!!!!! –

+0

Deam Maaz。請閱讀[問]並試着瞭解這裏的人們在自己的業餘時間回答問題。這裏沒有人能夠得到報酬來回答問題,任何人都不需要付出任何代價。 –

回答

0

首先,你必須讓員工(他們的運行基礎知識)要迭代,然後在每一個應用的計算,然後更新數據庫

看看下面的代碼,它可以幫助你(修改代碼以滿足您的需求)

 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

非常感謝先生 –

相關問題