Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 31.10.2013
Сообщений: 32
1

Не работает CopyFromRecordset (Access 2007)

19.02.2014, 15:33. Показов 1455. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Попытался написать на VBA в Access программу для экспорта данных в эксель.
Но использование метода CopyFromRecordset выдаёт ошибку:
Run-time error '430':
Class does not support Automation or does not support expected interface
Вот пример программы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub dfsdfsd()
    Dim XlsApp As Object
    Set XlsApp = CreateObject("excel.Application")
    XlsApp.Application.Visible = True
    Set XlsWB = XlsApp.Workbooks.Add
    
    Dim XlsRange As Object
    Set XlsRange = XlsWB.Worksheets(1).cells(1, 1)
    
    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("Input")
    XlsRange.CopyFromRecordset rst
End Sub
Попытался решить проблему через построчное копирование recordseta в массив, и это работало на запросах с небольшим количеством столбцов.
Но для запроса с 93 столбцами это привело к ошибке переполнение.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2014, 15:33
Ответы с готовыми решениями:

Access-excel не работает метод copyFromRecordset
Здравствуйте. Столкнулся с проблемой. Есть форма в БД на аксессе. В поля этой формы(главной) ввожу...

Код VBA в Access 2010 работает, в Access 2007 выдает ошибку
Написала код VBA в Access 2010 - работает, в Access-2007 выдает ошибку. В чем причина - подскажите

Не работает в Access 2007
В общем сделал БД в 2010 Ацесе, все работает как надо, там прописаны макросы в форме. отдал...

Не работает фильтрация в Access 2007 на Windows XP
Была создана база данных в Access 2007 на Windows 8, все было отлажено, все функционировало хорошо....

7
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
19.02.2014, 15:42 2
Цитата Сообщение от TR411 Посмотреть сообщение
Но использование метода CopyFromRecordset выдаёт ошибку
Дело вовсе не в методе.
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim exApp As Object
Dim rs As Object
Set exApp = CreateObject("Excel.application")
exApp.Workbooks.Add
exApp.Visible = True
Set rs = CurrentDb.OpenRecordset("Input")
exApp.Range("A1").CopyFromRecordset rs 'Выгружаем данные
 
Set exApp = Nothing
Set rs = Nothing
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
19.02.2014, 15:43 3
93 столбца --немного

а какой тип данных в столбцах
сколько строк
0
3 / 3 / 0
Регистрация: 31.10.2013
Сообщений: 32
19.02.2014, 15:51  [ТС] 4
Agapov_stas, Ваш код выдаёт точно такую же ошибку.

shanemac51, тип данных разный. От VarChar, real, double, datetime. Varchar() - т.е. ограничение по длине не прописано, но не более 10-15 символов по факту. Количество строк было около 10.
Сам не понимаю, почему появляется такая ошибка. Но проблема именно в количестве столбцов. Пробовал копировать запрос с 9 столбцами и 500 тыс. строк - всё нормально работает.
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
19.02.2014, 15:54 5
Цитата Сообщение от TR411 Посмотреть сообщение
Но проблема именно в количестве столбцов.
Можете приложить файл?
0
3 / 3 / 0
Регистрация: 31.10.2013
Сообщений: 32
19.02.2014, 16:04  [ТС] 6
Agapov_stas, исходный файл весит больше 1 Гб. Попробую скопировать то, что нужно и приложу.
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.02.2014, 16:27 7
TR411, в спецификациях MS Access указано, что размер набора записей ограничен 1 гигабайтом. При 93 столбцах в запросе и 500 тысячах записей есть шанс напороться на это ограничение.

Если это действительно так, то хороший способ - поделить рекордсет на части и выдавать частями. CopyFromRecordset, если не задавать новый адрес после окончания блока, начнет точно со следующей строки от конца предшествующего блока.
0
3 / 3 / 0
Регистрация: 31.10.2013
Сообщений: 32
19.02.2014, 17:03  [ТС] 8
mobile, нет, в запросе с 93 столбцами строк было всего лишь около 10.
А CopyFromRecordset у меня не работает вообще, независимо от количества строк и столбцов.
0
19.02.2014, 17:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2014, 17:03
Помогаю со студенческими работами здесь

Не работает база при конвертировании в Access 2007 из 2003
Здравствуйте. Я начала писать базу данных в Access 2003, потом появилась необходимость посмотреть...

Выгрузка данных из полей формы Access 2007 в Word 2007 шаблон dot 1997-2003 гг
Прошу помощи с примером из protokol10. Он завязан на генерацию doc-документа со вставкой...

VBA Access: метод CopyFromRecordset
Доброго времени суток. Подскажите. Ковыряю данный метод и наткнулся на следующие вопросы: 1....

Не работает CopyFromRecordset
Здравствуйте, все!!! Хочу положить данные из dataGridView в Excel. Делаю так: string s; ...

Worksheet.Range(RowFirst).CopyFromRecordset rstObch не работает в 97
Звиняйте, что несколько не в тему (но народу тут боле). Может кто сталкивался с такой проблемкой: ...

Обмен данными между Access 2007 и Visio 2007 используя VBA
Доброго времени суток уважаемые товарищи!:) Суть: Решил я написать одну софтину которая бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru