Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1c + ADO + MS SQL (число прочтений - 2325 )
Маевский А.В.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 23. Февраля 2012
1c + ADO + MS SQL
23. Февраля 2012 :: 12:58
Печать  
Добрый день, уважаемые Знатоки!
Меня заинтересовала возможность подключения 1С к сторонней базе данных посредством ADO.
В частности у меня 1С 8.1 и база MS SQL server 2005.
С получением данных проблем не возникает, да и с редактированием и удалением тоже. Во всех этих случаях я составлял запрос в Connection.Execute.
Но я вычитал в книжке «!С: ПРЕДПРИЯТИЕ 7.7/8.0 системное программирование», что можно удалить текущую запись и оператором Delete.
Подскажите, пожалуйста, что я делаю не правильно. Я думаю, что причина в используемом провайдере.

Текст обработки:
Код
Выбрать все
 Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionTimeOut =600;
Connection.CursorLocation = 3;
  Connection.Open("Provider=SQLOLEDB;Password=955938;Data Source=andrey;Persist Security Info=True;User ID=user_1c;Initial Catalog=sait");
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandText ="select * from nomenclature";
Command.CommandType = 1;
RecordSet = Новый ComОбъект("ADODB.RecordSet");
RecordSet.CursorType = 3;
RecordSet.LockType = 2;
RecordSet = Command.Execute();
Пока RecordSet.EOF() = 0 Цикл
RecordSet.Delete(1);
  RecordSet.MoveNext();
	КонецЦикла; 



Выдается ошибка:
Код
Выбрать все
 Ошибка при вызове метода контекста (Delete): Произошла исключительная ситуация (ADODB.Recordset): Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
	RecordSet.Delete(); 



  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: 1c + ADO + MS SQL
Ответ #1 - 23. Февраля 2012 :: 20:38
Печать  
Странный способ... А что мешает "по простому"
Код
Выбрать все
Command.CommandText ="DELETE from nomenclature (тут условия если надо)"; 

  
Наверх
ICQ  
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1c + ADO + MS SQL
Ответ #2 - 24. Февраля 2012 :: 04:22
Печать  
Recordset.CursorType = 1; // (adOpenKeyset) или 2 (adOpenDynamic)
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Маевский А.В.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 23. Февраля 2012
Re: 1c + ADO + MS SQL
Ответ #3 - 24. Февраля 2012 :: 05:29
Печать  
Я разобрался.  Я, просто не правильно понял описание команды Delete. Мне нужно удалять записи в самой таблицы из внешней базы данных, а этой командой я пытался удалить «строку» из выборки запроса, а этого мне не нужно делать.
Конечно, удалять записи нужно через запрос, что я и делаю. Просто, я наткнулся на книжку и захотел применить прочитанное, но оказывается не правильно понял.
Большое спасибо за подробный ответ!!!
Спасибо форуму!!!
Удачи всем!!!!

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать