2015-02-03 7 views
0

Я использую vba в Access 2010, и я просто пытаюсь передать в DAO recordset в подпрограмму. Я делаю это, поэтому мне не нужно дублировать код (возможно, сотни строк). Я считаю, что это очень просто, но каждый раз, когда я что-то пробовал, он замораживает программу, и я вынужден перезапустить Access и повторно добавить мой код. Ниже всего кода я попытался:Добавление набора записей DAO в подпрограмму - vba

Sub WriteToForms(rs as RecordSet) ' When I press enter, that is when it freezes 

Sub WriteToForms(ByVal rs as RecordSet) ' When I press enter, that is when it freezes 

Sub WriteToForms(ByRef rs as RecordSet) 'When I press enter, that is when it freezes 

Однако, когда я делаю это:

Sub WriteToForms (types as string) 

Он работает. Я просмотрел несколько статей, и приведенный выше код - это то, что они предложили.

+0

Попробуйте указать, какой тип набора записей - ADODB или DAO. – Rory

+0

Было бы разумнее, если бы вы могли показать немного больше кода, это не всегда могло быть причиной замораживания. Также убедитесь, что вы ссылаетесь на набор записей, используйте DAO или ADO – PaulFrancis

+0

@PaulFrancis. Я не знаю, какой другой код я могу вам показать. Другой код, который у меня есть, не имеет значения, поскольку я даже не могу создать эту подпрограмму, чтобы начать передачу данных. –

ответ

0

При передаче набора записей в подпрограмму в Access вы должны указать, какой тип набора записей он есть. Например:

Sub WriteToForms(rs as recordset) 

Если быть на самом деле:

Sub WriteToForms(rs as Dao.RecordSet) 'If you are dealing with a DAO recordset. 

ИЛИ

Sub WriteToForms(rs as ADODB.RecordSet) 'If you are dealing with a ADO recordset. 

Неспособность определить тип записей заставит программу заморозить, и вам необходимо будет перезапустить Access/Excel.

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