2012-05-07 2 views
4

Я работаю с базой данных Access, и у нее есть форма и VBA. Прошло немало времени с тех пор, как я проболтался в VBA, и мой google-fu не дает мне прямо сейчас, так что несите меня.Неправильное использование имущества?

Я создал простой класс, и я получаю ошибку компиляции:

Dim oRecordSet As ADODB.RecordSet 
Public Property Get RecordSet() As ADODB.RecordSet 
    RecordSet = oRecordSet '' error here 
End Property 

Public Property Let RecordSet(ByVal val As ADODB.RecordSet) 
    RecordSet = val 
End Property 

У меня есть несколько других идентичные свойства (различные имена/переменные, очевидно), что компилировать просто отлично; их типы: String и Integer.

Что мне не хватает? Благодаря!

Также обратите внимание, что при кодировании intellisense отображается ADODB.Recordset, но при автоформате (возврат каретки, компиляция и т. Д.) Он меняет его на ADODB.RecordSet. Мне нужно волноваться?

+0

объектов устанавливаются с помощью * Установить *. Все типы значений в порядке с помощью just =. Итак, Эдмин прав насчет причины ошибки. –

ответ

7

Оно должно быть:

Public Property Get RecordSet() As ADODB.RecordSet 
    Set RecordSet = oRecordSet '' error here 
End Property 
+1

Материал для объяснения: http://stackoverflow.com/questions/349613/what-does-the-keyword-set-actually-do-in-vba –

+0

Хорошо круто. Итак, почему свойства string/integer не нужны «Set» и RecordSet? – Anders

+0

Строка и целое число считаются примитивами (то есть они передаются по значению) в VB6, поэтому для них не требуется ключевое слово Set. –

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