Имя: Пароль:
1C
1С v8
Ошибка при подключении к базе через ADO
0 gash85
 
20.12.12
16:03
Св = Новый COMОбъект("ADODB.Connection");
   Св.CursorLocation = 3;
   Св.ConnectionTimeout=15;
   СтрокаСвязи = "Provider=SQLOLEDB.1;Password=pas;Persist Security Info=True;User ID=user1c;Initial Catalog=base1;Data Source=serv1;Connect timeout=10";
   Св.Open(СтрокаСвязи);
   
   CommEdit = Новый COMОбъект("ADODB.Command");
   CommEdit.ActiveConnection = Св;
   CommEdit.CommandText = "Clients";
   CommEdit.CommandType = 8;        
   
   prm2 = CommEdit.CreateParameter("@KodClient", КонстантаАДО("AdWChar"),ТипПараметраАДО("adParamInput"), 10, СокрЛП(Код));  
   CommEdit.Parameters.Append( prm2 );
   
   prm3 = CommEdit.CreateParameter("@NameClient", КонстантаАДО("AdWChar"),ТипПараметраАДО("adParamInput"), 100, СокрЛП(Наименование));  
   CommEdit.Parameters.Append( prm3 );
   
   prm4 = CommEdit.CreateParameter("@FullNaim", КонстантаАДО("AdWChar"),ТипПараметраАДО("adParamInput"), 100, СокрЛП(ПолноеНаименование));  
   CommEdit.Parameters.Append( prm4 );
   
   prm5 = CommEdit.CreateParameter("@AddrReg", КонстантаАДО("AdWChar"),ТипПараметраАДО("adParamInput"), 500, СокрЛП(АдресЮр));  
   CommEdit.Parameters.Append( prm5 );
   
   prm6 = CommEdit.CreateParameter("@DateMail", КонстантаАДО("addate"),ТипПараметраАДО("adParamInput"), 4, ДатаМейла);  
   CommEdit.Parameters.Append( prm6 );
   
   prm7 = CommEdit.CreateParameter("@Mail", КонстантаАДО("AdWChar"),ТипПараметраАДО("adParamInput"), 100, СокрЛП(Мейл));  
   CommEdit.Parameters.Append( prm7 );

   Попытка
       RsEdit = CommEdit.Execute();
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;

Текст ошибки
Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Procedure or Function 'Clients' expects parameter '@KodClient', which was not supplied.
1 shuhard
 
20.12.12
16:07
(0)[Procedure or Function 'Clients' expects parameter '@KodClient', which was not supplied.]
что то перевести ?
2 gash85
 
20.12.12
16:08
prm2 = CommEdit.CreateParameter("@KodClient", КонстантаАДО("AdWChar"),ТипПараметраАДО("adParamInput"), 10, СокрЛП(Код));  
   CommEdit.Parameters.Append( prm2 );
3 sapphire
 
20.12.12
16:08
CommEdit.Prepared=True;
IndexOfParameter=0;
For Each Parameter In CommEdit.Parameters Do
   Message("Parameters("+IndexOfParameter+").Name="+Parameter.Name+");
IndexOfParameter=1+IndexOfParameter;
EndDo;
4 sapphire
 
20.12.12
16:16
(0) Параметры называются не так как ты их передаешь :)
5 gash85
 
20.12.12
16:55
имя параметра правильно: @KodClient varchar(10). В чем косяк не пойму
6 sapphire
 
20.12.12
17:10
(5) Ты ADO используешь?
7 sapphire
 
20.12.12
17:10
Вот и проверь (3)
8 Йохохо
 
20.12.12
17:22
AdWChar != AdVarChar // не тут?
9 sapphire
 
20.12.12
17:26
(8) Не, там дурь в другом.
Там имя параметра другое. Без сцобаки
10 gash85
 
20.12.12
17:27
(8)заменил, аналогичная ошибка
(7)проверил
11 sapphire
 
20.12.12
17:27
// Проверка имен параметров
CommEdit.Prepared=True;
CommEdit.Parameters.Refresh();// .. в (3) Забыл вставить
IndexOfParameter=0;
For Each Parameter In CommEdit.Parameters Do
   Message("Parameters("+IndexOfParameter+").Name="+Parameter.Name+");
IndexOfParameter=1+IndexOfParameter;
EndDo;
12 gash85
 
20.12.12
17:27
(9)и без собаки проверял. первоначально без нее было
13 sapphire
 
20.12.12
17:28
(10) Покажи, что выдало
14 gash85
 
20.12.12
17:30
(13) после добавления строки CommEdit.Parameters.Refresh(); в (3) в цикл не заходит
CommEdit.Parameters.Refresh() = Неопределено
15 gash85
 
21.12.12
10:48
все еще актуально..
16 НЕА123
 
21.12.12
11:07
КонстантаАДО()
ТипПараметраАДО()
что возвращают?

да и 10 - это правильно?
17 НЕА123
 
21.12.12
11:19
(16)+
насчет 10 неправ.
Программист всегда исправляет последнюю ошибку.