我试图在.Net中以编程方式生成ADO RecordSet。这将被传递给VB6中的现有遗留代码,该代码已经在期待ADO RecordSet,我不希望更改现有代码。
我成功定义了新RecordSet中的字段
ADODB.Recordset rs = new Recordset();
rs.Fields.Append("Height", DataTypeEnum.adInteger, 4, FieldAttributeEnum.adFldMayBeNull, null);
在VB6中,我可以在没有参数的RecordSet上调用Open后添加记录:
rs.Open
当我尝试使用.net代码调用AddNew时,它告诉我记录集必须打开,我不能调用open,因为它需要以下参数:
void Open(object Source, object ActiveConnection, CursorTypeEnum CursorType, LockTypeEnum LockType, int Options);
但我试图以编程方式加载RecordSet,并且没有任何活动连接或其他数据源。
我错过了什么? 还有更好的方法吗?
答案 0 :(得分:1)
这些参数在ADODB.Recordset.Open方法中都是可选的。尝试显式传递documentation中指定的默认值。有一个参数Source
,没有列出明确的默认值。我想默认值是Nothing
。 编辑我猜错了,显然是System.Type.Missing
所以解决方案是:
rs.Open (System.Type.Missing, System.Type.Missing, _
adOpenUnspecified, adLockUnspecified, -1)