Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 22:03
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Передать параметры в функцию SQL из 1с  (Прочитано 2452 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн chernike

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-02-06
  • Сайт: 
  • Профессия: Программист 1С
Доброго времени суток.
На sql есть функция, которая возвращает таблицу из двух колонок.
в функции 4 параметра.
Запускал ее через view со следующим кодом:
SELECT     *
FROM         dbo.RoundTime(@p1, @p2, @p3, @p4)
p1 - строка
p2,p3,p4 - число
Открывалась форма,в которой я задавал параметры и все работало.
в 1с реализовал следующее:
Command = Новый COMОбъект("ADODB.Command");   
RecordSet = Новый COMОбъект("ADODB.RecordSet");
Command.ActiveConnection =  ADOСоединение;
Param1 = Command.CreateParameter("@p1", 200, 1,100, параметр1;   
Command.Parameters.Append(Param1);
Param2 = Command.CreateParameter("@p2", 3, 1, 50, параметр1);
Command.Parameters.Append(Param2);   
Param3 = Command.CreateParameter("@p3", 3, 1, 50, параметр2);
Command.Parameters.Append(Param3);
Param4 = Command.CreateParameter("@p4", 3, 1, 50, параметр3);
Command.Parameters.Append(Param4);
Command.CommandText = " select * from dbo.RoundTime('"+ Param1 +"',"+param2+"','"+Param3 + "','"+ Param4+"')";
 RecordSet = Command.Execute();
При execute вылетает ошибка:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Ошибка преобразования значения varchar "COMОбъект" в тип данных int.
Не могу понять как правильно передать параметры в функцию.


Онлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
А зачем вы вставляете строковые переменные: ('"+ Param1 +"',"+param2+"','"+Param3 + "','"+ Param4+"')"

Если вы до этого все параметры уже задали?

Оффлайн chernike

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-02-06
  • Сайт: 
  • Профессия: Программист 1С
Изначально я писал просто Command.CommandText = " select * from dbo.RoundTime
Программа выдало сообщение что функция не нашла параметры
потом стал писать Command.CommandText = " select * from dbo.RoundTime(Param1,Param2,Param3,Param4) - не может перевести из Com-объекта в int
Command.CommandText = " select * from dbo.RoundTime(@p1,@p2,@p3,@p4)  - скалярные переменные,функция не выполняется

Онлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Правильно вот это: Command.CommandText = " select * from dbo.RoundTime(@p1,@p2,@p3,@p4)

А почему там скалярные переменные нельзя нужно разбираться.

Оффлайн chernike

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-02-06
  • Сайт: 
  • Профессия: Программист 1С
Command.CommandText = " select * from dbo.RoundTime(@p1,@p2,@p3,@p4)";
RecordSet = Command.Execute();
При  execute выдало сообщение Необходимо объявить скалярную переменную "@p1"


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
179 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 304
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal