|
Для требуемой операции необходим объект OLE DB Session, не поддерживаемый текущи | ☑ | ||
---|---|---|---|---|
0
nemoxp
22.11.14
✎
23:25
|
Подключаюсь к базе Акцесс:
Процедура КнопкаВыполнитьНажатие(Кнопка) Access = Новый COMОбъект("ADODB.CONNECTION"); Попытка СтрокаПодключения="Driver={Microsoft Access Driver (*.mdb)};D:\tiralana_data.mdb"; Access.Open(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Команда = Новый COMОбъект("ADODB.Command"); //Создаем команду Команда.ActiveConnection = Access; //Указываем подключение ТекстЗапроса = "SELECT * FROM invoices"; НаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); Команда.CommandText = ТекстЗапроса; Попытка НаборЗаписей = Команда.Execute(); // выполняем запрос Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры Выдает ошибку: "Для требуемой операции необходим объект OLE DB Session, не поддерживаемый текущим поставщиком." Как побороть? |
|||
1
nemoxp
22.11.14
✎
23:26
|
Ругается на строку:
Команда.ActiveConnection = Access; |
|||
2
Deon
22.11.14
✎
23:53
|
Попробуй строку подключения заменить на:
СтрокаПодключения = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Data Source=D:\tiralana_data.mdb"; |
|||
3
nemoxp
22.11.14
✎
23:58
|
{Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Нераспознаваемый формат базы данных: 'D:\tiralana_data.mdb'.
|
|||
4
nemoxp
23.11.14
✎
00:00
|
он и с предыдущим драйвером не подключается. недавно вроде подключался. сейчас пишет: {Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Операция была отменена.
|
|||
5
nemoxp
23.11.14
✎
00:01
|
Access установлен, база акцессом открывается...
|
|||
6
Deon
23.11.14
✎
00:01
|
какой версии access?
|
|||
7
nemoxp
23.11.14
✎
00:02
|
2007
|
|||
8
Deon
23.11.14
✎
00:08
|
может так?
СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\tiralana_data.mdb;Persist Security Info=False;"; |
|||
9
nemoxp
23.11.14
✎
00:15
|
Спасибо получилось!
Microsoft.ACE.OLEDB.12.0 - это только для 2007? Как узнать тогда для других версий Акцесса? |
|||
10
Deon
23.11.14
✎
00:20
|
да я думаю для любых подойдет
|
|||
11
nemoxp
23.11.14
✎
00:25
|
Вопрос. В коде есть запрос к таблице. Как получить все записи? НаборЗаписей - com объект. Нашел только поля, а самих строк нет...
|
|||
12
Deon
23.11.14
✎
00:27
|
покажи код
|
|||
13
nemoxp
23.11.14
✎
00:29
|
Т = Новый ТаблицаЗначений;
Т.Очистить(); Access = Новый COMОбъект("ADODB.CONNECTION"); Попытка СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\tiralana_data.mdb;Persist Security Info=False;";//"Driver={Microsoft Access Driver (*.mdb)};D:\tiralana_data.mdb"; Access.Open(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Команда = Новый COMОбъект("ADODB.Command"); //Создаем команду Команда.ActiveConnection = Access; //Указываем подключение ТекстЗапроса = "SELECT * FROM invoices"; НаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); Команда.CommandText = ТекстЗапроса; Попытка НаборЗаписей = Команда.Execute(); // выполняем запрос Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл //Определяем имена полей таблицы Т.Колонки.Добавить(СокрЛП(НаборЗаписей.Fields(е).Name)); КонецЦикла; //НаборЗаписей.MoveFirst(); //Пока НаборЗаписей.EOF() = 0 Цикл //Перебираем поля и записи // Стр = Т.Добавить(); // Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл // Т.УстановитьЗначение(Т.Количество(), СокрЛП(НаборЗаписей.Fields(е).Name), НаборЗаписей.Fields(е).Value); // записываем значения в таблицу // КонецЦикла; // НаборЗаписей.MoveNext(); //КонецЦикла; |
|||
14
Deon
23.11.14
✎
00:42
|
а что с закомментированным кодом? не работает?
|
|||
15
nemoxp
23.11.14
✎
00:52
|
Т.УстановитьЗначение не работает, взял из инета. пока не разобрался с этим оператором. нужно переписать...
|
|||
16
nemoxp
23.11.14
✎
00:55
|
Вроде бы получилось... Написал так:
НаборЗаписей.MoveFirst(); Пока НаборЗаписей.EOF() = 0 Цикл //Перебираем поля и записи Стр = Т.Добавить(); Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл Т[Т.Количество()-1][СокрЛП(НаборЗаписей.Fields(е).Name)] = НаборЗаписей.Fields(е).Value; // записываем значения в таблицу КонецЦикла; НаборЗаписей.MoveNext(); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |