[ODBC SQL Server Driver] Дополнительная возможность не реализована #188930


#0 by solaru
При выполнени команды Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC SQL Server Driver]Дополнительная возможность не реализована Это о чём может быть?
#1 by ТелепатБот
#2 by mikecool
какой команды?
#3 by solaru
#4 by mikecool
ни разу такого не видел... может проблема с АДО?
#5 by solaru
выложи кусочек кода вызова сторед процедуры и обхода РС
#6 by jbond
2 - понял, на что ТелепатБот намекнул?
#7 by solaru
Это не то!
#8 by vde69
код в студию
#9 by solaru
Как это сделать (ADO) 1. Создать объект ADODB.Connection У меня это реализовано в глобальном модуле (при начале работы системы автоматически устанавливается соединение и существует, пока открыт сеанс 1С). Уничтожение объекта после окончания работы не требуется. 2. Формирование и отправка команды дла SQL-сервера. Для формирования и отправки команды серверу необходимо создать объект ADODB.Command и связать его с текущим соединением. Для задания команды используется свойство CommandText: Текстом команды может быть оператор Т-SQL (SELECT, INSERT, UPDATE, DELETE и т.д), или имя хранимой процедуры из той базы данных, с которой установлено соединение. Пример: Для ускорения работы можно указать экземпляру объекта ADODB.Command тип команды, которая будет выполняться. Для этого я использую функцию ТипКомандыАдо: По умолчанию при создании экземпляра AdoDB.Command устанавливается тип adCmdUnknown . Пример: Существенного ускорения работы при указании типа команды я не заметил, но всегда указываю его, считая это правилом хорошего тона. Если используется хранимая процедура с параметрами, тогда необходимо добавить их в коллекцию Parameters объекта ADODB.Command: Параметры создаются с помощью функции CreateParameter объекта ADODB.Command CreateParameter (Name, Value_Type, Param_type, Param_Value) Где Name - имя параметра. Как оно указано в хранимой процедуре Value_Type - тип значения параметра Param_Type - тип параметра (Input или Output) Param_Value - собственно значение Для определения типа значения параметра и типа параметра я использую функции КонстантаАДО и ТипПараметраАДО соответственно, прописанные в глобальный модуль: ИначеЕсли АдоКонст = "adtinyint" Тогда Возврат 16; ИначеЕсли АдоКонст = "adsmallint" Тогда Возврат 2; ИначеЕсли АдоКонст = "adinteger" Тогда Возврат 3; ИначеЕсли АдоКонст = "adbigint" Тогда Возврат 20; ИначеЕсли АдоКонст = "adunsignedtinyint" Тогда Возврат   17; ИначеЕсли АдоКонст = "adunsignedsmallint" Тогда Возврат  18; ИначеЕсли АдоКонст = "adunsignedint" Тогда Возврат 19; ИначеЕсли АдоКонст = "adunsignedbigint" Тогда Возврат   21; ИначеЕсли АдоКонст = "adsingle" тогда Возврат 4; иначеесли АдоКонст = "addouble" тогда Возврат 5; иначеесли АдоКонст = "adcurrency" тогда Возврат 6; иначеесли АдоКонст = "addecimal" тогда Возврат 14; иначеесли АдоКонст = "adnumeric" тогда Возврат 131; иначеесли АдоКонст = "adboolean" тогда Возврат 11; иначеесли АдоКонст = "aderror" тогда Возврат 10; иначеесли АдоКонст = "aduserdefined" тогда Возврат 132; иначеесли АдоКонст = "advariant" тогда Возврат 12; иначеесли АдоКонст = "adidispatch" тогда Возврат 9; иначеесли АдоКонст = "adiunknown" тогда Возврат 13; иначеесли АдоКонст = "adguid" тогда Возврат 72; иначеесли АдоКонст = "addate" тогда Возврат 7; иначеесли АдоКонст = "addbdate" тогда Возврат 133; иначеесли АдоКонст = "addbtime" тогда Возврат 134; иначеесли АдоКонст = "addbtimestamp" тогда Возврат 135; иначеесли АдоКонст = "adbstr" тогда Возврат 8; иначеесли АдоКонст = "adchar" тогда Возврат 129; иначеесли АдоКонст = "advarchar" тогда Возврат 200; иначеесли АдоКонст = "adlongvarchar" тогда Возврат 201; иначеесли АдоКонст = "adwchar" тогда Возврат 130; иначеесли АдоКонст = "advarwchar" тогда Возврат 202; иначеесли АдоКонст = "adlongvarwchar" тогда Возврат 203; иначеесли АдоКонст = "adbinary" тогда Возврат 128; иначеесли АдоКонст = "advarbinary" тогда Возврат 204; иначеесли АдоКонст = "adlongvarbinary" тогда Возврат   205; иначе Возврат 0; КонецЕсли; КонецФункции Если АдоКонст = "adparamunknown" тогда Возврат 0;     иначеесли АдоКонст = "adparaminput"тогда Возврат 1; иначеесли АдоКонст = "adparamoutput"тогда Возврат 2; иначеесли АдоКонст = "adparaminputoutput"тогда Возврат  3; иначеесли АдоКонст = "adparamreturnvalue"тогда Возврат  4; КонецЕсли;                                           КонецФункции Пример: Для передачи параметров в хранимую процедуру необходимо описать все параметры в том  порядке и с теми типами, как они описаны в хранимой процедуре. Реально я использовал передачу и возврат параметров типа AdChar, AdWChar (строковые), AdDate (дата), AdInteger, AdTinyInt ( целочисленные).  Параметры типа Numeric приходилось передавать, конвертируя их в строки. 3. Получение и обработка результатов Результаты можно получать следующими путями: - набор данных возвращается функцией Execute объекта ADODB.Command - отдельные значения можно передавать из хранимой процедуры через параметры типа OUTPUT. Пример: - Нумерация параметров внутри коллекции Parameters начинается с 0 !!! - Подготовленные 1 раз параметры можно использовать повторно, присваивая им значение через свойство Value. Результирующий набор записей может обрабатываться в цикле с начала до конца, обращаясь к полям по их именам. В наборе записей не должны присутствовать поля типа Numeric - их необходимо преобразовывать в строковые непосредственно внутри SELECT или хранимой процедуры. Пример: Rs.MoveFirst;                 Пока Rs.EOF = 0 do После того, как набор записей уже не нужен, его нужно закрыть: Когда я использую методы ADO для получения набора записей , в один из выходных параметров процедуры я помещаю результат работы функции @@ROWCOUNT. Так я контролирую, возвращен пустой набор записей, или нет.
#10 by vde69
так где у тебя траблы вылазят?  или уже разобрался и помощь не нужна??
#11 by solaru
Вот тут! не работает!
#12 by vde69
чему равены: Cmd.CommandType Cmd.CommandText на момент выполнения
#13 by vde69
кроме того с параметрами надо не так, они возвращаються ОТДЕЛЬНО. а возвращаеться таблица (или результат последнего оператора XP)
#14 by vde69
вот так ХП вызываеться
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С