Question

I am attempting to generate an ADO RecordSet programmatically within .Net. This will be passed on to existing legacy code in VB6 which is already expecting a ADO RecordSet, I do not wish to change the existing code.

I was successful in defining fields within a new RecordSet

ADODB.Recordset rs = new Recordset();
            rs.Fields.Append("Height", DataTypeEnum.adInteger, 4, FieldAttributeEnum.adFldMayBeNull, null);

within VB6 I can add records after calling Open on the RecordSet with no parameters:

rs.Open

when I try to call AddNew with in .net code it tells me the recordset must be open, and I can't call open because it is expecting the following parameters:

void Open(object Source, object ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, int Options);

but I am attempting to load the RecordSet programmatically and do not have any active connection or other datasource.

What am I missing? Is there a better way?

Was it helpful?

Solution

Those parameters are all optional in the ADODB.Recordset.Open method. Try explicitly passing the default values as specified in the documentation. There is one parameter, Source, with no explicit default listed. I imagine the default is Nothing. EDIT I guessed wrong, apparently it is System.Type.Missing

So the solution is:

rs.Open (System.Type.Missing, System.Type.Missing, _
  adOpenUnspecified, adLockUnspecified, -1)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top