v7: ADODB.Command - ошибка при работе с параметром #731119


#0 by pincet
Microsoft OLE DB Provider for SQL Server: Incorrect syntax near the keyword 'DEFAULT' в где править?
#1 by HIDDEN MESSAGE
#2 by pincet
самое печальное в том, что из vba, к примеру, все отрабатывает
#3 by spectre1978
А что за база? На Access я бы, к примеру, написал AND MA.MATKL=:MATKL
#4 by spectre1978
и далее CreateParameter("matkl", ...
#5 by b_ru
Вроде в тексте ошибки все ясно написано, а тс даже текст запроса зажал. Я вот не помню, чтобы в oracle sql ключевое слово DEFAULT можно было в DML использовать. З.Ы. Базис то уши не надерет за прямую работу с таблицами БД? Или это перевалочная база какая-то?
#6 by pincet
не надерет, там схема только чтение В тексте-то написано, но никаких DEFAULT я в T-SQL не знаю Сервер - сиквел. А запрос - мне не жалко , вот |SELECT MAT                 |(             |
#7 by pincet
AND MA.MATKL=@matkl читать AND MA.MATKL=?
#8 by Jaap Vduul
'default' oledb провайдер подставляет в качестве значения при создании параметра, что-то типа такого: set @p1=default Потом default заменяется на значение параметра. Т.е. похоже в данном случае ado не может корректно распарсить текст запроса и ожидает значение более чем для одного параметра. Можно попробовать добавить ещё одно объявление параметра (command.Parameters.Append(command.CreateParameter(...), т.е. что-то типа заглушки.
#9 by pincet
Я думаю не ADO, а 1с++ глючит где-то. Добавить еще один параметр - не взлетает тоже, ошибка Microsoft OLE DB Provider for SQL Server: Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена. Что, в принципе, предсказуемо Неужели будлокодить придется и конструировать текст запроса при помощи + ?
#10 by Ёпрст
>>>а 1с++ глючит где-то. 1с++ тут то вообще коим боком ????? И еще, если есть 1с++, нахрена весь этот нелепый код  с АДО ???
#11 by Jaap Vduul
+1 Перед command.Execute проверь, что у тебя в коллекции command.Parameters находится. Ну и я бы первым делом в профайлере посмотрел, что на сервер из 1цэ отправляется.
#12 by pincet
что такого нелепого в ADO?
#13 by pincet
на сервер ничего не уходит (в профайлере трассы с моим запросом нет)
#14 by pincet
в Parameters мой параметр
#15 by pincet
par1
#16 by Jaap Vduul
Имелось в виду, что непонятно, почему используется ADO, если в конфигурации уже используется 1цэ++. >>на сервер ничего не уходит Надо нормально настроить профайлер - либо фильтры стоят из-за которых не видно активности oledb, либо мониторятся не те события (используйте, например шаблон TSQL_Replay). , >>в Parameters мой параметр Это и так понятно. Но ведь там, скорее всего, ещё что-то нежелательное. command.Parameters.count?
#17 by pincet
message(command.Parameters.count) 1
#18 by pincet
По незнанию думалось, что ADODB.Connection требует 1с++
#19 by Jaap Vduul
command.Parameters.value? Ещё можно попробовать не создавать явно параметр, а вместо этого использовать command.Parameters.refresh и затем установить значение параметра: command.Parameters.value = ...
#20 by pincet
на refresh Microsoft OLE DB Provider for SQL Server: Ошибка синтаксиса или нарушение прав доступа
#21 by Jaap Vduul
Точно, oledb не может распарсить текст запроса, когда токены параметров находятся внутри вложенного запроса. Переписывай на использование временной таблицы или хранимки.
#22 by pincet
Excel и 1цэ пользуют один (SQLOLEDB) драйвер. так вот Excel все спокойно хавает ЧЯДНТ?
#23 by pincet
up
#24 by pincet
шишкин лес. Даже Provider=SQLNCLI10 ругается Microsoft SQL Server Native Client 10.0: Incorrect syntax near the keyword 'DEFAULT' ппц какой-то
#25 by pincet
включил только события oledb - тишина на сервере
#26 by pincet
только есть подозрение, что это монитор вызовов со стороны сервера, а не к нему
#27 by Fragster
#28 by Fragster
...
#29 by pincet
:D спасибо, все гораздо проще (впрочем, как обычно) command.Execute; и все.
#30 by Ёпрст
Строка соединения какая хоть ?
#31 by Ёпрст
command.Parameters.value?
#32 by Ёпрст
и еще, на всякий..в качестве бреда пита:
#33 by pincet
пичалька только в execute - вся благородная публика (со мной во главе) не заметила про execute(,,). Вот и вся любовь
#34 by pincet
1с++ видимо рациональней пользовать - с ADO много лисапедов рисовать придется
#35 by Ёпрст
с 1cpp , просто проще и удобнее
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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