2010-02-19 2 views
2

Я пытаюсь сгенерировать ADO RecordSet программно внутри .Net. Это будет передано существующему устаревшему коду в VB6, который уже ожидает ADO RecordSet, я не хочу менять существующий код.Программирование программных записей ADODB

Я был успешным в определении полей внутри нового RecordSet

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

в VB6 я могу добавить записи после вызова Open на RecordSet без параметров:

rs.Open 

, когда я пытаюсь позвонить AddNew с кодом .net, он сообщает мне, что набор записей должен быть открытым, и я не могу назвать открытым, потому что он ожидает следующие параметры:

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

но я пытаюсь загрузить программу RecordSet программно и не имеет активного подключения или другого источника данных.

Что мне не хватает? Есть ли лучший способ?

ответ

1

Эти параметры являются необязательными в методе ADODB.Recordset.Open. Попробуйте явно передать значения по умолчанию, как указано в documentation. Существует один параметр, Source, без явного значения по умолчанию. Я предполагаю, что по умолчанию Nothing. EDIT я угадал, по-видимому, это System.Type.Missing

Так решение:

rs.Open (System.Type.Missing, System.Type.Missing, _ 
    adOpenUnspecified, adLockUnspecified, -1) 
+0

Закрыть ... заменить Ничего, или нуль с System.Type.Missing и это работает прекрасно. Спасибо – benPearce

+0

@benPearce Я отредактировал свой ответ, теперь это правильно? (Для тех, кто наткнулся на это в будущем) – MarkJ

Смежные вопросы