Вызов хранимых процедур

Доброго времени суток!
У меня следующий вопрос, есть БД, находиться на другом сервере, в ней есть хранимая процедура, для запуска в которую необходимо передавать входные параметры и отобразить выборку которую она вернет. Редактирование данных выборки не требуется. Можно ли это как-то реализовать в Террасофте.

Нравится

15 комментариев

Может через ADO. Есть соответствующий сервис. Или написать хранимку на сервере TSCRM, вызывать ее, а она уже пусть лезет на второй сервер.

Можно.
1. Почитать про Linked Server и DTS (sql.ru)
2. Реализовать функционал.
3. Запуск делать из Террасофта(ExecuteCustomSQL, например).

Ссылки, которые помогут.
http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=186686
http://www.sql.ru/forum/actualsearch.aspx?search=openquery&sin=0&a=&ma=…

Реализовывать такие вещи лучше на уровне СУБД. В зависимости от используемой БД решение может быть различным. Советую заглянуть на SQL.ru

На сколько я поняла, то сохранять полученные от хранимки данные никуда не нужно, только отобразить. Мне кажется, лучше с ADODataset использовать потому, что его сразу можно использовать в окне с гридом для отображения. А если через linked server на стороне нашего сервера вызывать ее, то придется еще думать, куда результат потом класть.

"Раловец Ольга" написал:А если через linked server на стороне нашего сервера вызывать ее, то придется еще думать, куда результат потом класть.

С linked server так же. Просто SQl текст для ADODataset будет вида exec [RemoteServer].[RemoteDB].[dbo].[MyStoredProc] ...
Если без него, придется прописывать ConnectionString для удалленого сервера...

Разница в том, что при использовании ADODataseta результаты сразу из него можно отображать в окне. Если Вы просто выполните exec [RemoteServer].[RemoteDB].[dbo].[MyStoredProc] ..., то нужно как-то их будет еще донести до пользователя, пользователь же не в QueryAnalyzere работает.

"Раловец Ольга" написал:то нужно как-то их будет еще донести до пользователя

эм... у ADODataset есть свойство Текс SQL... туда пишем валидный вызов хп(в нашем случае - вызов с удаленного сервера), определяем поля для результата выполнения того чего мы написали и вяжем на грид...
Я как раз говорил об использовании ADODataset со стороны Террасофта + Linked Server со стороны СУБД.

"Доленко Юрий" написал:Я как раз говорил об использовании ADODataset со стороны Террасофта

Ну и я о том же :) А насчет ConnectionString, думаю, не принципиально.

Вызвать то как понятно..а как в нее параметры передать при вызове? чтоб пользователь их мог ввести?
ЗЫ
я просто новичек..

Не устаю давать ссылку на этот пост :smile:
http://community.terrasoft.ua/blogs/2171

"Кирилл Игоревич" написал:Вызвать то как понятно..а как в нее параметры передать при вызове? чтоб пользователь их мог ввести?

Пусть пользователь вводит в каком-нибудь окошке, а передавать можно перед открытием датасета. В сервисе ADODataset можно создать несколько параметров, в тексте SQL обращаться к ним :ParamName, а заполнять значения так:

ADODataset.Parameters.ItemsByName('ParamName').Value = ParamValue;

На самом деле задача проста, есть процедуры которые возвращают датасеты, это отчеты...мне требуется понять получиться ли отобразить эти отчеты в террасофте с использованием репортера встроенного в Terasoft. А с самим терасофтом я не сильно знаком поэтому и спрашиваю всякие простые вещи))

"Глова Сергей" написал:Не устаю давать ссылку на этот пост

там как-то много кода )
Вот Ольга предложила, на мой взгляд, самый правильный вариант решения.
"Кирилл Игоревич" написал:репортера встроенного в Terasoft.

Лично я бы, FastReports не касался бы и 10-ти метровой палкой. Там очень плохой експорт в Word/Excel.
Получайте выборки в ADODataset и выкладывайте в ворд или ексель. Хотя если нужно просто отправить на печать - то и Fast сгодится.

"Доленко Юрий" написал:Вот Ольга предложила, на мой взгляд, самый правильный вариант решения.

А я и не спорю, что с ADO в данном случае будет проще.:smile: Просто о ExecuteCustomSQL знать надо обязательно.

Именно этот вариант я и использовал))))
Спасибо большое Ольге...и все кто помогал.

Показать все комментарии