Имя: Пароль:
1C
1С v8
передача параметров в хранимую процедуру
,
0 Irken_1
 
30.03.12
17:40
Помогите пожалуйста. Не получается передать адекватно параметры в хранимую процедуру.
нужно передать строку, пишу так:
ParamOrg = Command.CreateParameter("@OrganizationID", 129, 1, 36, "73167096-974F-495E-9CED-6885E07408AB");
   Command.Parameters.Append(ParamOrg);
   RecordSet = Новый COMОбъект("ADODB.RecordSet");    
   //RecordSet.Open(Command, ADOConnection);
   RecordSet = Command.Execute();
   //RecordSet.Open();
   RecordSet.MoveFirst();
   
на последнем операторе выдает ошибку:
{Обработка.ПередачаИзмененийBTS.Форма.Форма.Форма(104)}: Ошибка при вызове метода контекста (MoveFirst)
   RecordSet.MoveFirst();
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
1 Господин ПЖ
 
30.03.12
17:43
логично... рекодсета еще нет а уже по записям ходишь
2 Господин ПЖ
 
30.03.12
17:44
RecordSet = Новый COMОбъект("ADODB.RecordSet");    
RecordSet = Command.Execute();
RecordSet.MoveFirst();

это тоже неплохо... тоде рекодсет у нас непойми от чего, то ли результат процедуры...
3 Irken_1
 
30.03.12
17:48
проблема не в рекордсете, а в параметре процедуры, так как тот же модуль но вызывая процедуру без параметров выдает в рекордсет все что надо.
:-(
4 ukolabrother
 
30.03.12
18:23
полный код покажи
5 ukolabrother
 
30.03.12
18:24
хранимка в скуль вызывается так exec имя_процедуры парам1 парам2...
что мешает передать в парам1 и парам2 то что тебе надо?
6 Irken_1
 
30.03.12
18:28
ADOConnection = Новый COMОбъект( "ADODB.Connection" );
   ConnectionString = "Provider=SQLOLEDB;User ID=qwe;Password=asd;Data Source=HWSSQL3\SQL2008;Initial Catalog=qweasd";
   ADOConnection.ConnectionString = ConnectionString;  
   Попытка
       ADOConnection.Open();
   Исключение
       Сообщить( "Неудачная попытка подключения к серверу" );
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   //
   Command = Новый COMObject("ADODB.Command");    
   Command.ActiveConnection = ADOConnection;
   Command.CommandText = "PR_Print_SummaryStatement";
   
   Command.CommandType = 8;
   ParamOrg = Command.CreateParameter("OrganizationID", 72, 1, 16, "73167096-974f-495e-9Ced-6885e07408ab");
   
   Command.Parameters.Append(ParamOrg);
   Param3 = Command.CreateParameter("@DateStart", 129, 1, 10, формат(Дата(2012,03,01),"ДФ=yyyy-MM-dd"));    
   Command.Parameters.Append(Param3);
   Param2 = Command.CreateParameter("@DateEnd", 129, 1, 10,   Формат(Дата(2012,03,20),"ДФ=yyyy-MM-dd"));
   Command.Parameters.Append(Param2);    
   RecordSet = Command.Execute();
   RecordSet.MoveFirst();
7 Irken_1
 
30.03.12
18:29
(5) можно пример?
8 ukolabrother
 
30.03.12
18:31
ТекстЗапроса = "exec avOD_РозничныеПродажи '" + ДатаНачалаSQL + "' , '" + ДатаКонцаSQL + "' , '" + Предприятие +"'";

Запрос.CommandText = ТекстЗапроса;
Rs = Запрос.Execute();
9 ukolabrother
 
30.03.12
18:32
возвращаются рекордсеты хранимки
10 Irken_1
 
30.03.12
18:38
запрос - что?
запрос  = Новый COMObject("ADODB.Command")
или recordset?
11 ukolabrother
 
30.03.12
18:40
command, rs - recordset
12 ukolabrother
 
30.03.12
18:44
а я пошел домой
13 Irken_1
 
30.03.12
18:51
Спасибо большое большое! заработало! :-)))))) моей благодарности нет границ!
с пятницей! :-)