Strängen ändrar innehåll och rs omdefineras med ny data. När du tilldelar rs data andra gången, försvinner den data som var i det från början. Således funkar det alldeles utmärkt att göra som du gör.
får rs en ny referens till det objekt som Execute() returnerar snarare än att rs omdefinieras. Så om jag har förstått det hela så uppstår det ett visst minnesläckage om man inte stänger sitt recordset innan man "fyller det igen".
Inget jag tänker sätta några pengar på, men jag rekommenderar nog ändå att man stänger objekt, när man är klar med dom.