title: Possible to delete a Column / Field from an already populated ADODB.Recordset?
body: <p>I would like to delete a Column / Field from an existing ADODB.Recordset object that is already populated with data.  A <code>Recordset.Fields.Delete</code> method does exist:</p>
  
  <p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms675290%28v=vs.85%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/windows/desktop/ms675290%28v=vs.85%29.aspx</a></p>
  
  <p>...but if called on a populated Recordset one gets the error:  "operation is not allowed".</p>
  
  <p>This is documented at the above link:  </p>
  
  <blockquote>
    <p>Calling the Fields.Delete method on an open Recordset causes a
    run-time error.</p>
  </blockquote>
  
  <p>Doing a Recordset.Close clears the fields collection entirely, so that won't work - it almost seems like this method exists only for dealing with hand-rolled and manually populated recordsets rather than ones retrieved from databases?</p>
  
  <p>Does anyone know of a way this is possible, even a fairly performant means of copying to a new recordset instance would be better than nothing.</p>
  
  <p><strong>NOTE:</strong>  Please resist the temptation to point out "you shouldn't be doing this, you should only retrieve the columns you actually want from the database!!!"  I am well aware of this.</p>
  
  <p><strong>UPDATE</strong>: As for the why:  I have these existing extremely complicated datasets to which I don't have access to the source code that physically creates them, and I simply want to drop some of the columns from them as they clutter up the UI where they are being viewed.  I explicitly care not at all about the .1 ms of time or .00000136 Mw of electricity wasted by bringing these unwanted columns back and then discarding them.</p>