2012-03-13 19 views
0

私は必要な情報を計算するためにSQLを使用するグリッドビューを持っています!この計算された合計をデータベースの別のテーブルに入れたいと思います。グリッドビューの値に基づいてデータベースを更新

SELECT StaffDetails.StaffID, SUM(HolidayRequests.RequestTotalDays) AS Expr1 
FROM HolidayRequests INNER JOIN StaffDetails ON HolidayRequests.Username = StaffDetails.UserName 
WHERE (StaffDetails.StaffID = @staffID) 
GROUP BY StaffDetails.StaffID, HolidayRequests.ApprovalStatus 
HAVING (HolidayRequests.ApprovalStatus = N'approved') 

これは、基本的に、正しいスタッフメンバーの承認休暇申請の合計数を計算します。この番号は、休日が承認されるたびに別のテーブルのHolidayTakenフィールドを更新するようにします。私は...私はこれを行うことができますどのように他の任意のアイデアを発見したとして、しかし、あなたはアップデートで集計を使用することはできません更新を試してみました

..

答えて

2

にあなたを試みることができます実行されたクエリを "DataReader"または "DataSet"にロードし、そこから新しいテーブルに情報をロードします。

あなたが行うことができます:

SqlConnection conn = "You connection"; 
SqlCommand cmd = new SqlCommand(conn); 
cmd.CommandText = "YOUR QUERY"; 
SqlDataReader rdr = cmd.ExecuteReader(); 
String UpdateQuery; 

while (rdr.Read()) 
    { 
    UpdateQuery = "UPDATE table set [email protected] WHERE condition" 
    cmd.Parameters.AddWithValue("@Expr1", rdr["Expr1"].ToString()); 
    //run update query 
    cmd.CommandText = UpdateQuery; 
    cmd.ExecuteNonQuery(); 
    return; 
    } 
    cmd.Connection.Close(); 
+0

おかげであなたはそれが役立っているどのくらい理解していない。このためにそんなに:) – user1055487

1

この

UPDATE StaffDetails a 
SET a.HolidayTaken = (SELECT SUM(HolidayRequests.RequestTotalDays) 
FROM HolidayRequests INNER JOIN StaffDetails b ON HolidayRequests.Username = b.UserName 
WHERE (b.StaffID = @staffID) 
GROUP BY b.StaffID, HolidayRequests.ApprovalStatus 
HAVING (HolidayRequests.ApprovalStatus = N'approved')) 
WHERE a.StaffID = @staffID 
関連する問題