2012-03-13 11 views
0
Dim staffid = TextBox1.Text 
    Dim conn As New SqlConnection 
    conn.ConnectionString = SqlDataSource1.ConnectionString 

    Dim command1 As New SqlCommand("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')", conn) 
    Dim command2 As New SqlCommand() 
    conn.Open() 
    Dim rdr As SqlDataReader 
    rdr = command1.ExecuteReader 
    Dim UpdateQuery As String 
    While (rdr.Read()) 

     UpdateQuery = "UPDATE HolidayEntitlement set Holiday_Taken = @Expr1" 
     command2.Parameters.AddWithValue("@Expr1", rdr("Expr1").ToString()) 

     'run update query 

     command2.CommandText = UpdateQuery 
     command2.ExecuteNonQuery() 

     conn.Close() 
    End While 

次のエラー: command2.ExecuteNonQuery:Connectionプロパティが初期化されていません。最初に閉じる必要があります。このコマンドに関連付けられているオープンのDataReaderが既にあり

+0

ループ内で接続を閉じるのはなぜですか?少なくともあなたの接続には[暗黙的に閉じます] [usingステートメント](http://msdn.microsoft.com/en-us/library/yh598w02.aspx)を使用します。 –

答えて

2

こんにちは、2番目のコマンドオブジェクトを作成する必要があります。同じコマンドオブジェクトから読んでいるので、あなたはupdateステートメントを実行しようとしています。

また、whileループ内で接続を終了しています。後でこれを行う必要があります。

1

2番目のコマンドを作成します。言い換えれば、読み込みにはカーソルを使用し、更新のためにはカーソルを使用します。

関連する問題