2013-12-08 2 views
1

Я пытаюсь создать пустой набор записей DAO rs2, структура которого аналогична существующему набору записей rs1 (который содержит более 200 полей). Но я столкнулся с ошибкой, которая не возникает, когда я использую набор записей ADO:Ошибка доступа MS с DAO Recordset

dim rs2 as recordset 

With rs2.Fields 
    For Each fld In rs.Fields 
     .Append fld, adVariant 
    Next 
End With 

Ошибка в неправильном количестве аргументов.

+1

Вы не нашли какой-то код? Он не похож на экземпляр 'rs2'. – Mike

ответ

1

ADO позволяет вам добавить поле в коллекцию Recordset.Fields при определенных обстоятельствах. Вот почему версия вашего кода ADO работает без ошибок.

Однако метод DAO Fields.Append не может использоваться с Recordset. Вместо этого вам нужно будет добавить в таблицу поле или выражение поля для запроса, которое будет использоваться в качестве источника данных набора записей.

+0

привет спасибо за ваш ответ. В этом случае, есть ли способ сделать преобразование между наборами записей? ... Я имею в виду DAO для ADO? –

+0

Я не уверен, понимаю ли я этот вопрос. Невозможно создать объект DAO recordset, а затем преобразовать его в набор записей ADO. – HansUp

0

Я знаю, что это решение не подходит для производительности, но вы можете попробовать в любом случае. Во-первых, клонировать записей:

Set rs2 = rs.clone 

И затем, если вам нужно только структуру, пустой это:

Do until rs2.EOF 
    rs2.Delete 
Loop 
+0

Я думаю, что когда вы делаете rs2.delete, записи в rs фактически удаляются, так как оба содержат только указатель на фактическое расположение записей –

+0

Я не знаю, но это может быть, как вы говорите. На этом этапе почему бы не создать новую таблицу в SQL с помощью команды DoCmd.RunSQL («SELECT * INTO RS2TABLE FROM RSTABLE WHERE FALSE») и открыть набор записей dao в новой таблице? – kiks73

+0

Привет. Все в порядке. Но я ищу что-то более простое, что это .:)...thanks вы так или иначе за ответы ур ... –

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