Имя: Пароль:
1C
1С v8
Вопрос по ADODB.RecordSet
,
0 AnisaL
 
18.07.13
10:16
Добрый день!

Есть запрос к Биллингу, до этого момента работал. Сейчас в Биллинг доступ закрыт, так как сисадмин с ним что-то делает, стала выдаваться ошибка
{МодульОбычногоПриложения(2139)}: Ошибка при вызове метода контекста (Close)
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.

Вот текст процедуры с запросом.

   Command = Новый COMОбъект("ADODB.Command");
   Command.ActiveConnection = Connection;
   Command.CommandText = ТекстЗапроса;
   Command.CommandType = 1;
       
   RecordSet = Новый COMОбъект("ADODB.RecordSet");
   Попытка
     //  #Если Клиент Тогда          
           Состояние ("Выполняем запрос...");        
     //  #КонецЕсли          
       RecordSet = Command.Execute();    
   Исключение
     //  #Если Клиент Тогда          
           Сообщить("Запрос не выполнен! "+ОписаниеОшибки());      
     //  #КонецЕсли  
       RecordSet.Close();
       Возврат Неопределено;
   КонецПопытки;

Какое условие поставить на RecordSet, чтобы не происходила эта ошибка и не закрывалась 1с-ка?
1 Wobland
 
18.07.13
10:21
ну дык по исключению вылетай, а не пытайся закрыть неоткрытое
2 AnisaL
 
18.07.13
10:21
ошибка происходит когда попадаешь в Исключение на строке
 RecordSet.Close();
3 Wobland
 
18.07.13
10:21
(1) сторно
4 Jaap Vduul
 
18.07.13
10:23
5 НЕА123
 
18.07.13
10:26
(0)
Command, RecordSet
что-то не стыкуется.
6 George Wheels
 
18.07.13
10:28
RecordSet = Command.Execute(); - что это?
7 AnisaL
 
18.07.13
10:29
(1) т.е. этй строку вообще убрать RecordSet.Close();?
8 AnisaL
 
18.07.13
10:30
(5) что именно? все очень даже стыкуется
9 George Wheels
 
18.07.13
10:31
В RecordSet получается результат работы Command.Execute(), а не COMОбъект("ADODB.RecordSet").
10 AnisaL
 
18.07.13
10:34
(6)  Это SQL запрос. В RecordSet выгружается результат выполнения запроса
11 George Wheels
 
18.07.13
10:35
(10) см (9)
12 AnisaL
 
18.07.13
10:35
+(10) Само подключение к SQL
   Connection = Новый COMОбъект("ADODB.Connection");
   //ConnectString = "driver={MySQL ODBC 5.1 Driver};server="+server+";uid="+user+";pwd="+passwd+";database="+database;
   ConnectString = "Driver={MySQL ODBC 5.2a Driver};Server=10.254.0.1;uid=1c;pwd=1c1c1c;";
   //"Provider=MSDASQL.1;Extended Properties="DRIVER={MySQL ODBC 5.1 Driver};UID=root;PWD=123456qwerty;server=Server02;database=mt_exchange;""
   Попытка
       Состояние ("Подключаемся к MySQL...");
       Connection.open(ConnectString);    
   Исключение
       Сообщить("Не подключились! "+ОписаниеОшибки());
       Возврат 0;
   КонецПопытки;
13 AnisaL
 
18.07.13
10:40
(11) а вы вообще программировать умеете?
14 George Wheels
 
18.07.13
10:52
(13)
Для чего   - RecordSet = Новый COMОбъект("ADODB.RecordSet");
Если потом - RecordSet = Command.Execute();
15 AnisaL
 
18.07.13
10:55
(14) почитай (4) может тебе поможет
16 Wobland
 
18.07.13
10:57
(15) правильно человек говорит. другое дело, что в этом частном случае как-то пофих..
17 НЕА123
 
18.07.13
10:59
RecordSet = Новый COMОбъект("ADODB.RecordSet");
 RecordSet.Open(ТекстЗапроса, Connection);

для чего нужен Command?
18 George Wheels
 
18.07.13
11:08
(15) Returns a Recordset object reference, a stream, or Nothing.

Неважно как проинициализируешь переменную RecordSet. В итоге получишь Recordset object reference, a stream, or Nothing.
19 George Wheels
 
18.07.13
11:10
(18) + Проверь уже наконец в отладчике, что у тебя в RecordSet.
20 wPa
 
18.07.13
11:24
(0) объект уже уничтожен, - закрыть не сработает.
Замени Close() на  
RecordSet = NULL;
21 shuhard
 
18.07.13
11:56
(17) не нужен, это ТС кодировать ни фига не умеет
22 wPa
 
18.07.13
12:05
(20) + точнее замени

RecordSet.Close();
на
RecordSet = NULL;

эффект тот же но ошибки не будет
23 НЕА123
 
18.07.13
12:18
(21)
понятно...
и глубокий смысл поста (13) тоже понял.
24 MiniMuk
 
18.07.13
12:37
(9) Если результат Command.Execute("Select *from figniya");
25 AnisaL
 
18.07.13
12:49
(20) Спасибо! Надо попробовать)
Закон Брукера: Даже маленькая практика стоит большой теории.