user1055487
user1055487

Reputation: 261

connection property has not been properly initialized

Im getting "connection property has not been properly initialized " error message on command2.ExecuteNonQuery().

I Have an SQL query which displays its result in a grid view (one result only) I'm attempting to get this result to update the database with this particular result from the SQL query

    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

Upvotes: 0

Views: 1024

Answers (1)

Tim Schmelter
Tim Schmelter

Reputation: 460138

A SqlCommand needs an assigned Connection.

command2.Connection = conn

Apart from that you should have a look at the using-statement(which closes/disposes connections implicitely). That should be used for every class implementing IDisposable.

Using conn = New SqlConnection(SqlDataSource1.ConnectionString)
    Using command1 = new SqlCommand(sql, conn)
        ' insert your code here .... '
    End Using
End Using

Upvotes: 1

Related Questions