2012-03-13 80 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)(它隐含地关闭)。 – 2012-03-13 15:37:12

回答

2

嗨,你需要创建第二个命令对象。由于您正在从相同的命令对象读取数据,因此您正在尝试执行更新语句。

此外,您正在关闭while循环内的连接。之后你必须这样做。

1

创建第二个命令。换句话说,使用一个游标进行阅读,另一个用于更新。

相关问题