2012-03-16 14 views
0

Command2.ExecuteNonQuery()で "接続プロパティが正しく初期化されていません"というエラーメッセージが表示されます。接続プロパティが正しく初期化されていません

私はSQLクエリ

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, HolidayEntitlement.HoldayEntitlementID, HolidayEntitlement.UserName FROM HolidayRequests INNER JOIN StaffDetails ON HolidayRequests.Username = StaffDetails.UserName INNER JOIN HolidayEntitlement ON StaffDetails.UserName = HolidayEntitlement.UserName WHERE (StaffDetails.StaffID = staffID) GROUP BY StaffDetails.StaffID, HolidayRequests.ApprovalStatus, HolidayEntitlement.HoldayEntitlementID, HolidayEntitlement.UserName 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 WHERE HolidayEntitlementID = @HolidayEntitlementID" 
     command2.Parameters.AddWithValue("@Expr1", rdr("Expr1").ToString()) 

     'run update query 

     command2.CommandText = UpdateQuery 
     command2.ExecuteNonQuery() 

End while 

答えて

1

Aからこの特定の結果を使用してデータベースを更新するには、この結果を取得しようとしてるグリッドビュー(1つの結果だけ)にその結果を表示するSQLクエリを持っていますSqlCommandにはConnectionが割り当てられている必要があります。別にあなたがusing-statementを見ていなければならないことから、

command2.Connection = conn 

(クローズ/暗黙的な接続を配置します)。それは IDisposableを実装するすべてのクラスで使用する必要があります。

Using conn = New SqlConnection(SqlDataSource1.ConnectionString) 
    Using command1 = new SqlCommand(sql, conn) 
     ' insert your code here .... ' 
    End Using 
End Using 
関連する問題