PRB: Appending Fields to a Recordset Generates an ErrorID: Q223771
|
Trying to append Fields to an opened Recordset generates the following run-time error:
Run-time error '3219':
The operation requested by the application is not allowed in this context.
From the ADO Help:
"Calling the fields.Append method for an open Recordset or a Recordset where the ActiveConnection property has been set, will cause a run-time error. You can only append fields to a Recordset that is not open and has not yet been connected to a data source. Typically, these are new Recordset objects that you create with the CreateRecordset method or by explicitly assigning a new Recordset object to an object variable."
There are two workarounds to getting additional Fields appended to a Recordset object.
Dim rst As New ADODB.Recordset
rst.Fields.Append "xx1", adInteger
rst.Fields.Append "xx2", adChar, 5
rst.Open
For Each ofld In rst.Fields
Debug.Print ofld.Name
Next
Dim rst As New ADODB.Recordset
rst.Open "SHAPE {SELECT author FROM authors}" & _
"APPEND NEW adChar(10) NewCol1, NEW adChar(10) NewCol2", _
"Provider=MSDATASHAPE" & _
";Data Provider=MSDASQL" & _
";Data Source=<your_dsn>" & _
";User ID=;Password=;", _
adOpenStatic, adLockBatchOptimistic
For Each ofld In rst.Fields
Debug.Print ofld.Name
Next
rst.AddNew Array("author", "NewCol1", "NewCol2"), _
Array("Detroit", "string1", "string2")
rst.MoveFirst
While rst.EOF <> True
Debug.Print rst!author, rst!NewCol1, rst!NewCol2
rst.MoveNext
Wend
This behavior is by design.
Dim rst As New ADODB.Recordset
rst.Open "SELECT * FROM authors", _
"Provider=MSDASQL;Data Source=<your_dsn>;User ID=;Password=;", _
adOpenStatic, adLockBatchOptimistic
rst.Fields.Append "xx1", adInteger
© Microsoft Corporation 1999, All Rights Reserved.
Contributions by Matthew Hofacker, Microsoft Corporation
Additional query words: column
Keywords : kberrmsg kbADO200 kbADO201 kbADO210 kbDatabase kbGrpVBDB
Version : WINDOWS:2.0,2.01,2.1
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: April 15, 1999