Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Неожиданное поведение. Как выполнить параметризированный SQL запрос?          
twilight_dream Подменю пользователя
сообщение 17.12.14, 14:49
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 265
Спасибо сказали: 4 раз
Рейтинг: 0

Как выполнить параметризированный запрос? Что делаю не так.

    СтрокаПодключения = "driver=SQL Server;Server="+имяСервера+";Database=Mayer_central;User Id="+Логин+";Password="+Пароль+";";
    Connection = СоздатьОбъект("ADODB.Connection");
    Connection.Open(СтрокаПодключения);
    Command = СоздатьОбъект("ADODB.Command");
    Command.ActiveConnection = Connection;
    Command.CommandType = 1;    
    Command.Prepared = 1;
    Command.NamedParameters = 1;
    Сообщить ("Удачно подключились");
    //Грузим товары
    //1. Очистка таблицы
    ТекстЗапроса = "DELETE FROM tblProducts WHERE Product_Id<>@two ";    
    Command.CommandText = ТекстЗапроса;                              
    Product_Id =  command.CreateParameter("@two", 5, 1, , 0);
    command.Parameters.Append(Product_Id);
    command.Parameters.Item(0).Value  = 2;
    Command.Execute();

Выдается ошибка:
Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC SQL Server Driver][SQL Server]Необходимо объявить скалярную переменную "@two".

судя по всему в данном случае дривер не понимает, что @two - это параметр. Попытки использовать вариации ":two" и "%two%" не привели к успеху.


Signature

alex040269 Подменю пользователя
сообщение 17.12.14, 14:57
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

может ?two


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

twilight_dream Подменю пользователя
сообщение 17.12.14, 15:19
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 265
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(alex040269 @ 17.12.14, 14:57) *
может ?two

Не ... в том то и удивительно, что всё синтаксически правильно.


Signature

alex040269 Подменю пользователя
сообщение 17.12.14, 15:54
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(twilight_dream @ 17.12.14, 14:49) *
Product_Id = command.CreateParameter("@two", 5, 1, , 0);

тогда
Product_Id =  command.CreateParameter("two", 5, 1, , 0);


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

logist Подменю пользователя
сообщение 17.12.14, 15:56
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вставляйте параметр явным текстом в запрос.

upd
или так
ТекстЗапроса = "DELETE FROM tblProducts WHERE Product_Id<> (@two)";    




Сообщение отредактировал logist - 17.12.14, 15:58


Signature
Личные бесплатные консультации не даю, для этого есть форум!

twilight_dream Подменю пользователя
сообщение 17.12.14, 16:33
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 265
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(logist @ 17.12.14, 15:56) *
Вставляйте параметр явным текстом в запрос.

upd
или так
ТекстЗапроса = "DELETE FROM tblProducts WHERE Product_Id<> (@two)";    


Но по сути сложность запроса здесь не имеет значения. Если сработает этот, будет работать и тот. Надо пока с этим случаем разобраться. Почему не работает. Кстати, скобки ничего не дают вэтом плане.

Но пока мог бы и явно подставлять, только неясно что делать с наименованиями, в которых могут попадаться разные там спецсимволы и одинарные кавычки.

то есть на самом деле есть более сложные запросы, где рациональней использовать именно параметры.


Signature

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 27.04.24, 8:19
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!