Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Ошибка при подключению к екселю через ADO / 16 сообщений из 16, страница 1 из 1
26.05.2009, 08:59
    #36006970
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
При выполнении Open ошибка: "Ошибка при вызове метода контекста (Open). Произошла исключительная ситуация (Microsoft Data base jet engine): небыл задан текст команды для коммандного объекта."

db=Новый COMОбъект("ADODB.Connection");
rs=Новый COMОбъект("ADODB.Recordset");
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ИмяФайла+";Extended Properties=""Excel 8.0;""";
db.Open();
rs.ActiveConnection = db;
rs.CursorType = 3;
rs.LockType = 2;
//rs.Source = "Select * from [TDSheet 2$A1:E10000]";
rs.Source = "Select * from [Лист(1)$]";

rs.Open();

Ничего не понимаю :((.
...
Рейтинг: 0 / 0
26.05.2009, 11:37
    #36007426
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
vam911При выполнении Open ошибка: "Ошибка при вызове метода контекста (Open). Произошла исключительная ситуация (Microsoft Data base jet engine): небыл задан текст команды для коммандного объекта."

db=Новый COMОбъект("ADODB.Connection");
rs=Новый COMОбъект("ADODB.Recordset");
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ИмяФайла+";Extended Properties=""Excel 8.0;""";
db.Open();
rs.ActiveConnection = db;
rs.CursorType = 3;
rs.LockType = 2;
rs.Source = "Select * from [Лист(1)$]";
rs.Open();

отличия найдешь сам
MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\111.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");
MyRst = Новый COMОбъект ("ADODB.Recordset");
MyStr = "select * from [Лист1$]";
MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic
...
Рейтинг: 0 / 0
26.05.2009, 17:26
    #36008690
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Не помогло (.
та же ошибка.

db=Новый COMОбъект("ADODB.Connection");
rs=Новый COMОбъект("ADODB.Recordset");
db.Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ИмяФайла+;Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");

sqlstr = "Select * from [Лист(1)$]";
rs.Open(sqlstr,db,2,3);
...
Рейтинг: 0 / 0
26.05.2009, 18:26
    #36008850
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
vam911Не помогло (.
та же ошибка.

у меня работает, что я делаю не так?
...
Рейтинг: 0 / 0
26.05.2009, 18:29
    #36008858
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Будем искать
А офис какой? у меня 2007, но файл сохранен как 2003.
...
Рейтинг: 0 / 0
26.05.2009, 18:30
    #36008860
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
vam911Будем искать
А офис какой? у меня 2007, но файл сохранен как 2003.
2003
...
Рейтинг: 0 / 0
26.05.2009, 18:35
    #36008871
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
с "Select * from [Лист(1)$" ADODB посылает очень далеко
...
Рейтинг: 0 / 0
26.05.2009, 19:02
    #36008924
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Shuhardс "Select * from [Лист(1)$" ADODB посылает очень далеко

А как надо?
...
Рейтинг: 0 / 0
26.05.2009, 19:39
    #36008981
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
vam911Shuhardс "Select * from [Лист(1)$" ADODB посылает очень далеко

А как надо?
вторая попытка:
MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\111.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");
MyRst = Новый COMОбъект ("ADODB.Recordset");
MyStr = "select * from [Лист1$]";
MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic
...
Рейтинг: 0 / 0
26.05.2009, 20:44
    #36009080
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Забавно, заработало!!!!

Забавно, т.к. в екселе источники данных не видят лист, если он не содержит "(".

Огромное спасибо!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
26.05.2009, 21:21
    #36009121
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
vam911Забавно, заработало!!!!

Забавно, т.к. в екселе источники данных не видят лист, если он не содержит "(".

Огромное спасибо!!!!!!!!!!!!!!!!!!!!

10 часов - полет нормальный
...
Рейтинг: 0 / 0
30.04.2010, 12:19
    #36607126
bot67
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Возникла такая ситуация при загрузке и екселя. Загружаю документ чарез ADO.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
	СтрокаПодключения = "
	|Provider=Microsoft.Jet.OLEDB.4.0;
	|Data Source="+ИмяФайла+";
	|Extended Properties=""Excel 8.0;HDR=No;"";";
	
	Лист="[Накладная$]";
		
	Подключение=CreateObject("ADODB.Connection");
	Запрос=CreateObject("ADODB.Recordset");
	Подключение.ConnectionString = СтрокаПодключения;
	Подключение.Open();
	СтрЗапроса = "Select * from "+Лист+""; 
	Запрос.Open(СтрЗапроса,Подключение, 2 , 3 );
	
	Запрос.MoveFirst();
	Пока Запрос.Eof()= 0  Цикл
                   .................
                   ...........
		Количество=Запрос.Fields(КолКоличество- 1 ).Value;
	                  .................
                   ...........
	КонецЦикла;
Если в ячейке екселя строковое значение, то всё проходит нормально. Если же там число, то ничего не возвращается. В ячейках формул и ссылок нет. Подскажите, чем может быть дело?
...
Рейтинг: 0 / 0
30.04.2010, 12:46
    #36607223
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
как то там было ...
Количество=Запрос.Fields(КолКоличество-1).FormulaR1C1
...
Рейтинг: 0 / 0
30.04.2010, 13:14
    #36607314
bot67
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
leaf,

нет. так не проходит - "Поле агрегатного объекта не обнаружено (FormulaR1C1)"
...
Рейтинг: 0 / 0
30.04.2010, 13:56
    #36607461
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Ну тогда запхните сами знаете куда АДО ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 30.04.2010 (СКиселев)
'

'
    ActiveCell.FormulaR1C1 = "=R[2]C[2]+R[2]C[3]"
    Range("A2").Select
End Sub
работайте как обычные люди через объекты
...
Рейтинг: 0 / 0
01.05.2010, 00:11
    #36608302
bot67
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при подключению к екселю через ADO
Помогло вот это:
авторСмешанные данные в колонках (подводный камень способный попортить не мало крови) Из-за настроек по умолчанию Excel ваша программа нормально считывающая данные из полностью заполненных таблиц, может сбиться на тех таблицах, в первых N (>8) записях которых пустые значения.
В результате, когда доходит до записей с не пустыми полям их значения возвращаются как NULL независимо от реального содержимого в XLS.
Для предотвращения подобной ситуации следует использовать аттрибут IMEX=1 в Extended Properties.
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Ошибка при подключению к екселю через ADO / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]