Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 1C8 ADODB записать XLS (Должен использоваться обновляемый запрос)  [new]
xKIA
Member

Откуда:
Сообщений: 53
Прочитать данные получается, но не понимаю почему не получается записать ни через RecordSet.Update, ни через запрос Update.. Resync тоже самое. При попытке что либо изменить пишет, что должен использоваться обновляемый запрос, в кеш что-то попадает, потому что вывести записанное можно, до первой комманды которая затрагивает курсор, на ней уже вываливается. При этом перерыл весь инет, прочитал права на пользователя IUSR, все права есть, тип курсора стоит правильный, при открытии соединения стоит чтение и запись, не понимаю почему не даёт. Офис не установлен на компе, но я так понимаю что для записи в файл АДО тоже в нём не нужндается.
СоединениеXLS = Новый ComObject("ADODB.Connection");
	Попытка
		СоединениеXLS.Provider="Microsoft.Jet.OLEDB.4.0";
		//http://infostart.ru/public/17039/
		СоединениеXLS.Properties("Data Source").Value="C:\1.xls";
		СоединениеXLS.Properties("Persist Security info").Value="False";
		СоединениеXLS.Properties("Extended Properties").Value="Excel 8.0;HDR=No;IMEX=1";
		СоединениеXLS.Mode = 3;
		СоединениеXLS.Open();
	Исключение                                                          
		Сообщить(ОписаниеОшибки());
		возврат;
	КонецПопытки;
	
	Сообщить ("Выполнение запроса...");
	ЗаписиXLS = Новый ComObject("ADODB.RecordSet");
	ЗаписиXLS.CursorType = 3;
	ЗаписиXLS.LockType = 2;
	ЗаписиXLS.CacheSize = 1000;
	ЗаписиXLS.CursorLocation=3;
	ЗаписиXLS.ActiveConnection = СоединениеXLS;

	//ЗаписиXLS.Open("UPDATE [Лист1$] SET F2 = 'XYZ' WHERE F1 = '111'");
	ЗаписиXLS.Open("Select * from [Лист1$]");

	Сообщить("Количество строк: "+ЗаписиXLS.RecordCount+"; Количество колонок: "+ЗаписиXLS.Fields.Count);

	Если ЗаписиXLS.EOF и ЗаписиXLS.BOF тогда Сообщить("Данные отсуствуют"); конецесли;

	 //ЗаписиXLS.Resync();
	
	Пока ЗаписиXLS.EOF=0 Цикл    
		Для Сч = 0 по ЗаписиXLS.Fields.Count-1 цикл
			сообщить(" "+ЗаписиXLS.Fields.Item(Сч).Name+":"+ЗаписиXLS.Fields(Сч).Value);
			//ЗаписиXLS.Fields(Сч).Value="33";
		конеццикла;
		ЗаписиXLS.MoveNext();
	КонецЦикла; 
	ЗаписиXLS.Close();   //objRecordset.Save "C:\test.xml", 1
	СоединениеXLS.Close(); 
	
8 июл 10, 01:02    [9068321]     Ответить | Цитировать Сообщить модератору
 Re: 1C8 ADODB записать XLS (Должен использоваться обновляемый запрос)  [new]
xKIA
Member

Откуда:
Сообщений: 53
Нашёл ошибку, в режиме IMEX=1 нельзя писать в таблицу.
11 июл 10, 18:56    [9084292]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить